Xcore introduction

916 views

Published on

Slide used at Eclipse Modeling Meetup in Tokyo on July 26, 2013

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
916
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Xcore introduction

  1. 1. Eclipse  Xcore  紹介   田中   ビューファイブ  LLC
  2. 2. Agenda •  EMF/Ecore  について   •  Xtext  について   – Xtend  について   – Xbase    について   •  Xcore  について   •  Others   – OCLinEcore  について  
  3. 3. はじめに Modeling  oriented  world Programming  oriented  world UML  models UML  Profiles MOF  metamodels Java C C++ C# Scala COBOL Ruby Groovy Internal  DSLs External  DSLs EMF Java eMOF …..
  4. 4. はじめに hNp://ed-­‐merks.blogspot.com   The  EMF  book MERKS'  MEANDERINGS EMF:  Eclipse  Modeling  Framework   hNp://www.amazon.co.jp/EMF-­‐Eclipse-­‐Modeling-­‐Framework-­‐Series/dp/0321331885/
  5. 5. はじめに •  本日の紹介で利用するソフトウェアは   Eclipse(Kepler)のダウンロードページにある パッケージ   – Eclipse  IDE  for  Java  and  DSL  Developers     •  これに(説明のため)追加したコンポーネント   – Diagram  Editor  for  Ecore  (旧名 Ecore  Tools)    
  6. 6. EMF/Ecore  について •  EMF  Project  Homepage  より   – “The  EMF  project  is  a  modeling  framework  and   code  generaaon  facility  for  building  tools  and   other  applicaaons  based  on  a  structured  data   model.”     •  二つの要素を併せ持ったもの   – モデリングフレームワーク   – コード生成ファシリティ  
  7. 7. EMF/Ecore  について •  モデリングフレームワーク   –  eMOF  仕様に基づくモデル(メタモデル)   •  メタではないモデル作成にも利用可能   –  EMFの世界で表現されるモデルがEcoreモデル   –  EcoreもEMFモデル(”ecore.ecore”)   –  主要モデル要素   •  EClass   •  EANribute   •  EReference   •  EDatatype  
  8. 8. •  Ecore  モデル作成方法   –  XML  Schema  に基づく   –  Annotated  Java  に基づく   –  UML  モデルに基づく (Raaonal  Rose形式のみ)   –  木構造ベースのエディタ(当初からあるもの)   –  Diagram  Editor  for  Ecore(以前のEcore  Tools)のグラフィカ ルエディタ   –  UML  ツール(クラス図)からの  Export   –  テキストベースのエディタ   –  そして本日説明するXcoreエディタ EMF/Ecore  について
  9. 9. 木構造ベースのエディタ EClassに内部要素を定義出来る 別の EClass  を定義出来る
  10. 10. 木構造ベースのエディタ 利用可能な内部要素の種類
  11. 11. 木構造ベースのエディタ 定義可能な同列要素の種類
  12. 12. Diagram  Editor  for  Ecore
  13. 13. EMF/Ecore  について •  EMF  のコード生成ファシリティ   – Ecore  -­‐>  Genmodel   – Generate  
  14. 14. EMF/Ecore  について
  15. 15. Xtext  について •  テキスト型  DSL  作成フレームワーク   –  hNp://www.eclipse.org/Xtext/   –  Grammar  を定義し  Workflow  を実行すると、その Grammar  に対応した  Plugin  生成の副産物として ecore  ファイルを生成   –  “Xtext.xtext”   •  Java言語との対応付けを容易にさせる Xtext  で 作成した言語   –  Xbase(”Xbase.xtext”)   –  Xtend(”Xtend.xtext”)  
  16. 16. Xtext  について •  Xtext  プロジェクトの典型的なワークフロー   – Grammar  定義   – Custom  Validaaon  追加   – Model  Inferrer  定義   – 出来上がった  Plugin  を組み込んだ  Eclipse  の別イ ンスタンスを起動(e.g.  Run  Configuraaon)   – 新規  Java  Project  を作成し、そのソースフォルダ にモデルを作成する(モデル変換の実行) First  Phase Second  Phase
  17. 17. Xtext  について •  Xtext  Grammar  例
  18. 18. Xtext  について •  自動的に作成された Ecore  ファイル
  19. 19. Xbase •  Xtext  で書かれた  DSL  作成要素   –  hNps://github.com/eclipse/xtext/blob/master/ plugins/org.eclipse.xtext.xbase/src/org/eclipse/xtext/ xbase/Xbase.xtext     •  概要説明は   –  hNp://wiki.eclipse.org/Xbase     •  モデルベース開発の観点からは   –  ターゲットは  JVM  で  Java  ソースコードに変換   –  XExpression:  振る舞い・ロジック記述  
  20. 20. Xbase  利用例 •  Xtext  Documentaaon  イントロ部分より引用-­‐1 “ “
  21. 21. Xbase  利用例 •  Xtext  Documentaaon  イントロ部分より引用-­‐2 “ “
  22. 22. Xbase  利用例 •  Xtext  の  Grammar  定義例(先頭行)   – “grammar  org.xtext.example.mydsl.MyDsl  with   org.eclipse.xtext.common.Terminals”  (“Terminals. xtext”)   または   – “grammar  org.xtext.example.mydsl.MyDsl  with   org.eclipse.xtext.xbase.Xbase”  
  23. 23. Xtend •  Xtext  で書かれた “Modernized  Java”   •  hNp://www.eclipse.org/xtend/  より
  24. 24. Xtend •  “Modernized  Java”  の側面が強調されている(現状こちら 側のサポータが多そう:Java言語を用いたシステム開発で 生産性向上につながるためか)、けれど・・・   •  現 Xtend  は、従来の Xpand/Xtend  が進化したもの   •  ドキュメンテーションは   –  hNp://www.eclipse.org/xtend/documentaaon.html     •  EMF  ベースのモデル(XMI)を対象にテンプレート機能を用 い(構造・振る舞いの両面で)モデルからテキストへの変換 を実現  
  25. 25. Xtend  サンプルより テンプレート記述 “ “
  26. 26. Xcore  について •  “Textual  syntax  for  Ecore”   •  Xcore  は Xtext  (+Xbase  +Xtend)  を利用して作成 された Ecore  用テキスト型エディタ+α   –  テキストベースで Ecore  モデルが定義できる   –  EMF  でのモデル作成環境・コード生成環境に相当す る環境を提供   –  構造面だけでなく、振る舞い面(一部)もテキストベー スのモデルとして記述可能
  27. 27. Xcore  について •  公開されている Xcore  リソース   a.  hNp://wiki.eclipse.org/Xcore     b.  Ed  Merks  -­‐  Xcore   c.  Eclipse  Day  Florence  2012.  Ed  Merks,  "Xcore:   Ecore  Meets  Xtext”   d.  Eclipse  Community  Forum   •  EMF   •  EMFT
  28. 28. Xcore  について •  Ed  Merks  さんのXcore紹介ビデオ(b)をたどり ながら順次ポイントをみてゆきます   – なお、部分的にwiki(a)にある情報で補足します
  29. 29. Xcore  について •  Xcore  プロジェクトの作成 Xcore  project   -­‐  Xtext  project   -­‐  Plugin  project
  30. 30. Xcore  について •  Xcore  ファイルの作成
  31. 31. Xcore  について •  Package  と  Class  定義(Control  +  Space)
  32. 32. Xcore  について •  モデル定義と連動したコード生成 EMF  genmodelからの   generate  model  code  相当
  33. 33. Xcore  について •  Xcore  モデルから  Dynamic  Instance  を生成
  34. 34. Xcore  について •  生成した  XMI  ファイルの内容
  35. 35. Xcore  について •  XMI  のルート  Node  を仮に  “root”  と命名
  36. 36. Xcore  について •  包含関係:contains/container
  37. 37. Xcore  について •  Derived  Feature これだと指定が必要 自ら判定し値をセット
  38. 38. Xcore  について •  Derived  Feature この属性は自動的に値が設定される(Derived)
  39. 39. Xcore  について •  Derived  Feature   – Xtext  の利用により簡単な  Interpreter  を内蔵した エディタとなっているため
  40. 40. Xcore  について •  オペレーション 起点となる  Node  に対し パラメタで指定した名前 の  Children  Node  があ ればその  Node  をリター ン
  41. 41. Xcore  について •  Data  Type  に関する動的振る舞い(例1) String  =>  URI     URI  =>  String
  42. 42. Xcore  について •  Data  Type  に関する動的振る舞い(例2)   –  Library  の例題より   •  import  java.ual.Date   •  import  java.text.SimpleDateFormat   •  import  java.text.ParseExcepaon
  43. 43. Xcore  について 先頭行を選択した際に 表示される属性は Genmodel  相当(EMFの コード生成はGenmodel が対象)
  44. 44. Xcore  について •  属性の  Tests  Directory  に値を設定すると   •   Tests  Project  が自動生成される   簡単なテストコード例
  45. 45. Xcore  について •  動作確認しました(on  Mac)   – Xcore  -­‐>  GenModel  変換   – Rename  Refactoring  (ビデオ内容とは動作が違 う?)   •  近々動作しそう(以前動作していた模様)   – .xcore  =>  Iniaalize  Ecore  Diagram  file     – GenModel  =>  Xcore  変換
  46. 46. Others •  OCLinEcore   –  Xcore  のビデオにあった参加者からの質問:「Xcore   でOCL  は使えるか」   •  回答:「使えない」   •  Ecore  +  OCL  は OCLinEcore  という形で実現されているが、 Xcore  との統合は困難   •  OCLinEcore  のインストール:   –  Help  -­‐>  Install  New  Somware   –  Kepler  -­‐  hNp://download.eclipse.org/releases/kepler   –  Modeling  -­‐>  OCL  Examples  and  Editors  
  47. 47. まとめ •  Ecore  モデル記述にロジックを導入できる   •  Xtext  ベースの  Text  ベースのモデル記述(ダイアグ ラム生成もありそう)で Xbase/Xtend  も活用   •  Modeling  oriented  world  と  Programming  oriented   world  のギャップを狭める一つのアプローチ   •  我々にとっての課題 =>  適用領域・対象  

×