実践プログラミングDSL

一ヶ月ほど前に翔泳社さんから頂いていたのですが、なかなか時間がないのと内容的にも難易度の高い本で読むのに時間がかかってしまいました。

ManningのDSL in Actionという本の翻訳なのですが、内容的には結構難しいです。主にRuby、Groovy、ScalaClojureといった言語を題材にDSLの設計・実装方法を実例を交えて解説していくという流れなのですが、各言語の基礎知識がないと理解が難しいです。Clojureのマクロとか特に。まあでも細かい部分まできっちり理解しようとせず、雰囲気でなんとなく読み進めていっても問題はありません。そういう本ではないです。
本書の価値はDSLの設計・実装例を通じてメタプログラミングやパーサに関する知識を整理するという点にあります。メタプログラミングやパーサの技法についてDSLを題材に取り上げて説明している、と言い換えてもよいかもしれません。前半で内部DSL、後半で外部DSLを扱っているのですが、前半では内部DSLを実装する上で必要となるメタプログラミングのテクニック、後半は外部DSLを実装する上で必要となるパーサに関する説明がメインになっています。外部DSLのところではANTLRScalaのパーサコンビネータライブラリに加えてXtextも紹介されています。
これを読んでDSLを作ろう!という人はそんなにいないと思いますが、上記のようにメタプログラミングとパーサに関する書籍と捉えて読むと、広く浅くではあるものの知識を整理し、引き出しを増やすことができるのではないでしょうか。少なくともタイトルから受ける印象よりは応用の利く内容で、「実践」というよりは机上で読み物として読む本だと思いました。
翻訳は丁寧で読みやすいのですが、訳書ならではのわかり難い用語や回りくどい部分もあって、あまりサクサクと読み進められる感じではないです。とはいえこれを英語で読むのは相当しんどそうなので、やはり日本語で読めるのはありがたいですね。
レビューを書くために流し読みしてしまった部分もあるのですが、もう一度腰を据えてじっくり読みたい一冊です。