2010-09-13(月) [長年日記]
■ メタプログラミングRuby(Paolo Perrotta)
翻訳者の角正典(aka kdmsnr)さんから献本いただいた。なんでも刊行と同時にtDiaryの主要開発者に配られたようで、ありがたいことです。これは(たぶん)tDiaryが彼がこの世界に飛び込んだきっかけのひとつになったことへの感謝の意なんだろうとは思うが、裏の理由はtDiaryもまともなメタプログラミングをしろやというメッセージだろう。まったくだ!
tDiaryは約10年前、本書でいうところの「Javaのような」コードから出発していながら、随所でevalしまくるという、なんというか「ちょうどいい中間の状態」がないものだから、拡張しづらいはデバッグが難しいわで、なかなか厄介なレガシーコードになっている。そんなソフトウェアのメンテナが本書を読むと、メタプログラミングを使ってコードを全面的に書き換えたくなることと間違いなしである。
ともかく、読み始めると他のことに手がつかなるほど面白いものだから、自重しながらチビチビ読むのに苦労したほどである。
メタプログラミングは本書の帯*1で「魔術」と評されるほどトリッキーな技術なので、Rubyの初心者にはさすがにオススメできないが、かといって熟練者だけが読み下せるシロモノというわけでもない。基礎の基礎から懇切丁寧に説明してくれるので、正直「こんなに易しいならもっと積極的に使うんだった!」と後悔するほどだ。Rubyの文法がひととおり身についたら、次に手にとるべきなのは本書かも知れない。いや、大げさじゃなく。
翻訳文も読みやすいし、お得意のネットジャーゴンが散りばめられていて、実に楽しい*2。以前「アジャイルレトロスペクティブズ」で指摘したような思い切りの悪さはもうないね。
ともかく、このテクニックを使って何か書きたくてしょうがなくなるので、何か題材を手元に用意してから読むのが吉だ。tDiaryは(まだテストがないので)その題材にするにはもう少し待たなければいけないから、「パラボラアンテナ」をリニューアルしようと思って適当にでっちあげたCMS「REGO」に、もうちょっと魔術らしい魔術を使ってみようかな(こっちもテストないけど←えっ)。