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.
テキスト型 DSL	
  開発フレームワーク
Xtext	
	
  

田中	
  
	
  
ビューファイブ	
  LLC	
  
Xtext	
  ユーザ会/Eclipse	
  Modeling	
  勉強会
自己紹介	
•  本日の話題と関係しそうなこと	
  
–  以前	
  OMG	
  のモデリング標準作成に参加していました	
  
•  UML	
  や	
  MDA	
  はある程度なじんでいます	
  
–  Eclipse	
  C...
Message	
  from	
  Xtext	
  Project	
  Lead	
Good	
  evening	
  everybody!	
  
	
  
I	
  hope	
  you’ll	
  have	
  a	
  go...
アジェンダ	
•  Xtext	
  で出来ること 	
  これだけは見てから帰ってください	
  
•  Xtext	
  
–  概要 	
  
–  使い方 	
  

	
  出来るだけ短くします   	
  
	
  本日はこれを中心...
簡単にいうと	
•  Xtext	
  は	
  
–  Eclipse	
  環境で動作する	
  
–  テキスト型 External	
  DSL	
  開発フレームワーク	
  
•  DSL	
  エディタがほぼ自動的に作成できてしま...
Xtext	
  で出来ること	
•  デモ	
  
–  こんなことが出来ます(エディタ側だけ)
少しは気になりましたか?	
•  では、もう少しおつきあいください
Xtext	
  概要	
•  プロジェクト所在場所	
  
–  hIp://www.eclipse.org/Xtext/	
  
–  hIp://www.eclipse.org/xtend/	
  	
  
–  hIp://xtext....
Eclipse	
  Modeling	
  Project	

hIp://www.eclipse.org/modeling/	
  
hIp://www.eclipse.org/Xtext/index.html	
  
準備作業	
  	
•  インストール	
  
–  updateより全体をダウンロードした方が確実	
  
–  Diagram	
  Editor	
  for	
  Ecore	
  を追加インストールしておくと作成した文法
の ecor...
インストール	

おすすめ	

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....
Xtext	
  文法例	
規則名	

?
*
+
	

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

Model:	
  
	
  (elements	
  +=	
  Element)*;	
  
	
規則...
Xtext	
  文法例	
いずれか	
Element:	
	
  Datatype	
  |	
  SimpleEnUty	
  ;	
  
	
  
Datatype:	
	
  'type'	
  name=ID	
  ;	
ID	
  ...
サンプルプロジェクト紹介	
•  GreeUng	
  

–  デフォルトの文法	
  

•  Domainmodel	
  
–  簡単	
  EnUty	
  モデル	
  

•  Domainmodel2	
  

–  Packa...
デフォルトの文法	
  
	
  

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

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

–  エディタ動作(コード補完)	
  
–  Ecore	
  ファイル	
  
•  場所	
  
...
Package	
  と	
  Import	
  追加	
  

	

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

	

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

	

DEMO	
  DOMAINMODEL4
Domainmodel4
Domainmodel4	
•  デモで見て貰うポイント	
  
–  Terminal	
  から Xbase	
  へ (Java言語へ)	
  
–  JvmModelInferer	
  	
  
–  Xtend	
  ライブラリ追加...
ここまでの例題について	
•  Domainmodel	
  から	
  Domainmodel4	
  まで、すべ
て Xtext	
  DocumentaUon	
  の	
  Gevng	
  Started	
  セ
クションで解説され...
Example	
  Projects	
•  同梱されている	
  Example	
  Projects	
  
–  Domainmodel	
  
•  いろいろなコードが埋め込まれているので参考になり
ます	
  

–  Fowle...
私のチャレンジ	
•  Xtext	
  をより上位のモデリングに使えないか、
いろいろやってみた	
  
–  ビジネスプロセス記述	
  
–  サービス(SOA)記述	
  
–  エンタプライズアーキテクチャ記述
ビジネスプロセス記述例
モデリング言語は UML	
  だけじゃない	
