DSL / Preface


Preface

DSLは昔から使われてきたが、まとまった形では記述されていなかった。そうした状況を打破するために、この本を書きました。適切に構築されたDSLは複雑なソースをより理解しやすくし、その結果開発生産性が向上します。またソフトウェア開発におけるボトルネックである、開発者とドメインエキスパートとのコミュニケーションにおいて、DSLそのものを共有することは難しいかもしれないが、より深いコミュニケーションができるようになるため、ソフトウェア開発の最大の問題が改善します。そういった点がDSLの特徴です。この本で、DSLの有益なテクニックを紹介します。

厚くて怖い?

二部構成で記述しました。具体例のパートとリファレンスパートです。具体例のパートは150ページを超えないようにしています。幅広い知識を得られます。リファレンスのパートは必要な時に参照できるようにしています。

なぜ今だすの?

詳細な理由はわからないが、最近DSLの人気が急上昇し、使用例も増えてきた。世紀の変わり目に、XMLによるDSLが本格化した。XMLを使うことで、ユビキタスランゲージの価値がわかり、柔軟にシステムを構築できるようになった。しかし、XMLは読みにくいものである。Ruby on Railsがそれを変えるモノとして登場してきた。

だれが読むべきか?

この本は全くの初心者むけではなく、数年の経験を持ったプログラマ向けに記述している。

Javaの本?C#の本?

DSLのノウハウはプログラム言語に独立している。しかし、C言語などの手続き型言語ではあまり有用ではなく、関数型言語におけるノウハウはまだ不十分です。ですので、もっとも適しているのはオブジェクト指向言語であり、世の中に広く広まっているJavaやC#で記述した。しかし、それらの静的言語では実現不可能なDSLのアイデアはRubyで記述した。


記述していな事柄

完璧なものを目指しても、時間がかかっては意味がありません。そのため、早急に世に出したいことから、MLやHaskellなどのノウハウが不足している関数型言語のDSLなどは記述していません。また、私のお気に入りはAlternative Computationalモデルのセクションです。

担当者のつぶやき

初めて担当してみましたが、英語を正しく訳すのは大変ですね。もっと勉強しなくては。 関数型言語のDSLについての記述がないのは残念です。あとScalaで書いていないのも残念。

みんなの突っ込み