2008-05-31

近況

"Working Effectively With Legacy Code" (WEwLC) の 読書会 があるというので参加させてもらった.

13-17 時で 4 時間の長丁場なのと, 担当の人が色々準備しているのがすごいなーと思った. 本を読むんじゃくて, 担当の人が準備してきた資料や説明をもとに進行するんですね. 最初の高木さんはほとんど抄訳に近い勢いだし, その次の川西さんはスライドつき. 水準が高い. 実は最近は読書会なんてなくても必要なものは根性で読めばいいと思うようになっていたけど, これだけ準備してもらえるなら読書会の方がいいわ. 私もどこかを担当しないとなあ. パラサイトになってしまう...

あと, 読書会では無理に全文を読む必要もないんだなということがわかった. 私のやっている RTR の読書回は通読が基本で, アルゴリズムなんかの厄介なところでは それに加えてホワイトボードを使って議論する. まめな人はデモをダウンロードしてみせてくれることもある. 資料の準備はなく summarize をしない. なので準備の負担は少ない. そのぶん進みは遅い. 準備の負荷を増やす気はないけれど, スキップは工夫していいかもしれない. つかみや文献紹介などは積極的にスキップできそう. などと本の内容以前に読書会というものへの理解を深めた一日でした.

読み物としての技術書

WEwLC の技術的な重要性については何度か書いてきた. それとは別に, 読み物としての面白さもあるなあと再読して気付いた. "君の書いた最初のコードを覚えてるかい? 僕は覚えている." とはじまる前書きの高揚感. (レガシーの話なのに!) しばしば現れる挿話のリアリティ. 座りの良い比喩たち. 読み手の私は思わずにやりと笑い, 頷き, 時に胃を締め付けられる.

技術書はある種の実用書だから, その文章に面白さを求めるひとはあまりいない, 気がする. 技術書の読者はふつう何らかの効能を求めている. ある要素技術を使いこなしたいとか, より良いコードを書けるようになりたいとか, 役に立つものであってほしい. 何の効能も期待できない技術書を読む人はそう多くないだろう.

書籍が説明する対象の技術が面白いことはあるし, 著者の示すアイデアが面白いこともある. 技術的な面白さを求める態度は, 効能を求めるのとは少し違う. 何の役にも立たないコードを書く趣味プログラマがいて, テクノロジーを追いかけるのが好きなプログラマもいる. 面白い技術の紹介は, そうした技術に触れる fun を代替している. fun を求める読者にとって usefulness は割とどうでもいい.

たとえば "Google を支える技術" で紹介されるテクノロジーを 役立てられる人がそう多いとは思えない. にも関わらず, この書籍は広く評判になっている. 代替された技術的 fun の一例と見ることができる. ある友人はこれを <恐竜図鑑> と評した. "スゲー!" という興奮にページを繰る様は, たしかにどこか似通っている. (それと, でかさの迫力も.)

プログラマが技術に fun を求めるように, 活中者は読み物に fun を求める. そして活中者のプログラマが技術書を読むとき, そこに読み物的な楽しみを求めるのは自然な流れに思える. 書き手の腕が十分に良ければ, 活中者でない読み手にまで楽しみが伝わることすらある. 書き手が意識したものであれ無意識であれ, 文章が物語を内包することはありうる. またその物語が私達を惹きつけることもあるだろう. 少なくとも Michael Feathers の文章には, そうした語りがあると思う.

面白さを自覚する

技術書にも読み物としての面白さがある. 更に言えば, 面白いけどあまり役に立たない(役に立たないけど面白い)技術書もある. たとえば Beatiful Code に含まれるエッセイのいくつかは そうした性質のものだと私は感じた.

計算機読み物の <面白さ> に自覚的な書き手の筆頭は Joel Spolsky だろう. 彼はたびたび <Show, don't tell> の原則に 言及している. Best Software Writing として "面白い計算機読み物" を集めてさえいる. (この中の話すべてが役に立たないとは言わないけれど.)

技術書にも読み物としての面白さがある. この事実を無視すると, こうした本を読んだ後の満足感をうまく説明できない. 歪みは書評にあらわれる. "教養として...", "本質が..." など, いまいちよくわからない書評を目にしたら, それは <ただ面白い> 本なのかもしれない.

油断から, 話の面白さを技術的な正しさと混同することすらある. この傾向は出版というフィルタを通らないウェブの読み物で顕著だと私は感じている. 技術的な洞察より巧みな語りをもって読者を引き付ける書き手がいる. そうした書き手の発言を頼りに技術的な議論をされると少しうんざりする. とはいえ私自身, 読後の興奮に乗ってうかつなことを口走ってしまうことはある.

"Code, don't tell"

逆に技術的な裏付けの弱さを指差し, 書き手をホラ吹きと卑下する向きもある. これも寂しい. その文章は, 良いプログラマになるヒントではないかもしれない. けれど読み手が求めているのはヒントではなく, 胸の高なりや共感かもしれない. Code, don't tell ... そう吐き捨ててコードを書き続けられたら格好いいけれど, 私はそこまで強くない.

物語には力がある. 私達を励まし, 勇気づけてくれる. 夢があり, 裏返せば批評の刃がある. ...なんて効用を語る私は usefulness に毒されているのだろうか. こう言えば済むことかもしれない: 面白い物語が好きだ. 計算機産業は歴史を重ね, SF 作家に頼らず自らの物語を生み出せるようになった. ウェブが普及し, 小さな物語達に日の目を見せた. そして今のところプログラマだけが, その面白さを存分に味わうことができる. Beautiful Code を読み, これを楽しめるプログラマの役得に私はほくそ笑んだ. ウェブの読み物にも同じ密やかな喜びを覚えている.

文章には物語が潜んでいる. 技術書も, プログラマの blog も例外じゃない. 物語が物語であることを忘れてはいけない. けれど物語を物語と切り捨てるのも寂しい. その面白さが, 喜びが, プログラマを続ける理由のひとつにある. そうこっそりと告白したい.