唐突だが,筆者はコンピュータが好きである。そして,仕事は日経ソフトウエアという雑誌で,初級,中級プログラマ向けに記事を編集,執筆すること。だから,記事を書くときは,読者がコンピュータやプログラミングは楽しいな,面白いな,と感じてもらえるよう努めている。もし自分の記事がきっかけで,コンピュータを楽しめる人が増えるのであれば,これほどうれしいことはない。

 こんな思いは,過去にこの「記者の眼」でも書いた。「新入社員には“コンピュータの動く仕組み”を知る楽しさを伝えよう」,「私が今さら『マシン語』の特集を書いた理由」の2本がそれである。今回はその続きである。筆者が日ごろ「どうやったらコンピュータの楽しさ,面白さを伝えられるか」と,あれこれ考えたり試したりしていることを書いてみたい。

 このページを読む皆さんも,ご自身の知識を他の方に伝えるときに,いろいろと心がけていることがおありだと思う。間もなく配属されてくる新人を教育する立場にある人も多いだろう。ご一読いただき,皆さんが他の方にコンピュータの仕組みやその面白さを伝えるときにどんな工夫をされているか,などのご意見をお聞かせいただければ幸いである。

まずはイメージ作りから

 いくつかの特集や連載にかかわるうちに,筆者が大切だと思うようになったことが2つある。まず一つ目は,理解しようとする対象となる概念,技術,処理のイメージを頭の中に描くこと。このためには,自分の手で実際に絵を書いて見たり,人の書いた絵をじっくり見ることが大切だと思う。

 以前筆者は,日経オープンシステムという雑誌で,情報システム部門,SI事業者,ベンダーなどの方々から取材をしていた。話を聞くときはノートにメモを取る。聞いたコメントは日本語でメモするのだが,なぜか技術的に鍵になる部分は図で書くことが多かった。ネットワーク構成図の上にトラフィックの流れを重ねる,Webページの遷移の上にセッションを管理するIDのありかを記す――などである。

 書いた図は,その場で取材相手に見せ,内容に間違いがないかを確認する。言葉でズラズラ説明するよりも直感的で,理解が早く,間違いが少なかった。「そうそう!」と相づちを打ってくれる場合もあるし,見せたノートにさらに箱や矢印を書き足して「こうなっている」と教えてくれる場合もあった。

 逆に,私が人に何かを聞かれた時も,なるべく紙とペンを用意して,図で答えるようにしていた。環境が許す場合は,図を見せながら,手元のコンピュータの上で,それを実行して見せた。たとえば,この設定を変えるとこのポートがふさがる,ふさがったポートに別のパソコンからtelnetすると,アクセスできない――という感じ。こうして実体験を交えて説明している間に,「分かった」という顔をして喜んでいるとき,筆者も嬉しい。

 日経ソフトウエアに異動して,多くの“基礎もの”記事にかかわるようになり,初級者向けの分かりやすい説明が必要になった。

 例えば変数という概念を説明しようとするとき,いつも頭に浮かぶのは,昔どこかの書籍で見た図だった。そこで,改めて自分の頭の中をがさごそと探ってみると,いろいろな概念について考えるときに,たいていの場合はそのルーツになるイメージが残っていることに気がついた。日ごろは意識しているわけではないが,物事を考えるときには,いつも頭のどこかからそれを呼び出しているようだ。

 そのイメージを直接伝えられれば,そのイメージは,筆者が経験したように,読者にとってずっと役に立つものになってくれるはず。そう考えて作ったのが,日経ソフトウエア2003年2月号に掲載した「図でわかる! プログラミングの10大基礎知識」という特集である。(一部をPDF形式で閲覧できる。こちらのページから)。

 こうしていくつかの図を試行錯誤しながら書いているうちに,頭に描くイメージは,せいぜい5通り程度しかないことに気が付いた。(1)メモリーやディスクなど物理的媒体上のデータ配置,(2)OSIの7階層モデルのようなレイヤー構成,(3)ネットワーク構成図のように物理的な配置を示す地図,(4)オブジェクトやコンポーネントなどの呼び出し関係などデータの流れ――である。必要に応じて,(5)これらを組み合わせたり,時間軸を加えたりする。

イメージと現実との間の距離を埋める

 ただ,こうやって頭の中に作ったイメージと実際にコンピュータの中で起こっていることの間には,まだ距離がある。イメージ作りに続いて筆者が大切だと思うもう一つのポイントは,この距離を縮めるトレーニングを積むことだ。

 例えばC言語でint i;と変数を宣言する1行を書き,コンパイル,実行したとする。メモリー上のどこかに,32ビットのメモリーが確保される(32ビット長でない場合もあるが)。普通の人ならば,コンピュータを学び始めたころには,メモリーが確保される頭の中のイメージと,自分が書いたコードとの間には大きな距離があると思う。コンピュータに関する理解を深めるということは,ある意味ではこの距離を縮めていく作業ではないだろうか。

 プログラミングの分野では,“距離を縮める”トレーニングとして,優れたソース・コードを読むことが有効だ。日経ソフトウエア2003年4月号に掲載した特集「本物のソースコードで技術力を磨く」は,他人が書いたコードと動いているバイナリの間にある距離感をうまく感じられるように配慮した。

 記事の内容は,ソース・コードはいくつかのポイントを押さえれば意外と楽に読めること,読んだ経験が書く力につながることなどである。とりあげたソース・コードは,Webブラウザ「Mozilla」や,画像処理ソフト「Gimp」である。筆者も実際にMozillaの解読に取り組み,その一部を特集に記した。

知識や経験を伝える術を磨きましょう

 ITの世界では,すぐに古くなって役に立たなくなる知識や経験も少なくない。一方で,いつまでも変わらず役に立つ基礎的な知識と経験は,明らかに存在する。すでにそれを習得した人々は,どのようにこれらの知識,経験を蓄積し,頭の中で整理しているのだろうか。

 筆者にはまだ,明確にそれを説明することができない。だが,これまで述べてきたように,コンピュータの知識は再利用可能な明快なイメージに落とし込むことができるものであり,コンピュータの経験はそのイメージと現実に起こった現象との結びつけで構成されている,と思っている。

 知識も経験もない誰かに,これらを伝えようとするとき,「知識は大事」「経験を積まないと」などという短い言葉でくくり,放置してはいけない。知識の組み立てられ方や呼び出し方,経験を蓄積する方法や思考のプロセスを,より深く知る。こうすることによって,コンピュータの基礎知識や経験を,うまく,適切に伝えられる術が身についていくのではないだろうか。

(矢崎 茂明=日経ソフトウエア)