DSL in .NETについて

以前触れたと思いますが、個人的印象としてDDDはJavaの世界だけでなく.NETの世界の方でかなり受け入れられているような気がしています。今度はOsloの影響なのか、DSLについてもそうなるのかな、と思わせる本の紹介です。

  1. Building Domain Specific Languages in Boo

夏にならないと書籍としては購入できないようですが、現在でもebookとしてなら購入できます。購入とは無関係に、上のページにChapter 1が公開されていますので、この内容で判断されれば良いかと思います。

最近DSL関連のポストを多く書いていますが、DSL批判というものもあります。誰でも読めるDSLなら良いのですが、多くのDSLが作成され利用されると、後ほどのメンテナンス問題(読めない、使い方・使い分けが分からない等)が出てきます。そのドメインの人であれば「一読してほぼ理解出来る」言語設計を目指す必要があります。

DSL in .NETについて

Oslo and OMGポストについて

SolidSoftという会社の人のブログポストに興味深い内容のものがありました。OsloとOMGのモデリング標準の関連について、Microsoft社に近い側から冷静に観察し歴史的な背景情報も含めて書かれています。ちょっと長い英文ですが、この話題に興味のある方にとっては十分に読む価値があるポストだと思います。

  1. Oslo and the OMG

なおこのブログポストは1月の日付ですが、コメントを使っての議論は今でも続いているようです。

モデリング分野では両者が近付く可能性もありそうです(本当は統一されれるのが有り難いのですが)。期待したいと思います。

Oslo and OMGポストについて

サンプルDSL on the Web

DSLの説明用の例題がWeb上にありますので紹介します。

  1. An Introductory Example
  2. Fowler’s DSL example with Xtext
  3. Fowler’s DSL example with MGrammar (Draft!)

1番目のものが、本家Martin Fowlerさんの書かれているもので、Miss Grant’s Controllerというタイトルのところに概要があります。大切なものを家の中のどこかの引き出しに隠せるシステムで、これを開くために幾つかの決められた手順を踏まなければならない、というものです。下の方にState Machine図で書かれています。これをどのように表現するかで、幾つかの例が記述されています。少なくとも、Graphical DSL(State Machine図)とTextual DSL(コード部分)の両方の例が示されています。

2番目のものは、これをeclipseのTextual DSLで書いてみたもので、3番目はこれをOsloのMGrammerで書いてみたものです。

個人的には、3番目の記述は詳細過ぎるので、2番目の記述と同程度のものが書ける(比較のためには同程度の記述が望ましい)と思います。もう一言感想を書くと、2番目と3番目は(同じ範囲を書く限り)かなり類似した記述になるだろうと思います。

この例題が本質的にState Machineだとすると、State Machineを表す(eclipseの)ecoreファイルなどいろいろ見つかると思いますので、(可能性は低いかもしれませんが)別の記述方法が見つかるかもしれません。

サンプルDSL on the Web