SlideShare a Scribd company logo
テキスト型 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	
  文法例	
言語名の宣言	
パッケージ名	

.xtextファイル名	

grammar	
  org.eclipse.xtext.example.domainmodel.Domainmodel	
  
with	
  org.eclipse.xtext.xbase.Xbase	
  
別言語とのmixin	
	
  
org.eclipse.xtext.common.Terminals	
	
  
	
  生成 Ecore	
  モデルの Epackage	
  名宣言	
generate	
  domainmodel	
  "hIp://www.xtext.org/example/
Domainmodel"	
  
nsURI
Xtext	
  文法例	
規則名	

?
*
+
	

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

Model:	
  
	
  (elements	
  +=	
  Element)*;	
  
	
規則の最後は“;”(セミコロン)で締めくくる	
	
  
	
= 	
  右側の規則が1回だけ呼び出される	
+= 	
  右側の規則が1回以上呼び出される(結果はリスト相当になります)	
?= 	
  右側の式が成立した場合、左側の式が真となる(ブーリアン)
Xtext	
  文法例	
いずれか	
Element:	
	
  Datatype	
  |	
  SimpleEnUty	
  ;	
  
	
  
Datatype:	
	
  'type'	
  name=ID	
  ;	
ID	
  は mixin	
  した別文法で下のように規定される	
	
  
terminal	
  ID	
  :	
  	
	
  	
  ('^')?('a'..'z'|'A'..'Z'|'_')	
  ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;	
  
サンプルプロジェクト紹介	
•  GreeUng	
  

–  デフォルトの文法	
  

•  Domainmodel	
  
–  簡単	
  EnUty	
  モデル	
  

•  Domainmodel2	
  

–  Package	
  と	
  Import	
  追加	
  

•  Domainmodel3	
  

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

•  Domainmodel4	
  

–  JVM	
  言語化(Xbase他)	
  
デフォルトの文法	
  
	
  

DEMO	
  -­‐	
  GREETING
GreeUng
GreeUng	
•  デモで見て貰うポイント	
  
–  プロジェクト作成	
  
–  デフォルト文法定義	
  
–  ArUfacts	
  生成(Workflow	
  実行)	
  
–  エディタ起動(Run	
  ConfiguraUon)	
  
–  エディタ動作(コード補完)	
  
簡単	
  EnUty	
  モデル	
  
	
  

DEMO	
  DOMAINMODEL
Domainmodel
Domainmodel	
•  デモで見て貰うポイント	
  
–  EnUty	
  文法定義	
  
•  シンタクスグラフ	
  

–  エディタ動作(コード補完)	
  
–  Ecore	
  ファイル	
  
•  場所	
  
•  Sample	
  ReflecUve	
  Editor	
  
•  ダイアグラム表示	
  
Package	
  と	
  Import	
  追加	
  

	

DEMO	
  DOMAINMODEL2
Domainmodel2
Domainmodel2	
•  デモで見て貰うポイント	
  
–  文法定義:Package	
  と	
  Import	
  の導入	
  
–  エディタ動作(モデルの分割)	
  
Xtend	
  によるコード生成追加	
  

	

DEMO	
  DOMAINMODEL3
Domainmodel3
Domainmodel3	
•  デモで見て貰うポイント	
  
–  Xtend	
  によるコード生成	
  
–  言語の	
  Unit	
  Test	
  の書き方	
  
–  カスタムバリデーションの書き方	
  
–  MyDsl	
  にもコメントアウトのサンプルコード有	
  
JVM	
  言語化(Xbase他)	
  

	

DEMO	
  DOMAINMODEL4
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	
M3	
Meta-­‐meta	
  model	

MOF	
  (CMOF,	
  EMOF/ecore)	

conform	
  to	

Metamodel	

M2	
e.g.	
  UML,	
  SOA,	
  BPMN,	
  …	

conform	
  to	
Model	
Instance	
  of	
Instance	
  or	
  Object	
  Model	

M1	
e.g.	
  UML	
  models,	
  SOA	
  models,	
  
BPMN	
  models,	
  …	
M0
Eclipse	
  と Modeling	
•  EMF	
  関連プロジェクト(一部)	
EMF	
  
Text	

Xtext	

Ecore	
  
Tools	

…	

Xcore	

GMF	

GraphiU	

Spray	

EmfaUc	
EMF	

…	

+	
GEF	

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	
  	
  

More Related Content

PPTX
Xtext入門
PDF
ドメイン駆動設計サンプルコードの徹底解説
PDF
自動テストの誤解とアンチパターン in 楽天 Tech Talk
PDF
Dockerfileを改善するためのBest Practice 2019年版
PDF
View customize plugin for Redmineの紹介 (2019年版)
PDF
Dockerfile を書くためのベストプラクティス解説編
PDF
Test Yourself - テストを書くと何がどう変わるか
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Xtext入門
ドメイン駆動設計サンプルコードの徹底解説
自動テストの誤解とアンチパターン in 楽天 Tech Talk
Dockerfileを改善するためのBest Practice 2019年版
View customize plugin for Redmineの紹介 (2019年版)
Dockerfile を書くためのベストプラクティス解説編
Test Yourself - テストを書くと何がどう変わるか
コンテナの作り方「Dockerは裏方で何をしているのか?」

