2010年8月31日火曜日

現在の活動

8月も今日で終わり。今年も2/3に、今年度も半分に近づきつつあり、おおむね半分が過ぎたというところで活動の内容をまとめておくことにした。
現在行っている活動は大きくまとめると以下の3つである。

  • SimpleModeling - クラウドアプリケーション向けのメタモデル
  • SimpleModeler - SimpleModeling用のScala DSLモデルコンパイラ
  • g3フレームワーク - メッセージフローフレームワーク



元々SimpleModelingは、wakhok時代に教育用に整備したオブジェクトモデリング手法で、『上流工程UMLモデリング』や『マインドマップではじめるモデリング講座』という形で本にまとめることができた。従来型のオブジェクトモデリングをベースにwakhokで得られた知見などをもとに拡張している。

SimpleModelingのもう一つの大きな目的はモデル駆動開発で使用できるオブジェクトモデルのプロファイルである。DSLで記述することができ、かつプログラムに落としこむことができることを念頭にメタモデルを定めている。

このSimpleModeling用のモデルコンパイラとして開発したのがSimpleModelerである。
SimpleModelerはScalaをDSLのホスト言語として使用しており、SimpleModeler自身もScalaで開発している。
SimpleModelerでは、Scala DSLから仕様書とプログラムを生成する。仕様書はクラス図や状態機械図、状態遷移表を埋め込んだHTMLを生成することができる。

SimpleModelingとSimpleModelerが一通り目処がついたところで、クラウドがそろそろ来そうという感触を得たのが一昨年の秋。SimpleModelerでGoogle App Engine/Python用のコード生成が動き始めた頃、Google App Engine/Javaが公開された。
それ以降はGoogle App Engine/Java向けのコード生成を中心にSimpleModelerの開発を進めている。

Google App Engineを一通り経験した後、SimpleModelingをクラウド向けに拡張する本格的に開始したのが昨年の夏、秋。11月にはMicrosoftのPDCに参加させてもらってAzureの技術に刺激を受けた。

クラウド向けの拡張項目についてはいずれブログでも説明する予定だけど、今の所(1)ドメインモデルの拡張(2)メッセージフローの導入の2点。

アプリケーションの振舞いモデルを主にメッセージフローで記述してみようというアプローチなんだけど、このアプローチを取るためには現在利用できるクラウド・プラットフォームとは距離がありすぎる。

そこで、この距離を埋めるために開発を始めたのがメッセージフローフレームワークであるg3フレームワークである。g3フレームワークの開発は今年に入ってから。
g3フレームワークはScala DSLで記述したメッセージフローを実行する。

最近は、このg3フレームワーク上でメッセージフローモデルとドメインモデルを連携させるための仕組みづくりの開発を行っている。

以上の3つの活動はそれぞれ面白い論点があるので、ブログで順にまとめていきたいと思っている。