Interview and Book Review: DSL Engineeringについて

以前紹介した事がある DSL Engineering 本について、InfoQのインタビュー記事がありましたので紹介します。

  1. Interview and Book Review: DSL Engineering

この本を書籍として購入したいのですが、amazon.co.jp からは購入出来ません。取り扱って欲しいというお願いのメールも出したのですが、何も起きないので、今度海外に出る時にどこかで探す積もりです(PDF版はドネーションウェアとして入手できます)。

このインタビュー記事は全般に渡り興味深いことが書かれていますので、内容の概要紹介というのは困難です。DSL に興味をお持ちの方は本の購入とは別の話としてご覧になってはいかがでしょうか。

Interview and Book Review: DSL Engineeringについて

Introduction to Domain-Specific Languages (slides) | Modeling Languages

Jordi Cabot さんのブログの紹介です。彼の近くにいると思われるJavier Cánovasさんという方が最近 DSL についてのチュートリアルをやられたそうで、そのスライドがとても良い(素晴らしい)ので紹介する、という内容です。

次のURLにあるのがそのブログですが、オリジナルが Slideshare に上がっています。

  1. Introduction to Domain-Specific Languages (slides) | Modeling Languages
  2. Domain-specific Languages

カバレッジが広くとても良く現状を説明していると思います。是非ご覧下さい。Eclipse Modeling 勉強会でも使おうかな。

Introduction to Domain-Specific Languages (slides) | Modeling Languages

モデリングとプログラミングの間について

モデリングは(私的には)対象や物事を抽象化することで「木を見て森を見ず」状態を避けることが大きな効能であると思っています。ソフトウェアの世界でモデリングというと UML が代表的な言語でありその UML で描く事の出来る各種ダイアグラムがモデルということになります(正確には UML モデル)。難しいのは、正しく正確なモデルというものが評価しがたいということではないでしょうか。簡単なモデルならいざ知らず、クラス数(これもモデル作成者によって変わると思いますが)が増えてゆくと(異なる流儀などにより何通りも書き方が出てくるため)正しいモデルというものが見えなくなってきます。

それでも、ある程度まともなモデルに基づいてソフトウェア開発につなげようとする試みは多くあります。MD* (Model Driven Architecture/Development/Engineering/… ) と呼ばれるもので、標準(UML)ベースのものや DSL ベースのものがあります。

モデルをプログラムに近づける MD* の活動は、ツールベンダによる商用製品やオープンソース系のものがあり、オープンソースでは eclipse に多くのプロジェクトがあります。これは eclipse が最初から EMF をその要素としていたためです。当初 EMF がオープンソースとして出されたことに驚きました。EMF は OMG の MOF のサブセット(emof)の実装ですので、これを利用すればモデリング言語を実装出来る訳です。その結果、現在では UML や BPMN などについてのグラフィカルエディタがプロジェクトとして活動しています(使えます)し、GMF や Xtext なども EMF を利用しています。

モデルはあるレベル・視点での表現であり、別の視点での表現や詳細化が必要になることがほとんどです。このためにモデルから別のモデルを生成するモデル変換というものがあります。OMG 標準では QVT と呼ばれていますが、アカデミックな世界には ATL というものもあります。どちらも eclipse 環境用に実装され利用出来るようになっています。

モデルをプログラムに近づけるには、最終的にモデルをテキスト(プログラム)に変換してゆくステップが必要です。これを100%実現するのは困難なため、主流はテンプレート方式をとったものになります。これについても OMG 標準などがあり、それを eclipse 環境で実装するプロジェクトが成果を出しています。

プログラミングを主体に考える立場を取ると、ボイラープレート的なコードは出来るだけ排除し、より本質だけを記述したり、何度も同じようなコード書かずに済ませたい、ということから Internal DSL やフレームワークなどが使われていると思います(例えば RoR のような)。

実は「モデリング」や「プログラミング」という一般的な言葉を並べても現実の世界では余り意味が無く、具体的な対象の世界がまずあって、その世界に向いたモデリングやプログラミングを選ぶ事がとても大切だと思います。例えば状態遷移が支配するような世界からビジネス分析が必要な世界までを同じ言葉で扱うのはやはり無理があるでしょう。

今後このポストの続編として、比較的使えそうに思えるプロジェクトや製品をいくつか紹介出来ればと思っています。

モデリングとプログラミングの間について

GMF でグラフィカルDSLを簡単に作成する方法について

ここ数回ですが本ブログに GMF を使って作成したダイアグラムを掲載しました。これらをどう作成したのか、簡単な例を使いメモにして公開しました。 次のページにPDFファイルで掲載しましたので興味のある方はご覧ください。

  1. Graphical DSLs

ご意見やコメントが頂ければ幸いです。

備考)ちなみに Xtext でサンプルのネットワーク DSL を書くと次のような感じでしょうか。

grammar org.xtext.example.nwdsl.NwDsl with org.eclipse.xtext.common.Terminals
generate nwDsl "http://www.xtext.org/example/nwdsl/NwDsl"

Model:
'network' name=ID '{'
elements+=Element*
'}'
;
Element:
Node | Link
;
Node:
'node' name=ID
;
Link:
'link' name=ID '{'
'from' source=[Node|ID]
'to' target=[Node|ID]
'}'
;

GMF でグラフィカルDSLを簡単に作成する方法について

ODP Enterprise Language Editorに向けて

現在Policy/Obligationまわりについて改訂作業中のEnterprise LanguageのドラフトをもとにしてEnterprise Language Editorを試作中です。先日のポストに引き続きGMFを利用しています(Xtext版も並行して取り組んでいます)。次が現状のGMF版サンプル図です。

Image

 

備考)このやり方でやると、例えば BMM (Business Motivation Model) 用のグラフィカルエディタも出来ます。

ODP Enterprise Language Editorに向けて

On Building Software: Win Friends and Influence People …with DSLsについて

Vladimir Bacvanski さんのブログポストの紹介です。 先日の EclipseCon でこの方の講演を聞きました。 とても異色でした。 というのも、通常ならばテクノロジの話をする場なのに「DSL をビジネスの現場に適用するには」という観点からの経験談や知恵を語ってくれたからです。 具体的にはEMFとXtext他を使っているということですが、そんななものは一切見せず、ハイレベルで話をまとめてくれた点が優れたセッションでした。 実際、どんなDSLツールを使っても、ビジネスシステム開発現場では同じような議論が出てくると思います。 その時の心構えやDSL開発手順についてのアドバイスが書かれていますので、そういった使い方を考えている人にはとても参考になると思います。

  1. On Building Software: Win Friends and Influence People …with DSLs.
On Building Software: Win Friends and Influence People …with DSLsについて

Episode 182: Domain-Specific Languages with Martin Fowler and Rebecca Parsonsについて

Software Engineering Radio の最新エピソードの紹介です。  Domain-Specific Languages の著者二人へのインタビューになっています。 Enternal DSL と Internal DSL の差や Language Workbench についての話は興味深いものです。 Skype でのインタビューを録音したようですが、そう言われないと分かりません。

  1. Episode 182: Domain-Specific Languages with Martin Fowler and Rebecca Parsons | Software Engineering Radio
Episode 182: Domain-Specific Languages with Martin Fowler and Rebecca Parsonsについて