xtext 紹介

32
Xtext 紹介 April, 2013 田中 ビューファイブ LLC

Upload: akira-tanaka

Post on 28-May-2015

2.185 views

Category:

Technology


5 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Xtext 紹介

Xtext  紹介

April,  2013    

田中  ビューファイブ  LLC

Page 2: Xtext 紹介

アジェンダ

•  Xtext  概要  – どんなもの  – 準備作業  

•  サンプルプロジェクト紹介  – Gree3ng  – Domainmodel  

Page 3: Xtext 紹介

今日の説明は表面にある氷のかけら程度のものです

しかし、使えるであろう  内容を目指します

File:Iceberg.jpg  by  Uwe  Kils  CC  BY-­‐SA  3.0

Xtext iceberg

Page 4: Xtext 紹介

Xtext  概要

•  どんなもの  – 元々は openArchitectureWare(oAW)  のサブプロジェ

クトの一つ  –  oAWの持っていた複雑なworkflow記述言語などの簡

素化のため生まれた模様  – 開発元はドイツの itemis  AG  社  –  Eclipse  Modeling  Project  に属する  – テキスト型  External  DSL  開発フレームワーク  –  Xtend  言語を併用することで、モデル変換(m2m,  m2t)やコード生成を実現

Page 5: Xtext 紹介

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  言語  に絞る方向

ターゲットプログラミング  言語特定せず

Page 6: Xtext 紹介

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/  

Page 7: Xtext 紹介

hXp://www.eclipse.org/Xtext/index.html  

Page 8: Xtext 紹介

準備作業   •  インストール  

–  updateより全体をダウンロードした方が確実  –  Ecore  Toolsを追加インストールしておくと作成した文法のecoreモデル

をビジュアルに確認できる(確認不要の方はインストール不要)  •  設定  

–  workspaceのencodingはUTF-­‐8に設定する  –  Run  configura3onを使う  –  入力方法(”«»”)  

•  その他  –  Net上に多くのXtext情報があるが、本体が進化し続けているため、最

新版では動作しない場合も往々にしてある  –  YoutubeやVimeoにも動画あり  –  ドキュメンテーションは、まず現住所のものを確認しよう  –  疑問点はマニュアルの他に  forum  や stackoverflow  もチエックしよう  

Page 9: Xtext 紹介

インストール

おすすめ

hXp://www.eclipse.org/Xtext/download.html  

Page 10: Xtext 紹介

Ecore  Tool  インストール

これを選択

Help  -­‐>  Install  New  Sogware  …

Page 11: Xtext 紹介

workspace

Page 12: Xtext 紹介

Run  Configura3ons これを使います

Page 13: Xtext 紹介

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

Page 14: Xtext 紹介

Xtext  文法例

Model:    (elements  +=  Element)*;  

  =  右側の規則が1回だけ呼び出される +=  右側の規則が1回以上呼び出される(結果はリスト相当になります) ?=  右側の式が成立した場合、左側の式が真となる(ブーリアン)

?  0または1(つまりオプション) *  0以上 +  1以上

規則の最後は“;”(セミコロン)で締めくくる

規則名

Page 15: Xtext 紹介

Xtext  文法例

Element:  Datatype  |  SimpleEn3ty  ;  

 Datatype:  'type'  name=ID  ;

 terminal  ID  :      ('^')?('a'..'z'|'A'..'Z'|'_')  ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;  

いずれか

ID  は mixin  した別文法で下のように規定される

Page 16: Xtext 紹介

workflow

•  Modeling  Workflow  Engine  2  (MWE2)

hXp://www.eclipse.org/Xtext/documenta3on.html#MWE2  

ワークフロー例 IWorkflowComponent  を実装

Page 17: Xtext 紹介

workflow

•  Modeling  Workflow  Engine  2  (MWE2)

hXp://www.eclipse.org/Xtext/documenta3on.html#MWE2  

ワークフローコンポーネント例

Page 18: Xtext 紹介

Xtend  (2.0)

•  Xtend(2.0)={Xpand+Xtend(1.0)}の後継    –  Java  との親和性+多くの Syntax  Sugar  他  – Readable  Java  Code  に即時変換  – Template  Expression  が Xpand  相当  – Xtext  のインストールに含まれる  

Page 19: Xtext 紹介

hXp://www.eclipse.org/xtend/index.html  

Page 20: Xtext 紹介

サンプルプロジェクト紹介

•  Gree3ng  – デフォルトの文法  

•  Domainmodel  – 簡単  En3ty  モデル  

•  Domainmodel2  –  Package  と  Import  追加  

•  Domainmodel3  –  Xtend  によるコード生成追加  

•  Domainmodel4  –  JVM  言語化(Xbase他)  

Page 21: Xtext 紹介

DEMO  -­‐  GREETING

デフォルトの文法    

Page 22: Xtext 紹介

Gree3ng

Page 23: Xtext 紹介

DEMO  DOMAINMODEL

簡単  En3ty  モデル    

Page 24: Xtext 紹介

Domainmodel

Page 25: Xtext 紹介

DEMO  DOMAINMODEL

Package  と  Import  追加  

Page 26: Xtext 紹介

Domainmodel2/3

Page 27: Xtext 紹介

DEMO  DOMAINMODEL

Xtend  によるコード生成追加  

Page 28: Xtext 紹介

DEMO  DOMAINMODEL

JVM  言語化(Xbase他)  

Page 29: Xtext 紹介

Domainmodel4

Page 30: Xtext 紹介

Tips

•  メジャーリリース時に Xtext  の  Documenta3on  を印刷し手元に置いておくといろいろ便利(検索には  HTML  が便利)  

•  Youtube  等の動画サイトに説明ビデオ有り  •  Slideshare  等に説明スライド有り  •  参考になる各種プロジェクト  – hXp://www.eclipse.org/Xtext/community.html

Page 31: Xtext 紹介
Page 32: Xtext 紹介

最後に

•  モデリング手法のいろいろ  – UML  &  UML  Profile [UML  Tools]  – Metamodel  [EMF,  Ecore  Tools,  …  ]  – DSL  [Xtext,  GMF,  …  ]  

•  道具立てが多少異なるだけで、やっていることは余り違わないような気がします  

•  どういう状況下でどれを使うかという選択になりそうです