########################################### # プログラム作成のお役に立てば・・・  # # upadte=2000.11.22 # ########################################### 初めに、ここの内容は私がプログラムを作るときのポイントをまとめたものです。 よって、自己流のかたまりですからお役に立つかわかりません。 これから、プログラムを作ってみようという人には、参考になるかもしれません。 (注)思いついた順で書いてあります。 私のプログラムのルーツは、NECのSTEPS(ステップス)という階層型プログラムの 雛型集を参考にしたのが始まりです。 主にレポート作成の雛型でしたが、プログラムを始めたばかりの私にとっては、一生を左右する ものでした。つまり誰でも始めに身につけたロジック(考え方)は、一生変わらないくらい 影響します。ですから 自己流、先輩の指導により、いろいろなタイプに分れていきます。 さて、この雛型の良いところは、全体の流れは作られていて、必要な箇所に追加していくと 全体ができあがるというものです。 さて、階層構造について簡単(適当)に説明しましょう。 まず、例として 商品データをファイルから読み、表示するプログラムを階層化します レベル1 ・・・ ファイルが終わるまで、レベル2を繰り返します レベル2 ・・・ 合計が必要なら、キーをセットし、その値が変わるまで、レベル3を          繰り返します。もしキーの値が変わったら合計を表示します。 レベル3 ・・・ 実際に表示させるルーチンです。文字の色や大きさを決めたり、金額の計算          をしたりします。1件の処理が終わったら、次のデータをファイルから読み出し          ます。ここでデータが終了した場合は、レベル2に戻り、レベル2からレベル1に          戻り、処理が完了します。 このレベル1.2.3が基本です。 ここのポイント 1.複雑そうな流れを大きなくくりで、区切ると簡単になる 2.もし、合計だけでなく、大計、中計、小計が必要な場合でも、プログラムをほとんど変更すること   なく、レベル4.5.6と追加するだけで良い 3.似た処理がある場合、他のプログラムから、くくりの単位で必要なものを集めて簡単に作ることが   できる。 これでわかっていただけるほど、説明はうまくありませんが、複雑に見える処理をいかに、整理して 各処理単位にプログラミングし、それらをいかに組み合わせるかが腕のみせどころでしょうか。 さて、話は変わって・・・ ●とにかく、コメント(注意書き)はいっぱい付ける事  自分しか使わない人や記憶の良い人も、やはり書いた方がいいと思います。  特に、if文やフラグを使って処理の流れを変えるときは、その処理の目的を文章にして説明します ●フラグ(旗)の利用  フラグという機能はありませんが、処理の流れを変える場合に、変数を使って条件を変える  ことがよくあります。この変数をフラグと呼ぶようです。いわゆる旗にみたて、赤上げたら  **で、白上げたら**です、というイメージです。  例えば、男女別の処理があった場合、$seibetuに男なら1、女なら2を入れます  そうすることにより、男女別の処理は、if ($seibetu == 1)で分けられます。  ※この例は、ちょっとニュアンスが違いますが、変数を使って流れを変えるイメージはこんな   感じです。 ●修正する場合は、その行を削除せずコメント#にしまょう  修正前の処理を削除するのは、1番最後にします。それまではコメントにして、様子を見ます。  たとえおかしな処理であっても、それを作っていたときの自分は、それなりに考え工夫していた  はずです。大切な事は、コメントにして残す事により、自分の考え方がどう間違っていたのかを  知る事です。 ●変数の書き方 ・できるだけ統一した書き方をすること。  例えば 商品b $shohinno や $syohinnoとするとミスしやすいので  自分の好みで統一する  同様に 合計を$goukei や $gokei もそうです。 ・アイIとエルl、ゼロ0とオーOは見分けがつかないので、気をつける  配列の添字も同じです、コボルでは索引(INDEX)という意味で、iがよく使われるため  ここでも、$iとしています。たまに、この添字を別のところで使ったため  変数の内容が入れ替わり、処理の動きがおかしくなるミスをすることがありますが  このパターンのバグは、気が付くまでけっこう悩みますから、添字は統一し、それ以外では  使用しないこと。    ●自分なりに理解したプログラムを大切にすること  いくら人のCGIをコピーしても、その処理を理解しなければ、意味がありません  perlは個性のかたまりになります、少し面倒でも自分流に作りなおした方が  あとのためにもいいです。 ●自分なりに理解した命令語の使い方やサブルーチンはどんどんサンプル集にためましょう  これは私の『コーディング上の注意事項』のことですが、JPERL等を使って正しく実行  できるパターンができたら、事例集のような感じで集めます。するとこれがあなたの宝物に  なることでしょう(たぶん)  ちなみに、タイトルが『コーディング上の注意事項』とあるように、自分に対して間違えやすい  ものを注意書きとして、書き足して行きながら作ったものです。   また、プログラムはパズルみたいなものです、あれ?これはどこかで作ったな、とか 前に、  これで間違えて悩んだなとかって思いながら、なかなかうまくいかず、いらいらすることが  あります、そんなときにこのサンプル集があれば、なんだ! こんなことだったんだ、って  謎がとけるときがたくさんあります。 ●時には、難しいものに挑戦してみよう  それが完成した場合は、そのプログラムからいろいろなものを作ることができます。  階段を上るように、1歩1歩前進しましょう。 ●失敗は成功の近道  プログラムの世界でも失敗やトラブルがレベルアップの近道です。1つのCGIが完成したら  それをもとに、バージョンアップにトライしてください。その時の注意として、変更は少しずつ  行うこと。そしてある程度動くようになったら、そのスクリプトをコピーしておきます。  変更を1度に、いろいろな箇所に行って失敗すると、どこが原因かわからなくなることが  あります。また そうなっても元に戻せるようにコピーをとる習慣をつけてください。 ●サブルーチンについて  一連の処理の中で、共通化できるものを整理するとサブルーチンとして利用できます。  サブルーチン化するメリットは、  1.修正が発生した場合、その中だけを変更すれば良いこと  2.処理を切り離した形なので、どんな処理をしているかわかりやすい  3.他のプログラムに応用しやすい  4.プログラム全体がシンプルになり、保守しやすいなどです。  さて、通常サブルーチンとは、ファイルを読むとか、計算であるとかのこじんまりとした  処理のことですが、ここでは1つの処理単位もサブルーチン化しています。  (これはコボル等の他のプログラムと同じです)  では、サブルーチンとして単独で切り離すポイントというと・・・     1.当然ですが、複数の箇所で、使用されること。 つまり その数が多いほど    効果があります。  2.サブルーチンの中が、シンプルになること。例えば男女別の処理があり    それを共通化しようとして、いろんな箇所で性別をIFで処理を変えるものならば    それは、男用と女用のサブルーチンに分けた方がいい場合があります。この場合は共通化を    図ると言うよりは、処理を分けて、プログラム全体をすっきりさせる効果があります。  3.プログラムが大きくなりそうなときは、なるべく処理をまとめ、ブロック化(モジュール化    ・・・ 積み木のようなイメージ)して、全体をサブルーチンを組み合わせたものにします。    これが自分なりのパターンとして作れるようになると、1つのプログラムをコピー    して、サブルーチンを入れかえるだけで、別のものを作れるようになります。  サブルーチンの注意としては、  1.共通化のため、1つの修正がすべてに反映されることになり、このサブルーチンがどこで    使用されているか把握していないと、思わぬところでプログラムの動きがおかしくなることがあります。  2.細かなサブルーチンばかり作ると、一連の処理が見えなくなります、つまりプログラムを追っていくと    あっちいったり、こっちいったりして、そのうちに変数がおかしくなったり、なにをやっているのか    わからなくなる場合があります。     ●私流プログラム作成手順  全体的な流れを先に作ります、このとき、できるだけシンプルに作ります。  例えば、画面表示なら 項目は1つか2つにします。それを使ってファイルの読み書き  画面へのセット、そしてページ送りを1ステップずつ動作確認をしながら、全体を組み立てます。  このポイントは  1.最初のステップからすべてのことを作り、時間をかけることはありません。    大切な事は、プログラムのロジック(流れ)を作ることです。    たとえ、1つしか表示しなくても表示処理がうまくいけば、項目を増やしたり、フォントや    デザインを直すのは簡単です。最初に骨格を作り、肉をつけるのはあとからにします。  2.1ステップずつ動作を確認しながら、プログラムと実際の動作を頭の中に入れます。    慣れてくると、プログラムを作りながら、机上や頭の中で実行させ、次ステップに進む    ことができます。 ●他人のプログラムはわからない?!  プログラム作成に標準パターンはありません、十人十色というやつです・・・だからプログラム  はおもしろいです。だって決まりきった型があったならば、一生懸命作っても、『なんだ、おかしな  作り方だな、これじゃ使えないよ』となるかもしれません。  たしかに昔は、メモリが1Mもなく処理スピードも遅いですから、できるだけ効率の良いプログラミング  を追い求めました。でも今は、動けばOKです。  さて、プログラムは個性(性格)がよくでます、緻密に作る人や私のように、それなりに作る人  デザインに凝る人などなどです。   とりあえず、ここまで。