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