モデルコンパイラSimpleModeler 0.4.0-RC4をリリースしました。
これは、11月17日に開催した横浜モデリング勉強会の前後に拡張した機能をまとめたものです。
マインドマップ(XMind)、SmartDox DSL、CSVからクラス図とJavaプログラムを生成する機能が実用フェーズとなっています。
また、扱えるメタモデルにいくつか拡張を行いました。ブログで紹介していく予定です。
0.4.0正式版はバグフィックスおよび新機能の動作確認が取れた後リリース予定です。
機能
Simplemodeler 0.4.0-RC4では以下のオプションを提供しています。
オプション | 機能 | 状況 |
---|---|---|
project | プロジェクト生成 | α |
import | モデル移入 | α |
convert | モデル変換 | 試験的 |
html | 仕様書生成 | α |
java | Java生成 | |
android | Android生成 | α |
diagram | クラス図生成 | |
build | プロジェクトビルド | 試験的 |
gaej | Google App Engine Java生成 | 試験的 |
gae | Google App Engine Python生成 | 試験的 |
gaeo | Google App Engine Oil生成 | 削除予定 |
grails | Grails生成 | 試験的 |
g3 | g3生成 | 試験的 |
asakusa | Asakusa生成 | 試験的 |
基本的にはマインドマップ(XMind)、SmartDox DSLとCSVからクラス図とJavaプログラムを生成する処理が実用フェーズになっています。その他の機能はα版または試験的実装の状態です。
インストール
プログラムの配布は、Scala用のプログラム配布ツールconscriptを使っています。
conscriptをインストールした後、以下のようにしてSimpleModelerをインストールします。
$ cs asami/simplemodeler
以下のコマンドがインストールされます。
- sm
- SimpleModelerコマンド
$ sm -version
Copyright(c) 2008-2012 ASAMI, Tomoharu. All rights reserved.
SimpleModeler Version 0.4.0-RC4 (20121121)
graphviz
-diagramオプションでクラス図を生成する場合は、graphvizのインストールが必要です。graphvizのインストール方法は以下を参照してください。
各プラットフォーム向けパッケージ管理ツールでもインストールできるようです。
使い方
マニュアルはまだありません。以前のバージョン用のものがありますが、機能が色々変わってしまったので一から見直す予定です。
リファレンスマニュアルとユーザーガイドの元ネタをこのブログで随時書いていきます。
CSV
Mind(マインドマップ)、SmartDox DSL、CSVからクラス図を生成することができます。
以下のCSVファイルをsample.csvとして用意します。
#actor,base
顧客
個人顧客,顧客
法人顧客,顧客
#resource,attrs,powers
商品,商品名;定価(long),商品区分(第1類;第2類;第3類)
#event,parts
購入する,顧客;商品
SimpleModelerを以下のように実行します。
$ sm -diagram sample.csv
以下のクラス図の画像が生成されます。

SmartDox
以下のSmartDoxファイルをsample.orgとして用意します。
#+title: Table
SmartDox DSLを使って記述したモデルの
サンプル文書です。
文書でサンプルモデルの定義をします。
本来は文書中の仕様記述の文書は
定義するモデルに対するものになります。
しかし、この文書ではSmartDox DSLの記述例として
SmartDox DSL文法の説明を記述することにします。
* サンプル文書の目的
このサンプル文書は表を中心にしてクラス定義するサンプルです。
登場人物、道具、出来事の各エンティティの種別の下に
顧客、商品、購入といった具象エンティティを節として
定義します。
そして、それらの節の下に属性一覧または特性一覧として
エンティティの属性や関連を記述していきます。
* 登場人物
** 顧客
IDの指定はありませんが、以下のルールで推測しています。
- 陽にID指定がない場合、先頭の属性の属性名が「id」(大文字可)で終わる場合はIDとみなす。
#+caption: 属性一覧
| 名前 | 型 | カラム | SQL型 |
|--------+--------+---------+--------------|
| 顧客ID | token | ID | CHAR(16) |
| 名前 | token | NAME | VARCHAR(64) |
| 住所 | string | ADDRESS | VARCHAR(256) |
* 道具
** 商品
IDは、ID欄で指定しています。
#+caption: 属性一覧
| 名前 | 型 | ID | カラム | SQL型 |
|--------+-------+----+--------+-------------|
| 商品ID | token | ○ | ID | CHAR(16) |
| 名前 | token | | NAME | VARCHAR(32) |
| 定価 | money | | PRICE | LONG |
* 出来事
** 購入
IDは、特性欄で指定しています。
#+caption: 特性一覧
| 特性 | 名前 | 型 | 多重度 | 派生 | カラム | SQL型 |
|------+--------+-------+--------+-------------+-------------+----------|
| ID | 購入ID | token | | | ID | CHAR(16) |
| 属性 | 日付 | date | | | DATE | DATE |
| 関連 | 顧客 | 顧客 | 1 | | CUSTOMER_ID | CHAR(16) |
| 属性 | 顧客名 | token | | 顧客.名前 | | |
| 関連 | 商品 | 商品 | 1 | | GOOD_ID | CHAR(16) |
| 属性 | 数量 | int | | | AMOUNT | INT |
| 属性 | 商品名 | token | | 商品.名前 | | |
| 属性 | 単価 | money | | 商品.定価 | | |
| 属性 | 総額 | money | | 数量 * 単価 | | |
SimpleModelerを以下のように実行します。
$ sm -diagram sample.org
以下のクラス図の画像が生成されます。