•  OMG	
  のモデリング言語	
  
–  MOF	
  
–  UML	
  
–  Metamodels	
  
Layers	
  of	
  Models	
M3	
Meta-­‐meta	
  model	

MOF	
  (CMOF,	
  EMOF/ecore)	

conform	
  to	

Metamodel	

M2	
e.g.	
  ...
Eclipse	
  と Modeling	
•  EMF	
  関連プロジェクト(一部)	
EMF	
  
Text	

Xtext	

Ecore	
  
Tools	

…	

Xcore	

GMF	

GraphiU	

Spray	...
DSLの定義	
•  Domain-­‐Specific	
  Languages	
  (DSLs)	
  の定義は
MarUn	
  Fowler	
  さんの本では次のようになって
います	
  
–  “a	
  computer	
  ...
DSLの分類	
•  Internal	
  (or	
  embedded)	
  と External	
  
–  ホストとなるプログラミング言語を持つものが
Internal	
  (or	
  embedded)	
  DSLs	
 ...
GMF	
•  ダッシュボード
GMF	
  で実現できるエディタ例
そのための Ecore	
  モデル
同じことを Xtext	
  で書くと
Xtext	
  のモデル記述
この段階では同じレベル
この段階でも同じレベル
違うのは	
•  グラフィカル要素有無	
  
•  Tooling	
  
–  GMF	
  

•  直観的で分かり易いグラフィカルエディタとなる	
  
•  ツール習得時間が長く、グラフィカルエディタ作成に必要な手数が多い	
  
•...
Tips	
•  メジャーリリース時に Xtext	
  の	
  DocumentaUon	
  
を印刷し手元に置いておくといろいろ便利(検
索には	
  HTML	
  が便利)	
  
•  Youtube	
  等の動画サイトに説明ビ...
もっとサンプルが見たい	
という方のために・・・
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.c...
Upcoming SlideShare
Loading in …5
×

Eclipse xtext 紹介

3,633 views

Published on

2014年1月30日に開催されたBPStudy#77で使ったスライド(多少手を加えました)です。

Published in: Technology
  • Be the first to comment

