ソフトウェア設計論
(1)

【分析】食事マナー


── 子供はなぜカレーライスが好きか

 ソフトウェアの設計法には「トップダウン設計」という手法がある。トップダウン設計では、まず全体をとらえてそれを次第に分解していくことによって段階的に詳細化していくという方法をとる。この手法が役立つのは、特にソフトウェア設計の場合に限られたものではなく、たとえばマネジメントの分野でもトップダウンに物を見ることが求められるし、実生活の上でも非常に役に立つ重要な考え方、あるいは物の見方であると言えよう。しかし、これは私が常々主張していることなのだが、“トップダウンに物を見る”という能力は人間が生来持っている資質ではないように思えてならないのである。経験を積み重ねることによって後天的に次第に身に付けていく性質のものではないかと思う。

 たとえば子供が食事をしている様子を観察してみるがよい。食卓にご飯と味噌汁、それに2〜3品のおかずがあるとしよう(ここでは和食である)。子供は食べたいものから手を付ける。どこから箸を付けるかは食事マナーとしては最も重要な点であるが、まあそれは相手が子供だからよいことにしよう。子供にとって一番難しいのは、全体を見ながら均等に少しずつおかずを食べていくことであろう。おかずがなくなるとほぼ同時に、ご飯も味噌汁もなくなるような食べ方をするのが理想である。しかし子供にはこれができない。一つのものを食べ始めるとそればかりを食べてしまう。俗に言う「ばっかり食べ」というやつである。最近では大人でもばっかり食べをしているのをときどき見掛けることがあるが、これも子供時代にトップダウンの食事マナーを身に付けられなかった名残りであろう。

 一般に子供はカレーライスが大好きである。これは日本のカレーの味が日本人向きになっているためであろうと推測する。あの味は“カレー”であって決して“カリー”ではない。最近日本でも本場のインドカレーを食べさせるレストランが増えてきた。あれが本物のカリーと呼べる味であろうと思う。

 しかし子供がカレーライスを好む本当の理由は、日本のカレーライスが一皿に盛られた一品料理だからである。あれこれと意識を振り向けなければならない対象が複数個存在せず、一つのものに意識を集中すればすむから子供はカレーライスが好きなのである。子供にとっては、全体を見渡しながらトップダウンに均等に物ごとを進めていくのは苦手なのである。

 私の子供の頃は、コメのご飯など満足に食えない時代であり、あれこれと何を食べたらよいか迷う程の数のおかずが食卓に並ぶことは希であった。したがってどこから手を付けようが大勢に影響はなかった。つまりソフトウェアが単純でモジュール数が少なければ、どのモジュールから詳細化を始めようが全体のソフトウェアの仕上りには影響しなかったのである。しかし今や飽食の時代である。食卓には4〜5品のおかずが並ぶのが普通である。旅館などに泊まると、出される夕食には10品くらいのものが並ぶことすらあり、どこから手を付けてよいか迷うほどである。つまりソフトウェアが複雑化してモジュールの数が飛躍的に増加してくると、どのモジュールから詳細化を始めたらよいかを決めるのは極めて重要な問題になってくる。

 したがって現在のような飽食の時代、つまりソフトウェアが巨大化し複雑化した時代にあっては、トップダウンに食べるという“食事マナー”を箸の使い方をおぼえた直後くらいから(つまりソフトウェア設計論の最初で)意識的に教育することがどうしても必要になってくる。

 私は学生時代、関数論の清水辰次郎先生から言われたことがある。「若いうちは狭く深くやるがよい。年を取ったら広く浅くやることである」(「やる」というのはもちろん研究をやるという意味である)。残念ながら私は何時までたっても何事も狭く浅くしかできなかったが、この先生の言葉だけはよくおぼえている。しかし食事の仕方の例からも分かるように、人間は生来狭く深くボトムアップにやるのを得意としているものなのである。ソフトウェア技術者についても同様であって、若いうちは放っておくと狭く深くボトムアップな詳細化を得意とするようになる。そして経験を積むにしたがって次第にトップダウンな設計法を身に付けるようになる。つまり、ばっかり食べをしなくなるのである。ところが現在のように技術進歩が速く、複雑巨大なソフトウェアを扱わなければならない時代にあっては、少しずつ経験を積んでトップダウンな物の見方を養うというような悠長なことはやっていられなくなってきた。コンピュータ教育のできるだけ早い段階で、意識的にこの能力(食事マナー)を教え込む必要があるのではないだろうか。

 ちなみに、ソフトウェア技術者向けの教育カリキュラムなどを見ていると「ソフトウェア設計論」などという講座をよく見掛ける。教えるとすればこの辺りで取り上げるべきテーマであろう。私は自分が担当している大学の講義ではプログラミング教育の中でこれを取り上げることにしている。しかし教える上で最も難しいのは、こういった“食事マナー”を教えることよりも、おしゃべりや居眠りをせずにまじめに講義を聞くという“学生としての最低限のマナー”を身に付けさせることの方である。いや、これは本当に難しい。■