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 紹介

3,536 views

Published on

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

Published in: Technology
  • Be the first to comment

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,  …  ]  •  道具立てが多少異なるだけで、やっていることは余り違わないような気がします  •  どういう状況下でどれを使うかという選択になりそうです

×