プログラミングと都市計画と日曜大工。
都市論で有名なアレグザンダーは、実はプログラマーの間でも知られている名である。彼の著書『パタン・ランゲージ』は、ソフトウェア・デザインにおける「構造のパタン」の隠喩としてしばしば引用されるからだ。ただし、プログラマーで実際にこれを読んだことがある人は少ないと思う。
彼の「パタン・ランゲージ」のカテゴリーは、「町」「建物」「施行」の3パートに区分されている。彼は、生活の空間スケールの差異を意識しながら、各々のスケールにおけるパタンを議論しているのだ。
ところで、ソフトウェア・デザインにおける「デザインパターン」や「オブジェクト指向」というのは、「町」の次元にあると言える。それは都市計画級のコーディング・テクニックだ。だが、はたして、本屋でプログラミング本を手にするような読者は、そのような野心を抱いてこのコーナーに来たのだろうか?
余談だが、映画『インセプション』で、主人公夫婦が思い出を頼りに作ってしまった街のシーンをふと思い出す。
えーコレ、ほんまに二人だけで作ったん?
うん、何年もかかってん。
まじでー!、しんじられへーん!!
・・・というラスト近くのシーン。
確かにそういうプログラマーもいる。ただ、単独で作ってしまうのなら、やはりパターンは関係ない。なぜなら自分さえ分かっていれば良いのだから。そういえば『ハッカーと画家』の著者もそういうこと言ってたような。LISPでごりごり独りで書いたんだよねあの人。まあでも、この物語の主人公、自分で作った迷路に終始迷っているけどねw
話を戻そう。こういう巨大なスケールがある一方で「これはカナヅチです。そしてこれはクギです。右手で持って打った方が良いですね、ただしもしあなたが左利きならば・・・」的な、死ぬほど退屈で、そして実践的ではない入門書が多数存在している。それはパタン以前の指南書であって、程よい「コードの行間」はいつまでたっても見えてこない。
「施行」レベルの日曜大工、つまり「ちょっとアプリを作ってみたいな」というインセンティブに応えるような書籍は、意外と少ないのではないかと思う。