自体の動作原理の理解にもつながる、とても有用な本だと思ったので、書評を書いておきます。部構成になっています。メタプログラミング技術について、同僚プログラマとの対話という形式で解説しています。内部でどのようにメタプログラミングが利用されているかを解説しています。言語機能(クラス、メソッドなど)の仕組みが深く理解できます。メタプログラミングを使う前と後のコード例を示しながら、その効果が説明されています。これにより、メタプログラミングの有効性が腑に落ちやすいです。個人的に参考になった部分について、キーワードを列挙しておきます。中で使われているメタプログラミング技術について、実際の例を通じて解説しています。例として利用されているのは以下の機能です。ActiveRecordActiveSupport::Concernalias_method_chainアトリビュートメソッドメタプログラミングは徐々に複雑になるソフトウェアの設計を最適なものにするための道具として有用みたいです。逆に言うと、最初からあまり凝ったことをしてしまうと可読性を落とすだけという結果になりそうなわけですが、その点についても以下のように言及されています。“私がコードを書くときは、最初から完璧な設計は目指さない。必要になるまで複雑なメタプログラミングの魔術は使わない。コードをシンプルに保ち、その仕事を成し遂げるための最も明白な技法を使う。ある時点から、コードが複雑になったり、排除しにくい重複が見つかったりするだろう。メタプログラミングのような切れ味の鋭いツールに手を伸ばすのはそのときだ。いう言語では、コードを書くときに自然にメタプログラミングとされる技術に触れることになります。可読性が高くメンテしやすいコードを書けるようになるでしょう。Ruby』は役立つと思いました。継承チェーンへのオブジェクト挿入や、特異クラスの話など、オブジェクトモデルについての話が多くあります。しくみ』とも少し関連する内容となっていると思います。Ruby』よりも詳細に踏み込んでいるといえます。しくみ』の順番で読めば、だんだんブレイクダウンしていく感じになり、理解しやすいのではと思いました。第2版』はおすすめです。