Part1では,プログラムをかたち作る要素について,「段取り」のメタファーを用いてプログラミング言語の種類にできるだけ左右されない基礎を説明します。

 まず,私たちが作ろうとしているプログラムの全体像を,ざっくりとつかみましょう。今までコンピュータを使っているだけだった人が,コンピュータ上で動くプログラムを作ろうとすると,「プログラムって何?」「どの部分を作ればいいの?」と戸惑うと思います。

 そこでちょっと視点を変え,プログラムとコンピュータを切り離して考えてみましょう。私たちは毎日,いろいろな物事をうまく進めようと,アタマの中で「段取り」を組み立てています。そうした段取りを,アタマの中からうまく取り出し,コンピュータに組み込める形に整えたもの。それがプログラムである,と考えてみるのです。

 うまく段取りすれば物事が効率よく進みますが,段取りがマズいと無駄な労力がかかります。プログラムも同じこと。積もる用事をいかに片付けていくか,段取り上手への道は,プログラム上手への道と言えそうです。

アタマの中にある段取りをうまく取り出すために図を描く

 では,プログラム=段取りがどんなものでできているか,段取りを形にする具体的な練習を交えながら,少しずつ明らかにしていきましょう。とはいえ,アタマに浮かんだことをそのまま段取りとして書き起こせるようになるには,少し慣れが必要です。そこで,いきなり段取りを書くのではなく,アタマの中を整理するつもりで図に表してみます。

 プログラム開発に早くなじむためにも,ここではJIS規格で定められている「フローチャート」を使います。「flow」(流れ)+「chart」(図)という言葉のままに「流れ図」とも呼ばれます。記号はそれぞれに意味を持っており,適切な記号を並べて矢印で結ぶことで,プログラムにおける処理の流れ具合=段取りの進み具合を表します。記号はたくさんありますが,よく使う記号は限られてきます。知っておきたい記号を図1にまとめておきました。

図1●知っておきたいフローチャートの記号
図1●知っておきたいフローチャートの記号
[画像のクリックで拡大表示]

 次に,皆さんに考えていただくテーマを紹介します。ここでは「天気予報に合わせて適切な持ち物を決める手助けをする段取り」を考えてみましょう。こちらも,少しでも現場の雰囲気に近づけるため「天気予報連動型携帯品決定支援システム」とやや大げさな名前を付けてみました。この段取りをアタマの中で考えながら,フローチャートを作り,プログラムの形に仕立てながら,プログラムというものの作りや要素を説明していきます。

 図2は,図1で紹介した記号を使いながら,天気予報連動型携帯品決定支援システムの流れを表したフローチャートです。

図2●この記事でサンプルとして取り上げる「天気予報連動型携帯品決定支援システム」のフローチャート。「逐次実行」「条件分岐」「ループ」の三つの基本パターンを含んでいる
図2●この記事でサンプルとして取り上げる「天気予報連動型携帯品決定支援システム」のフローチャート。「逐次実行」「条件分岐」「ループ」の三つの基本パターンを含んでいる

 図2を見ると,段取りの主役になる記号は「処理」を示す長方形の記号であるとわかるでしょう。慣れないうちは,あまり難しいことを考えなくてもよいので,思いつくままに処理の長方形を並べてみます。図2の場合は

(1)雨が降りそうだから傘を持参する

(2)長傘を持参する

(3)雨が降りそうだからレインコートを着る

(4)雨が降りそうだから長靴をはく

の,四つの処理の長方形をひとまず描いて,段取りの基本的な部分を作り始めるのです。これは実際のプログラミングでも同じで,最初はあまり考え込まず,とにかく何かの形を作り始めることは大切なコツの一つです。

 ひとまず描き始めると,それが呼び水となり,おそらく,折りたたみ傘やレインコートや長靴に考えがおよんだりするでしょう。そうしたら図を描き足します。この繰り返しによって,アタマの中の段取りは,図としてだんだんクッキリと表れてきます。

 その意味では,図2のフローチャートもまだまだ開発途上。レインコートを着る条件,長靴をはく条件など,描き足せる図はもっとありそうです。実際のプログラムでも同じで,どんなに凄腕のプログラマでも,「もう完璧」という状態には至りません。その都度,最善と思われる策を付け足しながら長い目で育てていく,プログラムとは,そんなものです。