2008年11月7日金曜日

実現したい機能

SimpleModelerを実現するための基礎工事が一定の地点まで到達し、基本機能の疎通もできたので0.1としてリリースしました。
現在できるのはSimpleModelのドメイン・モデルからJavaクラスとWeb仕様書の生成です。
ただ、JavaクラスはPOJOレベルの単純なものなので、Factory機能や永続化などの機能の自動生成まで行うことを予定しています。『Domain Driven Design』の技術はかなりパターン化されているので、これを自動生成するのが目標です。
Web仕様書は、DSL(Domain Specific Language)で記述したことをYUI(Yahoo UI)を使ってきれいに表示できるようにしたレベルです。ただし、オブジェクトが誰にどのように利用されているのかという情報を「参加」という項目で記述しています。
単に、DSLに記述したことを字句上で変換するだけではなくて、モデルの内容を解析したうえで、プログラマが関心をもつ色々な切り口の情報を記述していくのが目標です。たとえば、ユースケースを実行するとイベントの発生やリソースの状態遷移が起こりますが、逆にイベントやリソースの立場では、どのユースケースに参加する時に自分が生成されたり、状態が変えられたりするのかという点を知りたくなります。こういった情報をツールで抽出することがSimpleModelerに持たせたい機能の一つです。

2008年11月5日水曜日

SimpleModeler 0.1

SimpleModelerは、ScalaベースのDSLで記述したSimpleModelingのモデル体系であるSimpleModelからJavaプログラムや仕様書を生成するためのモデル・コンパイラです。
開発も端緒についたばかりで、実用に利用するにはまだまだ機能不足ですが、最初の第一歩ということで公開します。

SimpleModelerのホームページは以下のURLです。


SimpleModeler 0.1は以下のページからダウンロードできます。ソースコードはSubversionからチェックアウトすることができます。


[セットアップ方法]

上記のURLからsimplemodeler-0.1-setup.jarをダウンロードします。
このインストールプログラムを以下のように起動します。
$ java -jar simplemodeler-0.1-setup.jar 

インストールディレクトリを聞いてきますので入力します。 デフォルト値で良い場合にはそのままリターンを押下します。

Install directory [default: C:\usr\local\lib\simplemodeler]:  

コマンドスクリプトのインストールディレクトリを聞いてきますので入力しま す。 デフォルト値で良い場合にはそのままリターンを押下します。 このディレクトリには実行パスが通っている必要があります。(インストール 後に設定しても可)

Command directory [default: C:\usr\local\bin]:  

以下のように設定の確認をしてくるので良ければ"yes"を入力しま す。

[Configuration] Install directory = c:\usr\local\lib\simplemodeler Command directory = c:\usr\local\bin  Type yes to install, no to re-enter, exit to exit Type yes:  

以下のようにインストールが実行されます。

この例はWindows上での実行例でCommand.com用のBATファイルとCygwin用のシェ ルスクリプトが生成されています。

Extract archives... Generate script...   script = c:\usr\local\bin\simplemodeler.bat   script = c:\usr\local\bin\simplemodeler Done. 

UNIXの場合には、生成されたスクリプトに実行権がついている必要があります。 chmodコマンドを使って実行権を付加してください。

これでインストールは終了です。 スクリプトのインストールディレクトリにパスが通っていればすぐにでも実行 を行なうことができます。

以下のように実行できればインストール完了です。

$ simplemodeler -version Copyright(c) 2008 ASAMI, Tomoharu. All rights reserved. SimpleModeler Version 0.1 (20081105) 

examples/com.yorozuにサンプルがあるので参照してください。