Jude を DSL エディタとして使う -Jude API 活用法 - 2006 年 11 月 14 日稚内北星学園大学東京サテライト校浅海智晴 本日のテーマ Why Jude API What Jude API How Jude API 1
技術トレンド テクノロジとしての Web 2.0 Web がプラットフォームになる シン クライアントからリッチ クライアントへ Web の単純な UI では限界 メイン フレーム クライアント サーバ システムもそろそろ限界 オブジェクトからコンポーネントへ 開発の主役となるモデル要素がより上位のコンポーネントに移行 プログラミングからメタ プログラミングへ ツールによる自動 フレームワークによる自動 手続き から 宣言 へ 次世代ソフトウェア開発 問題空間 解決空間 J2EE 1.4 物理モデル (PSM) ドメイン モデル 90% 器 エンタープライズ システム論理モデル (PIM) 50% 器 Struts+Spring+ Hibernate 物理モデル (PSM) JEE 5 物理モデル (PSM) テクノロジとしての Web 2.0 シン クライアントからリッチ クライアントへ ユースケース モデル 20% 器??? 物理モデル (PSM) プログラミングからメタ プログラミングへ オブジェクトからコンポーネントへ 2
MDA と MDD/MDE MDA(Model Driven Architecture) OMG によるモデル駆動の体系 モデルは UML(+α) のみで記述 アプリケーション全体を MDD(Model Driven Development) MDE(Model Driven Engineering) いずれも最近よく聞く用語 MDA は OMG の技術 モデル駆動をより広い範囲でとらえた技術体系を指向 モデルは DSL で記述 ( してもよい ) アプリケーションの一部を ( してもよい ) DSL とは Domain Specific Language ドメインの範囲の中で ドメインに適した方法で ドメインのモデルを記述するための言語 DSLのドメインとは いわゆる問題領域の概念モデルだけを指すのではなく 用途ごとに定めた領域を指す たとえば XMLのスキーマや画面設計といった技術領域もドメイン汎用言語 (e.g. UML) との相違点 : 効率的に記述できる : プログラムの自動と直結 : 記述できる範囲が限定される : 用途ごとに言語を選択しなければならない 3
DSL による自動 分析設計実装 DSL 自動 コンポーネント OO 分析 OO 設計 OO 実装 コンポーネント DSL 自動 コンポーネント DSL 自動 コンポーネント OO 分析 OO 設計 OO 実装 コンポーネント Jude UML 1.5 対応の UML エディタ UML の基本機能を網羅 UML 2.0 に対応中 軽くて使いやすい 気軽に文房具として利用できる マインド マップ UML の弱点を補う 4
Jude API Jude のモデルを プログラムから操作するための API 現在は参照のみ Jude の配布物に含まれる jude-api.jar を使用 Jude 本体の jude-pro.jar(jude- Professional の場合 ) を併用 Jude API の理由 Jude を DSL エディタとして利用することができる Jude の操作性 使いやすい Jude メタモデル シンプル 本当の UML メタ モデルは操作が大変 マインド マップ UML と相互補完 構造 (UML) 半構造 ( マインド マップ ) 5
マインド マップ 構造と半構造 構造 スキーマによって完全に規定されている構造 データ構造固有のスキーマがアプリケーションを規定する 例 :RDBMS UML 半構造 スキーマによって緩やかに規定されている構造 アプリケーション固有のスキーマをデータ構造に適用する 例 :XML マインド マップマインド マップ 木構造による情報表現 人間の認知モデルと相性のよい表現形式を持っている 現状はアイデア プロセッサ的な利用方法 半構造データとして考えるとデータとしての応用が期待できるはず マインド マップと XML XML に期待されていた応用の中で 半構造データによる知識表現はマインド マップが適している 構造化されていない知識を緩やかな構造として表現する 効率的に半構造データを編集するためのエディタ 6
Mindmap Modeling 出来事 規則 脚本 メモ 種類 部品 テーマ 登場人物 道具 配役 出来事 パレット 役割 登場人物 道具 Mindmap Modeling の例 7
Mindmap Modeling から手作業で作成したクラス図 Relaxer5 セマンティクスは UMLのサブセット+α 利用する範囲を絞り込みステレオタイプとタグ付き値を使って拡張ノーテーションはクラス図 マインドマップなど応用に応じて選択 モデルの精密度 編集の容易さ 視認性のよさ Relaxer5 Domain-Object MetaModel Excel DSL Semantics Notation Mindmap DSL Relaxer5 Domain-Object Extension XML DSL UML Subset UML DSL DSL 8
Relaxer5 からの展開 Relaxer5 Domain Object Model Jude Class DSL Beans Mindmap DSL 同期 EE Entity Bean DSL Relaxer5 Framework 同期 Interface SmartCase5 用語集 ユースケースモデル EE Session Bean (Interface) Relaxer5 Framework Component Model (Specification) Jude Class DSL Jude Class 図を DSL として使う ステレオ タイプでクラスの種類を指定 <<DomainObject>> <<actor>> 顧客 + 顧客 ID : 顧客 ID + 顧客名 : String <<DomainObject>> <<event>> 注文 + 注文 ID : 注文 ID + 注文日時 : datetime 1..* <<DomainObject>> <<event>> <<part>> 注文明細 + 注文番号 : int <<DomainObject>> <<resource>> 商品 + 商品 ID : 商品 ID + 商品名 : String 9
Jude Mindmap DSL マインド マップを DSLとして使う半構造データのモデル化 半構造を表現するための 枝 ( 構造枝と呼んでいる ) を用意 半構造のスキーマを用意 登場人物 顧客 部品 出来事 顧客 ID 顧客名 注文 顧客注文商品 道具 商品 部品 商品 ID 商品名 注文 ID 出来事 注文 部品 注文明細 * 部品 商品 デモ Relaxer5 から Beans を Relaxer5 Domain Object Model Jude Class DSL Beans Mindmap DSL 同期 EE Entity Bean Relaxer5 から用語集を 同期 DSL Relaxer5 Framework Interface SmartCase5 用語集 ユースケースモデル EE Session Bean (Interface) Relaxer5 Framework Component Model (Specification) 10
Jude に対する要望 Jude API の拡張 モデルの更新 対象モデルの拡大 用途向けカスタマイズの充実 プロジェクトの雛形 モデル構成 ステレオタイプ マインド マップ マインド マップの半構造スキーマを使用したノード機能 Mindmap Modeling の例では 種類ノード の挿入 で 枠つき アイコンつきのノードが挿入されるとうれしい 11