25
Graphical/Textual DSLs (Xtext GMF を例として) 田中明 [email protected] 日本Xtextユーザ会

Eclipse modeling 勉強会 dslについて

Embed Size (px)

DESCRIPTION

2012年12月7日のEclipse Modeling勉強会で「DSLについて」として発表した内容です。

Citation preview

Page 1: Eclipse modeling 勉強会 dslについて

Graphical/Textual DSLs (Xtext と GMF を例として)

田中明 [email protected]

日本Xtextユーザ会

Page 2: Eclipse modeling 勉強会 dslについて

DSLの定義

• Domain-Specific Languages (DSLs) の定義は Martin Fowler さんの本では次のようになっています – “a computer programming language of limited

expressiveness focused on a particular domain”

Page 3: Eclipse modeling 勉強会 dslについて

DSLの分類

• Internal (or embedded) と External – ホストとなるプログラミング言語を持つものが

Internal (or embedded) DSLs – ホストとなるプログラミング言語を持たないものが

External DSLs

• Graphical と Textual – モデルを図式表現するのが Graphical DSLs – モデルをテキスト表現するのが Textual DSLs

Page 4: Eclipse modeling 勉強会 dslについて

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

Page 5: Eclipse modeling 勉強会 dslについて

GMF

• ダッシュボード

Page 6: Eclipse modeling 勉強会 dslについて

GMF

• ダッシュボード

普通の人なら くじけ出す領域

Page 7: Eclipse modeling 勉強会 dslについて

GMF で実現できるエディタ例

Graphical Modeling Framework/Tutorial/Part 4 より

Page 8: Eclipse modeling 勉強会 dslについて

そのための Ecore モデル

Graphical Modeling Framework/Tutorial/Part 1 より引用

Page 9: Eclipse modeling 勉強会 dslについて

Tutorial

• ・・・・ にしては難しすぎる Ecore モデル

• そこで、極端に簡単な例に変更

Page 10: Eclipse modeling 勉強会 dslについて

GMF で実現できるエディタ例

Page 11: Eclipse modeling 勉強会 dslについて

そのための Ecore モデル

Page 12: Eclipse modeling 勉強会 dslについて

Graphical DSL Editor

• ダイアグラムは Node と Link から構成される • 通常 Node には種類がある • 通常 Link は Node 間を結び種類がある • 「Node と Link」 のダイアグラムは、先の最低限 Ecore モデルをベースに作成できる – 後はカスタマイズや制約追加など

Page 13: Eclipse modeling 勉強会 dslについて

Textual DSL in Eclipse

• Xtext は Eclipse 環境で Textual DSL を作成するためのフレームワーク

• http://www.eclipse.org/Xtext/ • 現在は Textual Modeling Framework に所属

– GMFで扱ったNetworkをXtextで記述すると ・・・

Page 14: Eclipse modeling 勉強会 dslについて

Xtext

EBNF的な文法定義

Page 15: Eclipse modeling 勉強会 dslについて

Xtext

Page 16: Eclipse modeling 勉強会 dslについて

Xtext

• Xtend言語 – Xtextとセットになっている言語 – DSLで書いたモデルが処理の対象 – Javaソースコードを生成可能

Page 17: Eclipse modeling 勉強会 dslについて

この段階では同じレベル

Page 18: Eclipse modeling 勉強会 dslについて

この段階でも同じレベル

Page 19: Eclipse modeling 勉強会 dslについて

違うのは • Ecore モデルのグラフィカル要素有無 • Tooling

– GMF • 直観的で分かり易いグラフィカルエディタとなる • ツール習得時間が長く、グラフィカルエディタ作成に必要な手数が多い • コード生成は別途

– Xtext • シンプルで一見テキストエディタ(コード補完など有) • ツール習得時間が長い • コード生成にはXtend

• 振る舞い記述 – プロセス記述的なものはグラフィカル記述が優位か?

• Scale – 要素数が多くなったときに扱い易いのはどちら?(テキスト型?)

Page 20: Eclipse modeling 勉強会 dslについて

改善に向けての努力 • 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

Page 21: Eclipse modeling 勉強会 dslについて

DSLが必要になった時

• 選択肢 – UML Profile

• オープン:Papyrusなど • 商用UMLツール

– Graphical DSL • オープン:GMFなど • 商用グラフィカルDSLツール

– Textual DSL • オープン:Xtext • 商用テキスト型DSLツール

Page 22: Eclipse modeling 勉強会 dslについて

EuGENia

• 余りカバーされていない EuGENia • 特長

– Ecore モデルを テキスト型言語 Emfatic で表現しアノテーションを追加するだけで GMF のダイアグラムエディタを生成

– 実現・機能範囲は限定的 • 実験的・プロトタイプ的に使うのであれば十分

Page 23: Eclipse modeling 勉強会 dslについて

EuGENia

• 手順 – Epsilonパッケージのインストール – GMFプロジェクトの作成 – Ecore Toolsを用いてEcoreモデルを作成 – コンテキストメニューでEmfatic形式に変換 – アノテーション追記 – コンテキストメニューでモデルエディタ生成

Page 24: Eclipse modeling 勉強会 dslについて

プロセスモデル記述例

ほぼ Node と Link だけ

Page 25: Eclipse modeling 勉強会 dslについて

モデルが出来たら

• ソフトウェア開発プロセスの成果物として利用 – M2M – M2T

• いろいろなツールがありますが、最後の手段として XSLT を使う手もあります。

• 次のお話へ続く!