読者です 読者をやめる 読者になる 読者になる

(-> % read write unlearn)

All opinions expressed are solely my own and do not express the views or opinions of my employer.

メタプログラミングRuby

ruby

メタプログラミング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

  1. プログラミングErlang

  2. ANSI Common Lisp (スタンダードテキスト)

  3. プログラミングClojure 第2版

  4. Scalaスケーラブルプログラミング第2版

  5. プログラミングRuby 第2版 言語編

  6. RailsによるアジャイルWebアプリケーション開発 第4版

師匠いわく・・・

師匠は気分を害したようだ。そして、「お前はもうひとりで学べるほど賢い」と答えた。「だが、学んだことを忘れられるほど賢いかね?メタプログラミングというものなど存在しない。すべてはただのプログラミングじゃ。(以下略)」

メタプログラミングRuby』p209より引用


洋書だと第二版(2014/8/8)が既に出ているので、どうせなら原著で読みたいなー。 と思ってたら、第二版の日本語訳の予約が開始してた。発売は 2015/10/19 ってなってる。もうすぐ!

*1:モンキーパッチに対する扱いとかはリファインメントとかの出現で結構変わりそう

*2:Effective Rubyは、実はメタプログラミングの章だけまだ読み切っていないです。Effective Ruby もすごく面白かった。

*3:参考文献として記載されていたものより新しい版がでているものはそちらを記載。