第15回 いつも心にカーソルを「5.大きい流れと小さい流れ」

15−5 大きい流れと小さい流れ

分岐と繰り返し、この2種類の方法を知っていれば、後は上から下へのまっすぐな処理が大半ですので、ほとんどの流れは制御できるようになります。
もちろん、単純な使い方だけではなく、色々組み合わせる「工夫」が必要ですが、それなりに流れの理解は問題ないと思います。
しかし、一方で、それだけではプログラムを作れるようになる訳でもありません。
それは、このような流れを制御する仕組み以外に、逆らうことの出来ない『大きな流れ』が存在するからです。

言い方がちょっと変ですが、昔風のBASICならば、このような制御コマンドだけを組み合わせてプログラムを作ることが可能でした。
何故なら、そこには「プログラムは上から下に順番に実行されます」という簡単なルールしか存在しなかったからです。そのため、プログラマがイメージした手順と、プログラムのコードを書くが手順が、ほぼそのまま対応できていたので、制御コマンドだけで十分だったと思われます。
しかし、今風のBASIC(これも言い方が変ですが)では、そのOSに『イベント』という概念が取り入れられたため、考え方が多少違ってきました。
つまり、画面をペンでタップしたり、ボタンを押したり、と何かの動きに反応してプログラムが実行される仕組み(イベント・ドリブン)になってきたので、BASICもそういう環境に従わざるを得なくなりました。
そのため、ちょっとプログラムの作り方が変わり、制御コマンドで流れを作るだけではなく、大きな流れを意識しないとプログラムが作れなくなってしまったのです。

ところで、大きな流れとは何でしょう?
NS Basicに限って言えば、次のものが大きな流れになります。
  • Project_Startup()
  • Form_Before()
  • Form_After()
  • Project_Termination()
  • Form_Event()
  • 各種オブジェクトのイベント
これらは、NS Basicの『お約束』のようなもので、プログラムを起動した時、最初にProject_Startup()が実行されたり、画面の描画が行われた後にForm_After()が実行される、という流れとして表されます。
プログラマが、いくらプログラムの流れをIfやDo〜Loopで制御できても、プログラムが起動した時に、必ず最初にStartup()が実行されるというルールには逆らうことが出来ませんし、それを知らなければ、まともに動作するプログラムが作れる筈もありません。

プログラムの実行順を大きな流れを中心にまとめてみると、おおよそ次のようになります。
このように約束された各々の大きな流れの中で、プログラマがBASICコマンドを駆使しながら小さな流れを制御する、これこそがプログラムを組み立てることだと理解すれば、大きな流れと小さな流れの役割が理解できるのではないでしょうか。

初心者や入門者の頃は、漠然と「どうやって書くの?」と悩んだりする訳ですが、色々と試しているうちに、すぐに新たな悩みが加わります。すなわち、「どこに書くの?」という悩みです。
この2つの悩み、前者が具体的なコマンドに不慣れなために生じる小さい流れについての悩みで、後者がどうやって組み込むんだろうという大きな流れについての悩みであることは明らかですが、最初はこれが混在してしまい、何をどうしたいのか困ってしまうわけです。

では、この2つの流れを考えながら、漠然とした「やりたいこと」を読み解いてみましょう。

●『プログラムを起動した時に、データベースファイルがなければ作っておきたい』

例題が簡単すぎますね。
データベースファイルの有無を確認する小さな流れを、プログラムの起動時に組み込めばよい訳ですから、どこに何を書くか、大体のことはわかります。
  • 大きな流れ:プログラム起動時=Startup()
  • 小さな流れ:データベースの有無をチェック
  • 小さな流れ:データベースが無ければ新たに作る
何となく、やるべきことと書くべき場所がわかるでしょう?
さて、もう少し難しいものにチャレンジしてみましょう。

●『ゲームのハイスコアを記録しておきたい』

こちらは先ほどよりも、更に曖昧な内容ですが、ハイスコアを保存するような小さな流れを、ゲームが終わる時に組み込めばよい訳です。
  • 大きな流れ:プログラム終了時=Termination()
  • 小さな流れ:ハイスコアを保存
ただし、その「終わる時」が、プログラムが終わった時か、1ゲームが終わった時か、どちらとするかは作り手が判断しなければなりませんが、裏を返せば、どちらに書いても問題ない、という場合だってあり得ます。
つまり、プログラミングが難しいのは、そういう正解が決まらないケースが多々あるからです。
これらを解決するためには、実はプログラマが決めなければならない訳ですが、初心者のうちは、どこに書くのが「良い」のか悩んでしまって、なかなか先に進まない訳です。
でも、悩んでいるうちに、やってみれば良いんです。何せ気楽な日曜プログラマですからね。特に、日曜プログラマは自分の好き勝手に表現できる監督であることを忘れないで下さい。あなたが決めなければ、先に進まないことが多いですからね。

さて、このように、プログラムを書く上で、どうしても逆らえない大きな流れは無視できません。
それは、言語や使用するOSによって、大きな流れの種類や方法が異なるからです。
しかし、自分の疑問を大きな流れと小さな流れに分解して考えてみることで、考えがまとまったり、また、人に相談するにしても、要点を伝えやすくなると思いますので、常に心がけるようにして下さい。

前へ     目次へ     次へ

第15回 いつも心にカーソルを「5.大きい流れと小さい流れ」