プログラムの組み立て方


 プログラムの組み立て方は多くの雑誌や本では触れていない部分です。大抵は簡単なサンプルプログラムから入り、次第に大きなプログラムを作ると言った手順を踏みます。
 それはそれで1つの良い方法だと思います。細かい部分から入り次第に大きな物を作り上げていく、通常ボトムアップといわれる手法です。この方法だと確実に動作する下のプログラム(基幹部分)を作っていき、次第に大きなプログラムにしていくので、確実に動作するプログラムを作成する事ができます。が、この方法には困った部分もあり、次第に管理するプログラムの部品(関数、ルーチン、変数等)が増えていきます。増えた結果、どこに何があるのかおおよその検討はつくが、はてさて?といった状態になってしまう場合があります。このFuture BASICが動作しているMacなどは、その最たる好例(悪例)とも言えます。
 このボトムアップとは全く逆の方法がトップダウン方式です。これは、「これを作る」と決めておき必要な部品を決め作成していくものです。この方法では無駄な関数やルーチンを作成する事がないのでプログラムは非常にすっきりしたものになります。
 どちらの方法が良いか?
 はっきりいって人それぞれですが、小物を作る場合はボトムアップ方式で十分です。逆に大きなプログラムやバージョンアップが必要と思われるツールやユーティリティなどは、トップダウンの方がいいと思います。ボトムアップ方式から入ると、大きなプログラムを作れない、つまり全体設計がきちんと出来ないという癖がついてしまいます。
 この全体的な設計は経験が多い人は、特に気にしなくても頭の中でわかってしまうのでいいのですが、そうでない場合、なぜそうなるのか、なぜ必要なのかが、なかなかわからないという感じになります。
 これは、Future BASICで「命令だけをひたすら覚える」という作業を、努力をしても、なかなかまとまったプログラムが組めないのと似ています。似たような例としては、パソコンを購入した初心者が「ブラインドタッチができないと駄目だ」というのと似ています。別にブラインドタッチができなくてもプログラムは組めますし、ワープロもできます。

 プログラムを作る場合、私は次のような手順で考えます。

  1. プログラムのイメージ
  2. プログラムに必要な関数(部品)
  3. 最低限必要な関数の作成
  4. 機能の追加
  5. 徐々に関数の無駄を省く

 プログラムのイメージは、「こういうものにしよう」というもので、紙に書いておくと結構わかりやすくなります。
 次にプログラムに必要な関数、つまりトップダウン方式で最低限必要な関数を決め、どのような動作をすればいいか決めます。変数名もここで最低限のものは決めておきます。
 次に重要な事は最低限確実に動作するプログラムを作成する事です。肝心な部分が動作しなければ、他を作ってもどうにもなりません。とにかく、確実に動作させるものを作り、先に進んで駄目だった場合は、ここに戻れるように安全策を取っておきます。ですから、動いたらここで必ずバックアップを取っておきます。
 最低限動いてしまえば、あとは機能、関数を追加していきます。ここはトップダウンではなくボトムアップ方式といった感じです。どんどん機能を盛り込んでいきます。
 最後に不要な部分を削っていきます。プログラムの無駄な関数や変数を消していくのです。もし、ここで重要な部分を消してしまっても、元に戻れるので安心して削ることが出来ます。

 プログラムを作る場合、命令だけを覚えても仕方がありません。マニュアル、特にリファレンスマニュアルは逆引きで使用した方がいいでしょう。つまり、
「こんな命令はないのかな?」
といった具合に使うのです。手頃な命令があれば、それを使用すればいいでしょうし、なければ仕方がないので別の方法で作成するしかありません。どうしても駄目な場合は、あきらめてさっさと寝てしまう(笑)のも1つの方法です。できるか、できないか、可能か、不可能かは最初でわかる場合もありますし、途中でわかる場合もあります。そこらへんは経験でだいたい分かるようになります。

 プログラムを作る場合は全体を見渡してから作る方が、後々のためにはいいと思います。