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