Eclipse xtext 紹介
-
Upload
akira-tanaka -
Category
Technology
-
view
1.702 -
download
2
description
Transcript of Eclipse xtext 紹介
テキスト型 DSL 開発フレームワーク
Xtext
田中
ビューファイブ LLC Xtext ユーザ会/Eclipse Modeling 勉強会
自己紹介
• 本日の話題と関係しそうなこと – 以前 OMG のモデリング標準作成に参加していました
• UML や MDA はある程度なじんでいます – Eclipse Conference には 2 回参加したことがあります(モデリング系セ
ション主体) – 本年5月に Xtext CON がありそうなので、参加したいと思っています – 現在の対外的活動
• Xtext ユーザ会 • Eclipse Modeling Project 勉強会 • Eclipse Regional Community/Japan (名ばかり)
Message from Xtext Project Lead Good evening everybody! I hope you’ll have a good 5me hearing about Eclipse Xtext. I am very pleased to hear that there is so much interest in this topic in Tokyo! You are all very welcome to try this framework out and in case you have any ques5ons feel free to ask them in the ac5ve online forum at Eclipse. Also in case you consider basing some serious business on it, you should know that my company itemis offers professional services, like trainings and onsite consul5ng. Have fun and keep the abstrac5ons sound! Best Regards, Sven EKinge (Xtext project lead)
アジェンダ
• Xtext で出来ること これだけは見てから帰ってください
• Xtext – 概要 出来るだけ短くします – 使い方 本日はこれを中心にお話します
• Sample Projects – 例題
• 時間に余裕があれば – モデリングは UML だけじゃない・・・という話 – EMF/GMF まわりの進化の話
簡単にいうと
• Xtext は – Eclipse 環境で動作する – テキスト型 External DSL 開発フレームワーク
• DSL エディタがほぼ自動的に作成できてしまう • コード生成のための仕組みもある
Xtext で出来ること
• デモ – こんなことが出来ます(エディタ側だけ)
少しは気になりましたか?
• では、もう少しおつきあいください
Xtext 概要
• プロジェクト所在場所 – hIp://www.eclipse.org/Xtext/ – hIp://www.eclipse.org/xtend/ – hIp://xtext.itemis.com/
• 国内活動 – 日本Xtextユーザ会
• hIps://groups.google.com/forum/#!forum/xtext-‐users-‐japan • hIps://sites.google.com/site/xtextusersjapan/
– Xtext入門e-‐book • hIp://www.beta-‐publish.com/
まずはここから
Eclipse Modeling Project
hIp://www.eclipse.org/modeling/
hIp://www.eclipse.org/Xtext/index.html
準備作業 • インストール
– updateより全体をダウンロードした方が確実 – Diagram Editor for Ecore を追加インストールしておくと作成した文法
の ecore モデルをクラス図的に確認できる(確認不要の方はインストール不要)
• 設定 – workspaceのencodingはUTF-‐8に設定する – Run configuraUonを使う – 入力方法(”«»”)
• その他 – Net上に多くのXtext情報があるが、本体が進化し続けているため、最
新版では動作しない場合も往々にしてある – YoutubeやVimeoにも動画あり – ドキュメンテーションは、まず現住所のものを確認しよう – 疑問点はマニュアルの他に forum や stackoverflow もチエックしよう
インストール
おすすめ
hIp://www.eclipse.org/Xtext/download.html
Diagram Editor for Ecore インストール
これを選択
Help -‐> Install New So`ware …
workspace
Run ConfiguraUons これを使います
新規 Xtext プロジェクト作成画面
こんな .xtext ファイルが生成されます
新規 Xtext プロジェクト作成画面の情報に基づき作成される
我々が書き直す文法定義部分
この文法はサンプル
Xtext 文法例
grammar org.eclipse.xtext.example.domainmodel.Domainmodel with org.eclipse.xtext.xbase.Xbase generate domainmodel "hIp://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 | SimpleEnUty ;
Datatype: 'type' name=ID ;
terminal ID : ('^')?('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
いずれか
ID は mixin した別文法で下のように規定される
サンプルプロジェクト紹介
• GreeUng – デフォルトの文法
• Domainmodel – 簡単 EnUty モデル
• Domainmodel2 – Package と Import 追加
• Domainmodel3 – Xtend によるコード生成追加
• Domainmodel4 – JVM 言語化(Xbase他)
DEMO -‐ GREETING
デフォルトの文法
GreeUng
GreeUng
• デモで見て貰うポイント – プロジェクト作成 – デフォルト文法定義 – ArUfacts 生成(Workflow 実行) – エディタ起動(Run ConfiguraUon) – エディタ動作(コード補完)
DEMO DOMAINMODEL
簡単 EnUty モデル
Domainmodel
Domainmodel
• デモで見て貰うポイント – EnUty 文法定義
• シンタクスグラフ
– エディタ動作(コード補完) – Ecore ファイル
• 場所 • Sample ReflecUve Editor • ダイアグラム表示
DEMO DOMAINMODEL2
Package と Import 追加
Domainmodel2
Domainmodel2
• デモで見て貰うポイント – 文法定義:Package と Import の導入 – エディタ動作(モデルの分割)
DEMO DOMAINMODEL3
Xtend によるコード生成追加
Domainmodel3
Domainmodel3
• デモで見て貰うポイント – Xtend によるコード生成 – 言語の Unit Test の書き方 – カスタムバリデーションの書き方
– MyDsl にもコメントアウトのサンプルコード有
DEMO DOMAINMODEL4
JVM 言語化(Xbase他)
Domainmodel4
Domainmodel4
• デモで見て貰うポイント – Terminal から Xbase へ (Java言語へ) – JvmModelInferer – Xtend ライブラリ追加 – Java コード生成
ここまでの例題について
• Domainmodel から Domainmodel4 まで、すべて Xtext DocumentaUon の Gevng Started セクションで解説されているものです – 実際に Xtext をインストールし、これら例題をご自
分で動かしてみることをオススメします
Example Projects
• 同梱されている Example Projects – Domainmodel
• いろいろなコードが埋め込まれているので参考になります
– FowlerDSL (Statemachine) • 同上
– ArithmeUcs (計算) – Xbase Tutorial – Xtend Tutorial
Java コード生成をやりたい方はこれらも試して下さい
私のチャレンジ
• Xtext をより上位のモデリングに使えないか、いろいろやってみた – ビジネスプロセス記述 – サービス(SOA)記述 – エンタプライズアーキテクチャ記述
ビジネスプロセス記述例
モデリング言語は UML だけじゃない
• OMG のモデリング言語 – MOF – UML – Metamodels
Layers of Models
Meta-‐meta model
Metamodel
Model
Instance or Object Model
Instance of
conform to
conform to
MOF (CMOF, EMOF/ecore)
e.g. UML, SOA, BPMN, …
e.g. UML models, SOA models, BPMN models, …
M3
M2
M1
M0
Eclipse と Modeling
• EMF 関連プロジェクト(一部)
EMF
GEF
+
GMF GraphiU Spray
EmfaUc
Xcore Ecore Tools
EMF Text Xtext …
…
Papyrus
Time
DSLの定義
• Domain-‐Specific Languages (DSLs) の定義は MarUn Fowler さんの本では次のようになっています – “a computer programming language of limited expressiveness focused on a parUcular domain”
DSLの分類
• Internal (or embedded) と External – ホストとなるプログラミング言語を持つものが Internal (or embedded) DSLs
– ホストとなるプログラミング言語を持たないものがExternal DSLs
• Graphical と Textual – モデルを図式表現するのが Graphical DSLs – モデルをテキスト表現するのが Textual DSLs
GMF
• ダッシュボード
GMF で実現できるエディタ例
そのための Ecore モデル
同じことを Xtext で書くと
Xtext のモデル記述
この段階では同じレベル
この段階でも同じレベル
違うのは
• グラフィカル要素有無 • Tooling
– GMF • 直観的で分かり易いグラフィカルエディタとなる • ツール習得時間が長く、グラフィカルエディタ作成に必要な手数が多い • コード生成は別途
– Xtext • シンプルで一見テキストエディタ(コード補完など有) • ツール習得時間が長い(?) • コード生成にはXtend
• 振る舞い記述 – プロセス記述的なものはグラフィカル記述が優位かも?
• Scale – 要素数が多くなったときに扱い易いのはどちら?(テキスト型?)
Tips
• メジャーリリース時に Xtext の DocumentaUon を印刷し手元に置いておくといろいろ便利(検索には HTML が便利)
• Youtube 等の動画サイトに説明ビデオ有り • Slideshare 等に説明スライド有り • 参考になる各種プロジェクト – hIp://www.eclipse.org/Xtext/community.html
もっとサンプルが見たい
という方のために・・・
……..
hIp://www.eclipse.org/Xtext/community.html
hIp://www.eclipse.org/Xtext/7languages.html
hIp://www.eclipse.org/xtend/
hIp://www.beta-‐publish.com/
最後に
• Xtext/Xtend はかなり「使える」道具です
• 皆さんの開発ツールの一つに加えて貰えれば幸いです
• 日本 Xtext ユーザ会 – hIps://sites.google.com/site/xtextusersjapan/ – hIps://groups.google.com/forum/#!forum/xtext-‐users-‐japan
• Eclipse Modeling 勉強会 – hIps://sites.google.com/site/eclipsemodelingsigjapan/ – hIps://groups.google.com/forum/#!forum/eclipse-‐modeling-‐sig-‐japan