はじめに
Eclipse 3.2のリリースに合わせて、Eclipse FoundationではEclpse GMF(Graphical Modeling Framework)というツールをリリースします。今回はこのGMFを使ってモデリングツールを作成する方法を紹介します。まだEclipse 3.2、GMF共にリリースされたばかりで実開発ではまだまだ利用されていない現状ではありますが、こんなツールもあるんだなと思っていただければ幸いです。
対象読者
MDA(モデル駆動アーキテクチャ)、DSL(ドメイン特化言語)と言ったキーワードに関心のある方をターゲットにしています。また、そういった小難しい概念を知らずともモデリングツールを自作したいといった方にも有益な情報かと思います。
必要な環境
- Eclipse 3.2
- Eclipse GMF 1.0
Graphical Modeling Framework
「GMF」は、UMLモデリングツールやE-R図のようなツールを簡単に作るためのフレームワークです。簡単というのは、ほとんどコーディングをすることなく、モデリングツールを自動生成できることです。本稿では、エディタ生成がいかに簡単かについて実証していきたいと思います。
インストール
まずは、Eclipse 3.2をダウンロードします。ダウンロードしたEclipseを展開し、実行してください。Eclipseが起動したら、[Help]-[Software Updates]-[Find and Install]を実行して、GMFのダウンロードとインストールを行います。[Search for new features to install]を選択し、更新画面が開いたら[Callisto Discovery Site]を選択して[Models and Model Development]のカテゴリ内にある[Graphical Modeling Framework]をチェックしてください。このとき、[Select Required]をクリックするとGMFが依存するプラグインも同時にインストールされます。
はじめてのGMF
インストールが完了したら、早速GMFを試してみましょう。添付ファイルのサンプルGMFプロジェクトをプロジェクトとしてインポートしてください。下図のようなディレクトリ構成になっているかと思います。

ここで、次の作業を行ってください。
- 「statechart.genmodel」ファイルを開いてルートノードを右クリック
- [Generate All]を選択
- 「statechart.gmfgen」ファイルを選択して右クリック
- [Generate diagram code]を選択

これで状態遷移図を記述できるエディタが完成しました。後はEclipse Applicationとして実行して状態遷移図エディタを試してください。[New]-[Example]-[Statechart Diagram]で状態遷移図を生成、編集することができます。

状態遷移図の機能
自動生成された状態遷移図は次のモデルを記述することができます。
モデル名 | 説明 | 子要素 |
ステートチャート | 状態遷移図自体を表現する | ステート、コンポジットステート |
ステート | 状態を表す状態は次の状態に遷移できる | 入場アクション、退場アクション |
コンポジットステート | 子要素としてステートを持つことができる状態 | 入場アクション、退場アクション、ステート |
開始ステート | 状態遷移の開始を表す | - |
アクション | 状態に入場、または退場した場合に実行されるアクションを表現する | ステートメント |
イベント遷移 | イベントによる状態の遷移を表現する | - |
条件付き遷移 | ある条件に合致した場合の状態の遷移を表現する | - |
ステートメント | アクションの内容を表現する。変数の宣言であるvar、条件分岐であるif、変数の割り当てであるassignといった種類がある。 | ステートメント |
これらの状態遷移図を構成する要素は、特に規定されているものではなく、私の独断と偏見によって決めたものです。GMFを利用する場合、このように「何を編集したいのか」を自由に定義することができます。
また、GMFによって自動生成されたエディタは次の機能を持ちます。
- アンドゥ、リドゥのサポート
- ズーム機能(ズームイン、ズームアウト、指定値ズーム)のサポート
- イメージへのエクスポート(BMP、JPG、GIF、PNG、SVG)
- 高機能な印刷のサポート(ページ区切り、用紙サイズ、余白の設定)
- ノードの自動レイアウト
- ポップアップによる要素作成ヘルパー
- ルーラー、グリッドサポート
- フォント、カラー変更機能
- 直角線、ベジェ曲線によるコネクタ
通常のGEFで作るエディタの機能に加えて、GMFオリジナルの機能が数多く追加されます。