2012年10月3日水曜日

MindmapModelingと集合知(2) - ユビキタス言語

前回は「マインドマップとDSL駆動開発」としてボクが作っているマインドマップモデリング、SimpleModeling、SimpleModelerと日本語、モデル、プログラムの関係を図で示しました。



ここで問題になるのが日本語の世界、モデル、プログラムという異なった枠組み間をどのようにつないでいくのかという点です。

ここで登場するのがオブジェクト指向技術です。

オブジェクト指向は、再上流の概念モデルから実装を意識した分析モデル、設計モデル、そしてオブジェクト指向プログラミングまで、同じコンセプトで一気通貫しているのが最大の主張点ですから、これを利用しない手はありません。

このコンセプトに適切な名前をつけてパターン化したものが、DDD(Domain-Driven Design)のユビキタス言語(Ubiquitous Language)です。

図にユビキタス言語を追加したものが以下になります。



日本語、モデル、プログラムの共通部分をユビキタス言語としてモデル化して、連携の土台とします。

ユビキタス言語の実現

ユビキタス言語の実現を行うためには、日本語、モデル、プログラムで共通化するモデルの部品を明確にしなければなりません。これはオブジェクト指向技術として大枠は決まっているのでそれを使用します。

  • 名前
  • 属性
  • 名前間の関係
    • 汎化 (is-kind-of)
    • 構成 (is-composed-of)

また、一般的な業務アプリケーションではオブジェクトのモデル上の役割によって実現方法が異なってくるので、そういった点をユビキタス言語に取り入れておくと共通モデル化の精度が上がってきます。

マインドマップモデリングはこの方針に則って以下のモデル上の役割(stereotype)を定義しています。

  • 登場人物 (actor)
  • 道具 (resource)
  • 出来事 (event)
  • 役割 (role)
  • 物語 (business use case)
  • 規則 (business rule)

モデル上の役割の名前からも分かるように、マインドマップモデリングは演劇のメタファを採用しています。このことによって、構築するモデルの動作イメージを簡単に伝えられるようにしています。またソフトウェア開発の経験がない人にも比較的簡単に理解してもらえるのではないかと思います。顧客とのブレインストーミングやモデリング初学者への教育といった用途にも利用することができます。

集合知とユビキタス言語

今回の「クラウド時代の集合知」のセッションでは、オブジェクト指向の重要なコンセプト(をDDDで形式知化したもの)であるユビキタス言語が、集合知の実現技術に何らかのヒントにならないかといったところが論点になればよいなと考えています。

集合知の実現方法としてはオントロジーを使った汎用的な知識モデルをベースにするのが王道と思いますが、実装とリンクした知識の表現方法としてユビキタス言語を評価してみると、何か面白いアプローチが見えてくるかもしれません。

0 件のコメント:

コメントを投稿