Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Xtext 紹介

932 views

Published on

2015/09/01 に開催したモデルベースソフトウェア開発コミュニティ勉強会で発表した Xtext 紹介スライド(特に StateMachine 系の話題を紹介)

Published in: Technology
  • Be the first to comment

Xtext 紹介

  1. 1. Eclipse  Xtext の紹介     2015/09/01   田中  
  2. 2. 狙い •  この Talk の狙いは次の二つです   –  Xtext  (+Xtend)  の概要と位置付けを簡単にご紹介し   –  Xtext  (+Xtend)  の  Workshop/Hands-­‐on  に関心を持って頂けるかを確 認させて貰うこと   –  関心を持って頂ける方がある程度おられば、今後の Workshop/ Hands-­‐on  で次のような活動を考えています(今回の  Talk  には含まれ ません)   •  Xtext  で  En@ty  DSL  や  State  Machine  DSL の作成   •  Xtend  を  Template  言語として使ったコード生成   •  事例等   2
  3. 3. Eclipse  Xtext とは •  Eclipse で推進している、テキスト型  DSL  (Domain   Specific  Language)  開発フレームワーク   –  DSL についてまず説明します   3
  4. 4. DSL とは •  DSL  (Domain  Specific  Language)   –  “a  computer  programming  language  of  limited  expressiveness  focused   on  a  par@cular  domain”  (Mar@n  Fowler)   •  My  observa@on   –  UML  (Unified  Modeling  Language) は、幾つもあったモデリング言語か らよく使われる部分を選択し標準化した汎用のモデリング言語。UML   だけで対応出来ない領域は  UML  拡張メカニズムを使いステレオタイ プなどで対応。   •  例:BPMN,  SoaML,  SysML,  UPDM,  …   –  UML  を持ち出す程ではない比較的狭い範囲のモデリングで、その問 題領域専用のモデリング言語を設計し用いれば十分は場合は DSL   が向いている。   •  例:SQL, 化学式,  楽譜   4 hXp://www.informit.com/store/domain-­‐specific-­‐languages-­‐9780321712943
  5. 5. DSL の分類 •  Textual(テキスト型)DSL   –  テキストを使いモデルを記述するもの   –  例:SQL,  Ruby  on  Rails,  Xtext  ベースの  DSLs   •  Graphical(図形型)DSL   –  グラフィカルにモデルを記述するもの   –  例:BPMN,  SysML,  SoaML,  Sirius/GMF  etc.  ベースの  DSLs   •  上記以外に、母体・ベースとなるプログラミング言語を持つかどうかで   Internal  or  Embedded  /  External  DSL  という分類もあります   –  Internal/Embedded  DSL 例:Ruby  on  Rails  (Ruby  言語)   –  External  DSL  例:  SQL 5
  6. 6. DSL 開発は容易? •  モデリング言語を開発するのは必ずしも容易な作業ではありませんが、 ドメインが限定される場合 DSL  開発はその投資に見合う結果をもたらし てくれる可能性大です   •  各種DSL開発フレームワークを調べてきた個人的な感想です   –  DSL定義はテキスト型の方が早いように思えますが、Ecore  Tools などを利用 すればグラフィカルでもそれなりの早さで定義できます   –  DSLモデルエディタの開発は、概して Xtext のようなテキスト型の方が早く使 えるようになりますが、例えばGMFベースのグラフィカルエディタを目指すとエ キスパートでない限り結構時間がかかります(挫折する人もいると思います)   –  Siriusはこのギャップをかなり詰めて来ました(将来性を感じます) 6
  7. 7. Xtext の基本 •  基本   –  Xtext  文法規則に従い設計したい  DSL  の文法を定義できます   –  準備されているワークフローを実行することで  Eclipse  の Plug-­‐in   Project  を完成・生成させます   –  そして、その Plug-­‐in  を組み込んだ  Eclipse  の別インスタンスを起動さ せると、定義した文法に基づくテキスト型のモデルエディタが動作しま す   •  更に、文法定義後に   –  利用者レベルのチェック機能等を追加できます   –  コード生成ロジックを追加でき(Xtend言語利用)、これを組み込むこと でモデル定義からリアルタイムでコード生成ができます   7
  8. 8. hXp://www.eclipse.org/Xtext/ 8
  9. 9. Xtext 文法定義例 9
  10. 10. ワークフロー実行例 workflow  定義ファイルを右クリック 実行 10
  11. 11. モデルエディタ例 11
  12. 12. コード生成例 12
  13. 13. hXps://vimeo.com/8260921 13
  14. 14. State  Machineサンプルモデル 14 hXp://www.eclipse.org/Xtext/documenta@on/ 301_grammarlanguage.html
  15. 15. State  Machine コード生成・実行例 15
  16. 16. Xtext 活用事例より 16 hXp://www.eclipse.org/Xtext/community.html
  17. 17. 事例:Yakindu  Statechart  Tools 17
  18. 18. Statechart  編集画面 18 付属のサンプルプロジェクト
  19. 19. Statechart  Simula@on画面 19 付属のサンプルプロジェクト ある程度のコード生成(Java/C)もしてくれます
  20. 20. 20 hXp://blog.statecharts.org/2014/11/yakindu-­‐statecharts-­‐enter-­‐lego.html
  21. 21. 今後の活動案 •  Xtext  の応用はあなたの発想力次第です   •  Xtext に関心を持って頂ける方がある程度おられれ ば   –  Workshop/Hands-­‐on  的活動を計画します   –  Hands-­‐on を開催する場合   •  PC/Mac  を持参いただき   •  簡単な  DSL  を作成し   •  DSL  に基づくモデルを記述し   •  モデルから簡単なコード生成を行います   •  後は走りながら考えます   21

×