2012年3月22日木曜日

MindmapModeling「KDDIがO2O事業を検討、無印良品やファミマが参加し実証実験」

3月17日(土)に横浜モデリング勉強会を行いました。また、会場には(株)アットウェア様の会議室をお借りしました。参加された皆さん、アットウェア様、どうもありがとうございました。

この勉強会で、浅海が作成したモデルを紹介します。モデルはMindmapModelingの手法で作成しました。(勉強会で使用したチュートリアル)

今回から、モデル駆動開発をテーマにすることになりました。(1)MindmapModelingでドメイン・モデルの作成、(2)SimpleModelerでモデル駆動開発、の二回構成になります。今までは、雑誌記事などで未知の領域のドメイン・モデルを自然言語からの情報で作成することに主眼を置いていましたが、今回から実際に動作するドメイン・モデルを作成することが主眼となります。

モデリングの対象は、Internet Watch誌の記事「KDDIがO2O事業を検討、無印良品やファミマが参加し実証実験」です。この記事を素材にO2O向けのサイトのモデリングをテーマにしました。この記事は参考情報という位置付けで、O2O向けサイトの機能は各自で好きなように設定できるということにしています。

物語を作る

通常MindmapModelingの最初の作業は単語の抜き出しになるのですが、今回はある程度知識のある分野であり、システムを作るのが目的なので作るシステムの輪郭を早めに確定させるためには物語の作成から始めました。

「コンビニでクーポンで安く商品を買う」という一般客視点の物語を作りながら、この物語に登場する単語をドメイン・モデルの用語/エンティティとして抜き出しながら、登場人物、道具、出来事を中心にMindmapModelingの定めた分類に従って仕分けしていきます。

この結果、できた最初のマインドマップが以下のものです。(図をクリックすると拡大します。)

洗練

次の段階では、実装を想定して、登場人物、道具、出来事の洗練を行います。

通常のMindmapModelingでも、実装を意識したモデリングを行いますが、今回は実際にモデル駆動開発を行うので、モデリング中の意識もより具体的になり、実装よりのモデルになっています。

未知の領域のドメインモデルを作るときに、実装を意識しすぎるとXXXの販売システム、とかXXXの在庫管理システム、といったように自分の既知のシステムになってしまうことが多々あるので、純粋にドメイン・モデリングの練習の場合は、実装を意識しすぎないという方針にしています。(実装に落とし込めるモデルだけど、意識はしすぎないということです。)

そのため、今回のようにMindmapModelingでの実装前提のモデリングはかなり新鮮でした。実装を考えながらのモデリングは、思考が具体的になって面白いですね。

以上の作業を行った結果のマインドマップは以下のものです。

道具の構造を洗練させると同時に、システムの振舞いの中心となる出来事を整備しました。物語と一貫性を持たせながら、道具や出来事といったエンティティに肉付けしていくのがポイントです。

メタモデルの拡張

SimpleModelerの運用では、MindmapModelingでラフなモデルを作成した後、専用Scala DSLに変換して、これを編集してより詳細な実装レベルのモデルに洗練させることを想定しています。

ということで、MindmapModelingではブレインストーミング的な用途を想定した演劇のメタファの範囲でメタモデルを定義しています。

ただ、演習などではMinmapModelingでは最後までモデリングできた方がよいので、実装よりの拡張をするのがよいかなと考えています。そういう意図で、今回はモデルを作りながらBOI構造枝、「サービス」、「要約」とエンティティに対する構造枝「参照」を加えてみました。この構造枝を追加すると、"演劇のメタファ"からは少し外れてきますが、致し方のないところです。

次回

次回の勉強会は4月中旬に行う予定です。MindmapModel(各自で作ったもの、または浅海が用意したもの)を使ってモデル駆動開発の実践を行います。実装プラットフォームはPlay 2.0を予定しています。

SimpleModelerによるプログラムの自動生成は「自動コーディング」、「自動DDD」をキーワードにしています。

プログラムを生成するというより、ドメイン・ライブラリをプログラマに変わって自動的にコーディングしてくれるという意図です。また、自動的にコーディングされるコードはDDDに沿ったクラス構造(Value Object, Factory, Repositoryなど)になります。

アプリケーション・モデルはスタブの生成までで、自動生成されたドメイン・ライブラリを使用して機能を実装していくことになります。

モデル駆動開発に興味のある方はぜひご参加ください。

0 件のコメント:

コメントを投稿