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

          田中明
   akira.odp@gmail.com
     日本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 を使う手もあります。


• 次のお話へ続く!

Eclipse modeling 勉強会 dslについて

  • 1.
    Graphical/Textual DSLs (Xtext と GMF を例として) 田中明 akira.odp@gmail.com 日本Xtextユーザ会
  • 2.
    DSLの定義 • Domain-Specific Languages(DSLs) の定義は Martin Fowler さんの本では次のようになって います – “a computer programming language of limited expressiveness focused on a particular domain”
  • 3.
    DSLの分類 • Internal (orembedded) と External – ホストとなるプログラミング言語を持つものが Internal (or embedded) DSLs – ホストとなるプログラミング言語を持たないものが External DSLs • Graphical と Textual – モデルを図式表現するのが Graphical DSLs – モデルをテキスト表現するのが Textual DSLs
  • 4.
    Graphical DSL inEclipse • 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
  • 5.
  • 6.
    GMF 普通の人なら くじけ出す領域 • ダッシュボード
  • 7.
    GMF で実現できるエディタ例 GraphicalModeling Framework/Tutorial/Part 4 より
  • 8.
    そのための Ecore モデル GraphicalModeling Framework/Tutorial/Part 1 より引用
  • 9.
    Tutorial • ・・・・ にしては難しすぎるEcore モデル • そこで、極端に簡単な例に変更
  • 10.
  • 11.
  • 12.
    Graphical DSL Editor • ダイアグラムは Node と Link から構成される • 通常 Node には種類がある • 通常 Link は Node 間を結び種類がある • 「Node と Link」 のダイアグラムは、先の最低 限 Ecore モデルをベースに作成できる – 後はカスタマイズや制約追加など
  • 13.
    Textual DSL inEclipse • Xtext は Eclipse 環境で Textual DSL を作成す るためのフレームワーク • http://www.eclipse.org/Xtext/ • 現在は Textual Modeling Framework に所属 – GMFで扱ったNetworkをXtextで記述すると ・・・
  • 14.
    Xtext EBNF的な文法定義
  • 15.
  • 16.
    Xtext • Xtend言語 –Xtextとセットになっている言語 – DSLで書いたモデルが処理の対象 – Javaソースコードを生成可能
  • 17.
  • 18.
  • 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ツール
  • 22.
    EuGENia • 余りカバーされていない EuGENia •特長 – Ecore モデルを テキスト型言語 Emfatic で表現し アノテーションを追加するだけで GMF のダイアグ ラムエディタを生成 – 実現・機能範囲は限定的 • 実験的・プロトタイプ的に使うのであれば十分
  • 23.
    EuGENia • 手順 –Epsilonパッケージのインストール – GMFプロジェクトの作成 – Ecore Toolsを用いてEcoreモデルを作成 – コンテキストメニューでEmfatic形式に変換 – アノテーション追記 – コンテキストメニューでモデルエディタ生成
  • 24.
  • 25.
    モデルが出来たら • ソフトウェア開発プロセスの成果物として利用 –M2M – M2T • いろいろなツールがありますが、最後の手段として XSLT を使う手もあります。 • 次のお話へ続く!