Upload
akira-tanaka
View
930
Download
3
Embed Size (px)
DESCRIPTION
2012年12月7日のEclipse Modeling勉強会で「DSLについて」として発表した内容です。
Citation preview
Graphical/Textual DSLs (Xtext と GMF を例として)
日本Xtextユーザ会
DSLの定義
• Domain-Specific Languages (DSLs) の定義は Martin Fowler さんの本では次のようになっています – “a computer programming language of limited
expressiveness focused on a particular domain”
DSLの分類
• Internal (or embedded) と External – ホストとなるプログラミング言語を持つものが
Internal (or embedded) DSLs – ホストとなるプログラミング言語を持たないものが
External DSLs
• Graphical と Textual – モデルを図式表現するのが Graphical DSLs – モデルをテキスト表現するのが Textual DSLs
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
GMF
• ダッシュボード
GMF
• ダッシュボード
普通の人なら くじけ出す領域
GMF で実現できるエディタ例
Graphical Modeling Framework/Tutorial/Part 4 より
そのための Ecore モデル
Graphical Modeling Framework/Tutorial/Part 1 より引用
Tutorial
• ・・・・ にしては難しすぎる Ecore モデル
• そこで、極端に簡単な例に変更
GMF で実現できるエディタ例
そのための Ecore モデル
Graphical DSL Editor
• ダイアグラムは Node と Link から構成される • 通常 Node には種類がある • 通常 Link は Node 間を結び種類がある • 「Node と Link」 のダイアグラムは、先の最低限 Ecore モデルをベースに作成できる – 後はカスタマイズや制約追加など
Textual DSL in Eclipse
• Xtext は Eclipse 環境で Textual DSL を作成するためのフレームワーク
• http://www.eclipse.org/Xtext/ • 現在は Textual Modeling Framework に所属
– GMFで扱ったNetworkをXtextで記述すると ・・・
Xtext
EBNF的な文法定義
Xtext
Xtext
• Xtend言語 – Xtextとセットになっている言語 – DSLで書いたモデルが処理の対象 – Javaソースコードを生成可能
この段階では同じレベル
この段階でも同じレベル
違うのは • Ecore モデルのグラフィカル要素有無 • Tooling
– GMF • 直観的で分かり易いグラフィカルエディタとなる • ツール習得時間が長く、グラフィカルエディタ作成に必要な手数が多い • コード生成は別途
– Xtext • シンプルで一見テキストエディタ(コード補完など有) • ツール習得時間が長い • コード生成にはXtend
• 振る舞い記述 – プロセス記述的なものはグラフィカル記述が優位か?
• Scale – 要素数が多くなったときに扱い易いのはどちら?(テキスト型?)
改善に向けての努力 • 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
DSLが必要になった時
• 選択肢 – UML Profile
• オープン:Papyrusなど • 商用UMLツール
– Graphical DSL • オープン:GMFなど • 商用グラフィカルDSLツール
– Textual DSL • オープン:Xtext • 商用テキスト型DSLツール
EuGENia
• 余りカバーされていない EuGENia • 特長
– Ecore モデルを テキスト型言語 Emfatic で表現しアノテーションを追加するだけで GMF のダイアグラムエディタを生成
– 実現・機能範囲は限定的 • 実験的・プロトタイプ的に使うのであれば十分
EuGENia
• 手順 – Epsilonパッケージのインストール – GMFプロジェクトの作成 – Ecore Toolsを用いてEcoreモデルを作成 – コンテキストメニューでEmfatic形式に変換 – アノテーション追記 – コンテキストメニューでモデルエディタ生成
プロセスモデル記述例
ほぼ Node と Link だけ
モデルが出来たら
• ソフトウェア開発プロセスの成果物として利用 – M2M – M2T
• いろいろなツールがありますが、最後の手段として XSLT を使う手もあります。
• 次のお話へ続く!