Contenu connexe Similaire à Eclipse modeling 勉強会 dslについて (20) Plus de Akira Tanaka (19) Eclipse modeling 勉強会 dslについて2. DSLの定義
• Domain-Specific Languages (DSLs) の定義は
Martin Fowler さんの本では次のようになって
います
– “a computer programming language of limited
expressiveness focused on a particular domain”
3. DSLの分類
• Internal (or embedded) と External
– ホストとなるプログラミング言語を持つものが
Internal (or embedded) DSLs
– ホストとなるプログラミング言語を持たないものが
External DSLs
• Graphical と Textual
– モデルを図式表現するのが Graphical DSLs
– モデルをテキスト表現するのが Textual DSLs
4. Graphical DSL in Eclipse
• Graphical Modeling Framework (GMF) は
Eclipse 環境で Graphical DSL を作成するため
のフレームワーク
• 現在は Graphical Modeling Project (GMP) に
所属
– Graphical Modeling Framework (GMF) Notation
– Graphical Modeling Framework (GMF) Runtime
– Graphical Modeling Framework (GMF) Tooling
– Graphiti
6. GMF 普通の人なら
くじけ出す領域
• ダッシュボード
12. Graphical DSL Editor
• ダイアグラムは Node と Link から構成される
• 通常 Node には種類がある
• 通常 Link は Node 間を結び種類がある
• 「Node と Link」 のダイアグラムは、先の最低
限 Ecore モデルをベースに作成できる
– 後はカスタマイズや制約追加など
13. Textual DSL in Eclipse
• Xtext は Eclipse 環境で Textual DSL を作成す
るためのフレームワーク
• http://www.eclipse.org/Xtext/
• 現在は Textual Modeling Framework に所属
– GMFで扱ったNetworkをXtextで記述すると ・・・
19. 違うのは
• Ecore モデルのグラフィカル要素有無
• Tooling
– GMF
• 直観的で分かり易いグラフィカルエディタとなる
• ツール習得時間が長く、グラフィカルエディタ作成に必要な手数が多い
• コード生成は別途
– Xtext
• シンプルで一見テキストエディタ(コード補完など有)
• ツール習得時間が長い
• コード生成にはXtend
• 振る舞い記述
– プロセス記述的なものはグラフィカル記述が優位か?
• Scale
– 要素数が多くなったときに扱い易いのはどちら?(テキスト型?)
20. 改善に向けての努力
• Xtext
– 以前よりテキスト型モデルをダイアグラムに変換する
努力が続けられている
– A fresh look at graphical editing @ eclipsecon 2012
(http://www.slideshare.net/schwurbel/a-fresh-look-
at-graphical-editing-12183802)
– GMFに近づけるアプローチやモデルの可視化を目指
すアプローチなどある
• GMF
– 以前よりGMF簡略化・より良いGMFへの努力が続け
られている
– 例: Graphiti, EuGENia/Epsilon
21. DSLが必要になった時
• 選択肢
– UML Profile
• オープン:Papyrusなど
• 商用UMLツール
– Graphical DSL
• オープン:GMFなど
• 商用グラフィカルDSLツール
– Textual DSL
• オープン:Xtext
• 商用テキスト型DSLツール
23. EuGENia
• 手順
– Epsilonパッケージのインストール
– GMFプロジェクトの作成
– Ecore Toolsを用いてEcoreモデルを作成
– コンテキストメニューでEmfatic形式に変換
– アノテーション追記
– コンテキストメニューでモデルエディタ生成