デーモン君のソース探検

『デーモン君のソース探検』を読んだ。

この本は、BSD magazine で連載されていた「デーモン君のソース探検」を書籍にしたものだ。ソースを読むという宿命を持つ守護神族の中学一年生のデーモン君が NetBSD のソースを両親の助けを借りて読み進めていくという設定。ごく普通の日本の中学生だと、おそらく反抗期なのではないかと思うが、このデーモン君は「えーん、パパ、ママ」と両親へ泣きつく。人間である僕から見ると微妙な設定に見えてしまうところだ。そんなことはこの本の本質ではないので気にしてはいけない。

主人公には幼なさを感じるが、本の内容は硬派だ。モダンなコードリーディングならばプログラミング環境の説明から始まってもおかしくないところだが、この本で用いる手法はとてもプリミティブである。核となる部分は、以下の 3 点しかない。

  • とにかく man でマニュアルをよく読む。
  • 目的のソースファイルのありかは which や locate で見当を付ける。
  • もっと正確に目的の部分を見つけたければ grep を用いる。

もっとかっこよくて効率のよい方法があるのかもしれないが、僕自身もこれに近い方法でソースを読んでいる。もしかしたら、とても恥ずかしい話なのかもしれない。まあ、こういったソースを読む手法の善し悪しなんてものを述べるのは畏れ多いことなので、割愛ということにしておく。

プログラムの「本質」を見極めて追いなさい、というのが本書の要点。この本では、上記の読み方で NetBSD に含まれるコマンドやライブラリ関数などのソースを読んでいく。UNIXLinuxコマンドラインを使っているプログラマならばおなじみのものだと思う。それらの本質的な部分を読み解くことで、システムの仕組みについての理解を深めていく。

内容自体は難しくない。僕は普段 Linux を使っているので、あまり抵抗を感じなかったのだろう。知識として足りなかったのは、仮想端末に関する部分くらいで、程良い難易度だと思う。ただ、最後の章での malloc 関数についての説明は、ある程度の知識がないと困惑に陥いるかもしれない。僕は、conservative GC を何かの実習で実装したことがあったので、そのときの知識が助けになった。

最後に、本書で気に入った台詞があったので書いおく。パパの台詞だ。

「C 言語の本なんかいつも持ち歩かないだろ。そんなんじゃ旅先でハックできないじゃないか」

要するに man とソースを読めということ。最近は hackathon や bug squash party なんてのがあるから、本を持ち歩かずにハックできないと取り残されるよね。