What's hot (20)

PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
PDF
オブジェクト指向できていますか?
PDF
DockerとPodmanの比較
PDF
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
PDF
Session管理とRailsのcookie store
PDF
ドメイン駆動設計 本格入門
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PPTX
DockerコンテナでGitを使う
PDF
ドメイン駆動設計に15年取り組んでわかったこと
PDF
実践的な設計って、なんだろう?
PPTX
分散トレーシングAWS:X-Rayとの上手い付き合い方
PDF
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
PDF
Where狙いのキー、order by狙いのキー
PDF
3週連続DDDその1 ドメイン駆動設計の基本を理解する
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PDF
PlaySQLAlchemy: SQLAlchemy入門
PDF
マイクロにしすぎた結果がこれだよ!
PPTX
GoF デザインパターン 2009
Python におけるドメイン駆動設計(戦術面)の勘どころ
オブジェクト指向できていますか?
DockerとPodmanの比較
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
Session管理とRailsのcookie store
ドメイン駆動設計 本格入門
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
DockerコンテナでGitを使う
ドメイン駆動設計に15年取り組んでわかったこと
実践的な設計って、なんだろう?
分散トレーシングAWS:X-Rayとの上手い付き合い方
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
Where狙いのキー、order by狙いのキー
3週連続DDDその1 ドメイン駆動設計の基本を理解する
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PlaySQLAlchemy: SQLAlchemy入門
マイクロにしすぎた結果がこれだよ!
GoF デザインパターン 2009
Ad

Similar to Eclipse xtext 紹介 (20)

PDF
Xcore introduction
PDF
Xtext 紹介
PDF
Eclipse modeling 勉強会 dslについて
PDF
Xtext 紹介
PDF
Eclipse modeling 勉強会 はじめに
PDF
Xtext And Grails20091218
PDF
EclipseCon NA 2015 report
PDF
MBSD ツールチェーンと今後の活動
PDF
Eclipse Modeling Environment 概要
PPTX
Xtext&Xtend documents
PDF
Xtextハンズオン(仮)
PDF
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
PPTX
Eclipse modeling projectの概要
PDF
An engineer uses monads
PDF
一口で何度もおいしい?DSL
PDF
Xtend - Javaの未来を今すぐ使う
PPTX
Eclipse con2010 参加報告 upload
PPT
2008.10.18 L4u Tech Talk
PDF
Groovy base gradle_20130309
PDF
Object-Funcational Analysis and design
Xcore introduction
Xtext 紹介
Eclipse modeling 勉強会 dslについて
Xtext 紹介
Eclipse modeling 勉強会 はじめに
Xtext And Grails20091218
EclipseCon NA 2015 report
MBSD ツールチェーンと今後の活動
Eclipse Modeling Environment 概要
Xtext&Xtend documents
Xtextハンズオン(仮)
テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介
Eclipse modeling projectの概要
An engineer uses monads
一口で何度もおいしい?DSL
Xtend - Javaの未来を今すぐ使う
Eclipse con2010 参加報告 upload
2008.10.18 L4u Tech Talk
Groovy base gradle_20130309
Object-Funcational Analysis and design
Ad

More from Akira Tanaka (19)

PPTX
Developing Modeling Tool for RM-ODP with Eclipse Sirius
PPTX
DSL4ODP Diagrams
PPTX
Dsl4 odp diagrams
PPTX
EclipseCon Europe 2019 modeling report
PPTX
Sirius in 30 min.
PPTX
Eclipse Sirius Applied to a RAD Tool in Japan
PDF
EclipseCon France 2018 report
PDF
Eclipse con2017参加報告公開版
PDF
Simple Line-Tracer statechart simulation with Yakindu
PDF
EclipseCon NA2016 report
PPTX
Sirius を試してみて
PDF
EMF Forms Introduction
PPTX
モデルベースソフトウェア開発
PPTX
オープンソースを利用したモデル駆動トライアル
PDF
OCL in Papyrus Introduction
PDF
RM-ODP 概要
PDF
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
PDF
Eclipse Modeling QVT
PPTX
Experiment on BPM and SOA transformations
Developing Modeling Tool for RM-ODP with Eclipse Sirius
DSL4ODP Diagrams
Dsl4 odp diagrams
EclipseCon Europe 2019 modeling report
Sirius in 30 min.
Eclipse Sirius Applied to a RAD Tool in Japan
EclipseCon France 2018 report
Eclipse con2017参加報告公開版
Simple Line-Tracer statechart simulation with Yakindu
EclipseCon NA2016 report
Sirius を試してみて
EMF Forms Introduction
モデルベースソフトウェア開発
オープンソースを利用したモデル駆動トライアル
OCL in Papyrus Introduction
RM-ODP 概要
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
Eclipse Modeling QVT
Experiment on BPM and SOA transformations

Eclipse xtext 紹介