Eclipse modeling 勉強会 dslについて

1,602 views

Published on

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

Published in: Technology
  • Be the first to comment

Eclipse modeling 勉強会 dslについて

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

×