Xtext 紹介

3,026 views
2,841 views

Published on

2013年4月26日のEclipseModeling勉強会用に作成したXtext紹介スライド (ハンズオンだったのでスライドとしてはシンプルなものです)

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,026
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Xtext 紹介

  1. 1. Xtext  紹介 April,  2013    田中  ビューファイブ  LLC
  2. 2. アジェンダ •  Xtext  概要  – どんなもの  – 準備作業  •  サンプルプロジェクト紹介  – Gree3ng  – Domainmodel  
  3. 3. 今日の説明は表面にある氷のかけら程度のものです しかし、使えるであろう  内容を目指します File:Iceberg.jpg  by  Uwe  Kils  CC  BY-­‐SA  3.0 Xtext iceberg
  4. 4. Xtext  概要 •  どんなもの  –  元々は openArchitectureWare(oAW)  のサブプロジェクトの一つ  –  oAWの持っていた複雑なworkflow記述言語などの簡素化のため生まれた模様  –  開発元はドイツの itemis  AG  社  –  Eclipse  Modeling  Project  に属する  –  テキスト型  External  DSL  開発フレームワーク  –  Xtend  言語を併用することで、モデル変換(m2m,  m2t)やコード生成を実現
  5. 5. Xtext  概要 •  技術の流れ  – oAW/Xpand/Xtend(1.0)  – oAW/Xpand/Xtend(1.0),  Xtext  – Eclipse/Xtext/Xpand/Xtend(1.0)  – Eclipse/Xtext(2.X)/Xtend(2.0),  Xbase ターゲットを  Java  言語  に絞る方向 ターゲットプログラミング  言語特定せず
  6. 6. Xtext  概要 •  プロジェクト所在場所  –  hXp://www.eclipse.org/Xtext/  –  hXp://www.eclipse.org/xtend/    –  hXp://xtext.itemis.com/  •  国内活動  –  日本Xtextユーザ会  •  hXps://groups.google.com/forum/#!forum/xtext-­‐users-­‐japan  •  hXps://sites.google.com/site/xtextusersjapan/  –  Xtext入門e-­‐book  •  hXp://www.beta-­‐publish.com/  
  7. 7. hXp://www.eclipse.org/Xtext/index.html  
  8. 8. 準備作業   •  インストール  –  updateより全体をダウンロードした方が確実  –  Ecore  Toolsを追加インストールしておくと作成した文法のecoreモデルをビジュアルに確認できる(確認不要の方はインストール不要)  •  設定  –  workspaceのencodingはUTF-­‐8に設定する  –  Run  configura3onを使う  –  入力方法(”«»”)  •  その他  –  Net上に多くのXtext情報があるが、本体が進化し続けているため、最新版では動作しない場合も往々にしてある  –  YoutubeやVimeoにも動画あり  –  ドキュメンテーションは、まず現住所のものを確認しよう  –  疑問点はマニュアルの他に  forum  や stackoverflow  もチエックしよう  
  9. 9. インストール おすすめ hXp://www.eclipse.org/Xtext/download.html  
  10. 10. Ecore  Tool  インストール これを選択 Help  -­‐>  Install  New  Sogware  …
  11. 11. workspace
  12. 12. Run  Configura3ons これを使います
  13. 13. Xtext  文法例 grammar  org.eclipse.xtext.example.domainmodel.Domainmodel  with  org.eclipse.xtext.xbase.Xbase        generate  domainmodel  "hXp://www.xtext.org/example/Domainmodel"   org.eclipse.xtext.common.Terminals 言語名の宣言 パッケージ名 .xtextファイル名 別言語とのmixin 生成 Ecore  モデルの Epackage  名宣言 nsURI
  14. 14. Xtext  文法例 Model:    (elements  +=  Element)*;     =  右側の規則が1回だけ呼び出される +=  右側の規則が1回以上呼び出される(結果はリスト相当になります) ?=  右側の式が成立した場合、左側の式が真となる(ブーリアン) ?  0または1(つまりオプション) *  0以上 +  1以上 規則の最後は“;”(セミコロン)で締めくくる 規則名
  15. 15. Xtext  文法例 Element:  Datatype  |  SimpleEn3ty  ;    Datatype:  type  name=ID  ;  terminal  ID  :      (^)?(a..z|A..Z|_)  (a..z|A..Z|_|0..9)*;   いずれか ID  は mixin  した別文法で下のように規定される
  16. 16. workflow •  Modeling  Workflow  Engine  2  (MWE2) hXp://www.eclipse.org/Xtext/documenta3on.html#MWE2  ワークフロー例 IWorkflowComponent  を実装
  17. 17. workflow •  Modeling  Workflow  Engine  2  (MWE2) hXp://www.eclipse.org/Xtext/documenta3on.html#MWE2  ワークフローコンポーネント例
  18. 18. Xtend  (2.0) •  Xtend(2.0)={Xpand+Xtend(1.0)}の後継    – Java  との親和性+多くの Syntax  Sugar  他  – Readable  Java  Code  に即時変換  – Template  Expression  が Xpand  相当  – Xtext  のインストールに含まれる  
  19. 19. hXp://www.eclipse.org/xtend/index.html  
  20. 20. サンプルプロジェクト紹介 •  Gree3ng  –  デフォルトの文法  •  Domainmodel  –  簡単  En3ty  モデル  •  Domainmodel2  –  Package  と  Import  追加  •  Domainmodel3  –  Xtend  によるコード生成追加  •  Domainmodel4  –  JVM  言語化(Xbase他)  
  21. 21. DEMO  -­‐  GREETING デフォルトの文法    
  22. 22. Gree3ng
  23. 23. DEMO  DOMAINMODEL 簡単  En3ty  モデル    
  24. 24. Domainmodel
  25. 25. DEMO  DOMAINMODEL Package  と  Import  追加  
  26. 26. Domainmodel2/3
  27. 27. DEMO  DOMAINMODEL Xtend  によるコード生成追加  
  28. 28. DEMO  DOMAINMODEL JVM  言語化(Xbase他)  
  29. 29. Domainmodel4
  30. 30. Tips •  メジャーリリース時に Xtext  の  Documenta3on  を印刷し手元に置いておくといろいろ便利(検索には  HTML  が便利)  •  Youtube  等の動画サイトに説明ビデオ有り  •  Slideshare  等に説明スライド有り  •  参考になる各種プロジェクト  – hXp://www.eclipse.org/Xtext/community.html
  31. 31. 最後に •  モデリング手法のいろいろ  – UML  &  UML  Profile [UML  Tools]  – Metamodel  [EMF,  Ecore  Tools,  …  ]  – DSL  [Xtext,  GMF,  …  ]  •  道具立てが多少異なるだけで、やっていることは余り違わないような気がします  •  どういう状況下でどれを使うかという選択になりそうです

×