『メタプログラミングRuby』が読み終わった。すごく面白かった。メタプログラミングだけに特化した本かと思いきや(それはそうなんだけど)メタプログラミング自体がRubyのコア要素なので、結局Ruby全体について深く学ぶことができる。2010年が初版だから新しい本ではないけど、今でもぜんぜん通用するはず*1。特に自分みたいに身近にRubyハッカーがいない環境だと、ちょっとした疑問を解決できずに残してしまっていて、それらの多くをこの本が解決してくれた。
以下、特長。
『Effective Ruby』
『Effective Ruby』と比較すると、より概念(本質?)寄り。『Effective Ruby』はより実践的というか、細かいTipsなど含めて実際にコーディングする時に直接的に役立つ知識が多い。*2
Ruby on Rails
メタプログラミングの実際のコード例としてRailsを扱っている。Railsのコードを読もうとして挫折した人には非常にありがたい内容。ひとつの章を丸々割いてRailsのコード・アーキテクチャを説明し、それからRails内メタプログラミングの解説の章に進む。
イディオム & 魔術書
Rubyでよく目にするイディオム、メタプログラミング・パターンがそれぞれ巻末の付録として整理されてまとまっている。 それぞれに名前が付けられているし、本編での対応ページが書いてあって、復習やリファレンスにすごくいい。
会話体
文章が全て先輩Rubistのビルとのやり取りで進んでいく。茶番だなーと思いながら読み進めたけど、意外と取っ付き易い文章に仕上がってて良かったのかも。人によって好みが分かれそう。
参考文献
記載されている6つの参考文献中、Rubyの本が2つ。残り4つは違うプログラミング言語の本。『メタプログラミングRuby』はRubyでメタプログラミングをどのように扱っているかを論じているけど、たぶん学んだことは他の言語での大いに役立つと思う。似た概念は他の言語でもおおいにあるし。*3
師匠いわく・・・
師匠は気分を害したようだ。そして、「お前はもうひとりで学べるほど賢い」と答えた。「だが、学んだことを忘れられるほど賢いかね?メタプログラミングというものなど存在しない。すべてはただのプログラミングじゃ。(以下略)」
洋書だと第二版(2014/8/8)が既に出ているので、どうせなら原著で読みたいなー。 と思ってたら、第二版の日本語訳の予約が開始してた。発売は 2015/10/19 ってなってる。もうすぐ!