Eclipse xtext 紹介

  1. 1. テキスト型 DSL  開発フレームワーク Xtext   田中     ビューファイブ  LLC   Xtext  ユーザ会/Eclipse  Modeling  勉強会
  2. 2. 自己紹介 •  本日の話題と関係しそうなこと   –  以前  OMG  のモデリング標準作成に参加していました   •  UML  や  MDA  はある程度なじんでいます   –  Eclipse  Conference  には  2  回参加したことがあります(モデリング系セ ション主体)   –  本年5月に Xtext  CON  がありそうなので、参加したいと思っています   –  現在の対外的活動   •  Xtext  ユーザ会   •  Eclipse  Modeling  Project  勉強会   •  Eclipse  Regional  Community/Japan  (名ばかり)
  3. 3. 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)
  4. 4. アジェンダ •  Xtext  で出来ること  これだけは見てから帰ってください   •  Xtext   –  概要   –  使い方    出来るだけ短くします       本日はこれを中心にお話します   •  Sample  Projects   –  例題   •  時間に余裕があれば   –  モデリングは  UML  だけじゃない・・・という話   –  EMF/GMF  まわりの進化の話  
  5. 5. 簡単にいうと •  Xtext  は   –  Eclipse  環境で動作する   –  テキスト型 External  DSL  開発フレームワーク   •  DSL  エディタがほぼ自動的に作成できてしまう   •  コード生成のための仕組みもある
  6. 6. Xtext  で出来ること •  デモ   –  こんなことが出来ます(エディタ側だけ)
  7. 7. 少しは気になりましたか? •  では、もう少しおつきあいください
  8. 8. 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/  
  9. 9. Eclipse  Modeling  Project hIp://www.eclipse.org/modeling/  
  10. 10. hIp://www.eclipse.org/Xtext/index.html  
  11. 11. 準備作業   •  インストール   –  updateより全体をダウンロードした方が確実   –  Diagram  Editor  for  Ecore  を追加インストールしておくと作成した文法 の ecore  モデルをクラス図的に確認できる(確認不要の方はインス トール不要)   •  設定   –  workspaceのencodingはUTF-­‐8に設定する   –  Run  configuraUonを使う   –  入力方法(”«»”)   •  その他   –  Net上に多くのXtext情報があるが、本体が進化し続けているため、最 新版では動作しない場合も往々にしてある   –  YoutubeやVimeoにも動画あり   –  ドキュメンテーションは、まず現住所のものを確認しよう   –  疑問点はマニュアルの他に  forum  や stackoverflow  もチエックしよう  
  12. 12. インストール おすすめ hIp://www.eclipse.org/Xtext/download.html  
  13. 13. Diagram  Editor  for  Ecore  インストール Help  -­‐>  Install  New  So`ware  … これを選択
  14. 14. workspace
  15. 15. Run  ConfiguraUons これを使います
  16. 16. 新規 Xtext  プロジェクト作成画面
  17. 17. こんな  .xtext  ファイルが生成されます 新規 Xtext  プロジェクト作成画面の情報に基づき作成される 我々が書き直す文法定義部分 この文法はサンプル
  18. 18. 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
  19. 19. Xtext  文法例 規則名 ? * +  0または1(つまりオプション)  0以上  1以上 Model:    (elements  +=  Element)*;   規則の最後は“;”(セミコロン)で締めくくる   =  右側の規則が1回だけ呼び出される +=  右側の規則が1回以上呼び出される(結果はリスト相当になります) ?=  右側の式が成立した場合、左側の式が真となる(ブーリアン)
  20. 20. Xtext  文法例 いずれか Element:  Datatype  |  SimpleEnUty  ;     Datatype:  'type'  name=ID  ; ID  は mixin  した別文法で下のように規定される   terminal  ID  :      ('^')?('a'..'z'|'A'..'Z'|'_')  ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;  
  21. 21. サンプルプロジェクト紹介 •  GreeUng   –  デフォルトの文法   •  Domainmodel   –  簡単  EnUty  モデル   •  Domainmodel2   –  Package  と  Import  追加   •  Domainmodel3   –  Xtend  によるコード生成追加   •  Domainmodel4   –  JVM  言語化(Xbase他)  
  22. 22. デフォルトの文法     DEMO  -­‐  GREETING
  23. 23. GreeUng
  24. 24. GreeUng •  デモで見て貰うポイント   –  プロジェクト作成   –  デフォルト文法定義   –  ArUfacts  生成(Workflow  実行)   –  エディタ起動(Run  ConfiguraUon)   –  エディタ動作(コード補完)  
  25. 25. 簡単  EnUty  モデル     DEMO  DOMAINMODEL
  26. 26. Domainmodel
  27. 27. Domainmodel •  デモで見て貰うポイント   –  EnUty  文法定義   •  シンタクスグラフ   –  エディタ動作(コード補完)   –  Ecore  ファイル   •  場所   •  Sample  ReflecUve  Editor   •  ダイアグラム表示  
  28. 28. Package  と  Import  追加   DEMO  DOMAINMODEL2
  29. 29. Domainmodel2
  30. 30. Domainmodel2 •  デモで見て貰うポイント   –  文法定義:Package  と  Import  の導入   –  エディタ動作(モデルの分割)  
  31. 31. Xtend  によるコード生成追加   DEMO  DOMAINMODEL3
  32. 32. Domainmodel3
  33. 33. Domainmodel3 •  デモで見て貰うポイント   –  Xtend  によるコード生成   –  言語の  Unit  Test  の書き方   –  カスタムバリデーションの書き方   –  MyDsl  にもコメントアウトのサンプルコード有  
  34. 34. JVM  言語化(Xbase他)   DEMO  DOMAINMODEL4
  35. 35. Domainmodel4
  36. 36. Domainmodel4 •  デモで見て貰うポイント   –  Terminal  から Xbase  へ (Java言語へ)   –  JvmModelInferer     –  Xtend  ライブラリ追加   –  Java  コード生成  
  37. 37. ここまでの例題について •  Domainmodel  から  Domainmodel4  まで、すべ て Xtext  DocumentaUon  の  Gevng  Started  セ クションで解説されているものです   –  実際に Xtext  をインストールし、これら例題をご自 分で動かしてみることをオススメします  
  38. 38. Example  Projects •  同梱されている  Example  Projects   –  Domainmodel   •  いろいろなコードが埋め込まれているので参考になり ます   –  FowlerDSL  (Statemachine)   •  同上   –  ArithmeUcs  (計算)   –  Xbase  Tutorial   –  Xtend  Tutorial   Java  コード生成をやりたい方は これらも試して下さい
  39. 39. 私のチャレンジ •  Xtext  をより上位のモデリングに使えないか、 いろいろやってみた   –  ビジネスプロセス記述   –  サービス(SOA)記述   –  エンタプライズアーキテクチャ記述
  40. 40. ビジネスプロセス記述例
  41. 41. モデリング言語は UML  だけじゃない •  OMG  のモデリング言語   –  MOF   –  UML   –  Metamodels  
  42. 42. 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
  43. 43. Eclipse  と Modeling •  EMF  関連プロジェクト(一部) EMF   Text Xtext Ecore   Tools … Xcore GMF GraphiU Spray EmfaUc EMF … + GEF Papyrus Time
  44. 44. DSLの定義 •  Domain-­‐Specific  Languages  (DSLs)  の定義は MarUn  Fowler  さんの本では次のようになって います   –  “a  computer  programming  language  of  limited   expressiveness  focused  on  a  parUcular  domain”  
  45. 45. DSLの分類 •  Internal  (or  embedded)  と External   –  ホストとなるプログラミング言語を持つものが Internal  (or  embedded)  DSLs   –  ホストとなるプログラミング言語を持たないものが External  DSLs   •  Graphical  と Textual   –  モデルを図式表現するのが Graphical  DSLs   –  モデルをテキスト表現するのが Textual  DSLs
  46. 46. GMF •  ダッシュボード
  47. 47. GMF  で実現できるエディタ例
  48. 48. そのための Ecore  モデル
  49. 49. 同じことを Xtext  で書くと
  50. 50. Xtext  のモデル記述
  51. 51. この段階では同じレベル
  52. 52. この段階でも同じレベル
  53. 53. 違うのは •  グラフィカル要素有無   •  Tooling   –  GMF   •  直観的で分かり易いグラフィカルエディタとなる   •  ツール習得時間が長く、グラフィカルエディタ作成に必要な手数が多い   •  コード生成は別途   –  Xtext   •  シンプルで一見テキストエディタ(コード補完など有)   •  ツール習得時間が長い(?)   •  コード生成にはXtend   •  振る舞い記述   –  プロセス記述的なものはグラフィカル記述が優位かも?   •  Scale   –  要素数が多くなったときに扱い易いのはどちら?(テキスト型?)
  54. 54. Tips •  メジャーリリース時に Xtext  の  DocumentaUon   を印刷し手元に置いておくといろいろ便利(検 索には  HTML  が便利)   •  Youtube  等の動画サイトに説明ビデオ有り   •  Slideshare  等に説明スライド有り   •  参考になる各種プロジェクト   –  hIp://www.eclipse.org/Xtext/community.html
  55. 55. もっとサンプルが見たい という方のために・・・
  56. 56. hIp://www.eclipse.org/Xtext/community.html   ……..
  57. 57. hIp://www.eclipse.org/Xtext/7languages.html  
  58. 58. hIp://www.eclipse.org/xtend/  
  59. 59. hIp://www.beta-­‐publish.com/  
  60. 60. 最後に •  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    

×