明日から役立つ?プログラマーの考え方講座 その12
「隣はなにをする人ぞ」

こんにちは。鳥井雪です。
ヒューマンアカデミー こどもプログラミング教室の教材監修をしています。
このコラムでは、プログラマーが日常でどんなことを考えて生活や仕事をしているのかを紹介し、みなさんにもプログラミングを身近に感じてほしいと思っています。

今回は、プログラムでの、「お仕事の中身の目かくし」について。
前回のコラムは「データの受け渡し」についてでした。小さく分けた仕事たちを繋ぐのは「データ」であること、データをどういう形で受け渡すかの「約束」が大事なことをお話しました。この「小さな仕事をデータでつないで大きな仕事をする」やり方のいいところは、なんでしょう。

「お仕事の中身の目かくし」とは?

それは、それぞれの小さな仕事が、自分の仕事についてだけ知っていればよいこと、言い換えれば、隣の仕事がどんなふうになっているかを何も知らなくていいことです。
『秋深し隣はなにをする人ぞ』
と詠んだのは松尾芭蕉。旅の途上、病に伏せっている時に、隣人の生活音を聞きながら思いを馳せた句です。秋らしい寂しさのあるいい句ですね。しかし、プログラムの世界では、隣の仕事が「何」をするかは知っていても、それを「どうやって」するかは知らないのが、いい状態なのです。

前回使った、お天気データから晴れの日を数え上げるプログラムの例を考えてみましょう。
この仕事は、

a. アプリから、入力された1から12の数字を受け取る
b. パソコンにあるファイルから、去年のその月の1日ごとのお天気情報を取ってくる
c. 晴れの日を数え上げる
d. 結果をアプリに送って、アプリに表示するよう頼む

という小さな仕事に分けられるのでした。

さて、お隣同士をつなぐのは「データと、その受け渡しの約束」です。aとb、bとcをみてみましょう。aとbを繋ぐ約束は、「1から12の間の数字だけを受け渡す」、bとcを繋ぐ約束は「決まった形、決まった順番でお天気のデータを渡す」でした。別の言い方をすると、それさえ守っていれば、他のことは何も知らなくていいのです。

いい目かくしの例

この状態は、プログラムの世界ではいい状態です。どうしてかというと、bの中身がどう変わっても、入力(1-12の数字)と出力(お天気データの形)が同じであればaとcは問題ないからです。

たとえば、bの読みにいくお天気データの、パソコン上のファイルの置き場所が変わってしまうかもしれません。ファイルに置くのをやめて、インターネット上にあるお天気データを直接取りに行く形になるかもしれません。ファイルに書かれた情報が「晴れ」から「Sunny」に変わることもあるかもしれません。その度にbの中身のプログラムは書き直されます。変化に合わせてプログラムが変わるのは当然です。

ですが、aから数字を受け取る、cには晴れの日は「晴れ」としてお天気データを渡すことを変えなければ、aとcのプログラムを修正する必要はないのです。修正がなければ、バグが入らず安定して動かせます。素晴らしい。

悪い目かくしの例(外に仕事が漏れている)

これが、aから「読みに行くファイルの置き場所を受け取る」形だったらどうでしょう。
たとえば読みに行くファイルが、10月の天気なら「ドライブD/otenki/10-gatsu」、11月なら「ドライブD/otenki/11-gatsu」のように、月の数字によって変わる場合です。だからaで、1から12の数字をもとにファイルの名前を作ってあげて、bに読みに行くファイルを教えてあげるのです。

最初はうまく行きます。けれどある日、ファイルの置き場所が「ドライブD/otenki/tukigoto/xx-gatsu」に変わることになりました。aで作るファイルの名前を変えなければいけません。変えると、動きます。ある日さらに、インターネット上にあるお天気データを取りに行くことに変わりました。インターネット上では、一年のお天気データがまとまって置いてあるので、そのURLと、何月のデータが欲しいのかの二つをbに教えてあげる必要があります。そのためにaはURLと月の数字をbに渡すように変えました。そうするとbもその二つを受け取る形に変えなければなりません...。

これは、aとbの仕事の「境界」、「線引き」に失敗したパターンです。
aが「何月のデータが欲しいかをbに伝える」という仕事だけに集中していたら、bは

  • - b(はじめ)
  • - b-1: 月の数字をもとに、読みに行くファイルを決定する
  • - b-2: ファイルを読みに行く
  • - b-3: cに渡す形にファイルのデータを整える
  • - b(おわり)

というさらに小さな仕事に分けて仕事をし、aとcはどんな変化にも影響なくいつも通り動き続けられたのです。

まとめ

大事なことは、仕事を任せたのなら、必要なことだけを伝えて、あとはやり方に外が口をださないことです。初めての子を育てる時、いろんなことが心配で、最初は夫と赤ん坊を二人で残してわたしが出かけるのさえハラハラしていました。夫はわたしと一緒に初めから育児をし、子どもの世話でわからないことなどないにもかかわらず、です。

泣いた時にはあれをしてあげてほしい、こういうことがあったらこうしてほしい…色々い言いおいておきたくなるのを、ぐっと我慢します。夫は夫のやり方で、子どもと二人で過ごす仕事をやっていく、独立した「隣の人」なのですから。帰ってきた時、 子どもがにこにこ楽しそうに笑っている「出力」があるなら、それで万事OKなのです。

一覧ページへ戻る