オルタナティブ・ブログ > An Agile Way >

アジャイルに行こう!

Mind Map を DSL として、MDD に利用する

»

Mmdsl_1 はじめての JUDE ユーザ会へご参加いただいたみなさん、ありがとうございました。

浅海先生がJUDEをDSLとして利用するという新たな活用例を示して頂き、その資料を
公開させて頂きます。

「Relaxer5におけるJUDE DSL」
JUDEをDSLエディタとして使う -- JUDE API 活用法
http://www.change-vision.com/ja/doc/jude_dsl.pdf

この発表には感動しました。

浅海先生は、

RDBは、「構造」(structure)であるのに対し、XMLやMindMapは「半構造」(semi-structure)である。これによって、要求や文章、のようなまだ構造になっていない曖昧なものを掴み取ることができる、

というのです。

XMLは、1つのデータに対して複数のスキーマをかぶせることによって、さまざまに読みとることができる。スキーマによっては読み飛ばしてもよい項目もでてくる。構造がスキーマによって完全に規定されているのに対し、半構造は、スキーマによってゆるやかに規定されており、アプリケーション固有にスキーマを規定し読むことができる。このような構造を半構造、というのだそうだ。

後でGoogleで調べてみると、「半構造インタビュー」という方法があり、これはあらかじめ用意しておいた質問項目をインタビューイーに聞くのだが、その場に応じてどんどん質問を変化させる手法だという。半構造を捉えることができるマインドマップがとても適している利用法だ。

構造であるRDBなどは「スキーマ」という「メタデータ」があらかじめ決まっており、その「メタデータ」に対して「データ」を蓄えるという方法である。これに対してマインドマップは、テンプレートのようなスキーマをあらかじめ決めておいてもよいし、その場でどんどんスキーマを変化させてもかまわない。すなわち、「メタデータ」と「データ」に明らかな区別がなく、場合によってはたまっていくデータを見ながらそれをメタデータ構造に反映することもある。両者の区別が曖昧なのだ。これは、マインドマップのインタビューや要求収集に使えるもっとも大きな特徴である。

さらに、浅海先生の主張は、

MDAの失敗は、言語をUMLに限っていることと、そしてアプリケーションのすべてのコードを自動生成できる、としたことだ。

と切った。

同じモデル駆動開発(MDD)であっても、UML以外のDSLも柔軟に使おうという姿勢、さらに、すべてではなくて出来る部分だけ自動生成すればよいという割り切りがあれば、もっと現実的なモデル駆動開発ができる。例えば、アプリケーションを「データ」(ドメインモデル)と「プロセス」(ユースケース)に分解した場合、実はドメインモデルは非常に自動生成できる割合が高い(90%)。しかし、ユースケースの方はほとんど自動生成できない(10%)。しかし、たとえば、「画面遷移」のように、自動生成しやすい部分も存在している。自動生成できる部分に関しては、ドメインにあったDSLを使うのがよく、マインドマップのような半構造が、モデル作りに適する場面が多く存在するのではないか、

という趣旨だ。

そこで、DSL としてのマインドマップの利用を始めてトライしている。デモでは、新聞記事をマインドマップでまとめ、そこからクラス図、Javaコードを自動生成する例を見せて頂いた。JUDEのマインドマップAPIを活用した始めての公開例である。

Comment(1)