マーチンファウラのDSL本をマインドマップにまとめてみた
マーチンファウラーのDSLの本(厚い黒本)を読んだので、まとめのマインドマップを描いた。画像をクリックすると拡大します。(astah share で詳しく見れます。こちら。)
最近、Rubyist がまわりに増えて、内部DSLをRubyで作るのが楽しそう。Rubyはメタプログラミングに加えて、豊富なリテラル(MapやList)、ブロック、シンボルをうまく使えることなどもあって、すごくきれいなシンタクスのまま、DSLをサポートできる。
この本では、"Part I"がWhatとWhyに集中してかかれていて、他のパートはDSL設計者のためのパターン集。パート1では、DSLの定義やSemantic Modelの意味、そして、なぜDSLをつかうか、DSLの3つのガテゴリなどが書かれている。
All the DSL does is provide a readable way of populating that model - that is the difference from the command-query API I started with.
From the DSL's point of view, I refer to this model as the "Semantic Model"(159)...
I advocate a Semantic Model because it provides a clear separation of concerns between parsing a language and the resulting semantics...
DSLを作る理由のなかでは、"Communication with Domain Experts" というのが、やはりアジャイラーとしては好き。そういえば、同僚の諸橋さんが、"moro-miso" というCucumber というRuby用のユーザー自動テストツールの日本語対応をやっている。DDDの方向ともあいまって、ドメインの言葉で仕様を語る、それが、「使う人」と「作る人」とをつなぐ、という流れがひろまるとよいと思う。
SPLASH 201 で、DSM(Domain Specific Modeling) のワークショップに参加したこともあって、MetaEditなどの "language workbench" のコンセプトにも最近興味が出てきた。それもマインドマップの右下に加えた。
また、InfoQには、MD* (MDA, MDD, MDE, ...)系の記事も充実しているので、それも左下に加えた。
astah* の開発者としては、「使う人」と「作る人」とをつなぐモデリング、というコンセプトで、DSLやこれらのツールと繋がっていけるとよいと思っている。
印刷用マインドマップはこちら(A3で印刷してください) -> DomainSpecificLanguagesByMartinFowler.pdf