テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介

3,565 views

Published on

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
3,565
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
35
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

テキスト型Domain Specific Language (DSL) 開発フレームワークXtext の紹介

  1. 1. テキスト型 Domain Specific Language (DSL)  開発フレームワーク Xtext 開発フレ ムワ ク Xte t の紹介 北陸先端科学技術大学院大学 細合晋太郎 ビュ ファイブ ビューファイブ LLC 田中明 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 1
  2. 2. Xt t について Xtext について • Eclipse Modeling Project(EMP: http://www.eclipse.org/modeling/) に属するプロ ジェクト • Xtext(http://www.eclipse.org/Xtext/) • Textual Domain Specific Language (DSL) 開発フレームワーク – Xtext Grammarに基づき DSL を定義 – 必要に応じ妥当性チェックロジック追加 – DSL に基づくエディタを生成 – そのエディタでテキスト型モデルを記述 – Xpand に基づく テンプレートを定義 – そのテンプレートを使いモデルをテキスト(XMLやプログラムソースコードの一部)にM2T変換 そのテンプレ トを使いモデルをテキスト(XMLやプログラムソ スコ ドの 部)にM2T変換 • ベース技術 – EMF (Eclipse Modeling Framework) http://www.eclipse.org/modeling/emf/ – ANTLR (ANother Tool for Language Recognition) http://www antlr org/ ANTLR (ANother Tool for Language Recognition) http://www.antlr.org/ • 利用領域 – 組込みシステム開発からエンタプライズ系システム開発までのテキスト型DSL開発 • Eclipse Community Awards 2010: Most Innovative New Feature or Eclipse  Eclipse Community Awards 2010: “Most Innovative New Feature or Eclipse Project” 受賞 • 主な開発推進元: 独 itemis 社 http://www.itemis.de/ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 2
  3. 3. DSL の分類について • Domain Specific Language (DSL) 分類例 Graphical Textual Internal Yahoo Pipes (?) Pipes (?), Ruby on Rails, Ruby on Rails Google App Inventor for  Grails, Android (?) Unix shell scripts, External GMF, SQL GME, GME … MetaEdit+, Xtext, Oslo M, MPS, Spoofax/IMP,  … … 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 3
  4. 4. 公開 Documentation に Entity, State Machine などのサンプル有り 環境 デ HELIOS環境のデモ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 4
  5. 5. 作成するテキスト型モデル entity Party { property name : String property address : S String property phoneNummber : Integer ref worksFor Party ref manages P t [] f Party } entity Person extends Party { property socialSecurityNumber : String } entity Company extends Party { property publicCompany : Boolean } 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 5
  6. 6. DSL Grammar定義 テンプレ トによるモデル変換 テンプレートによるモデル変換 DSLベースエディタ / モデル … 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 6
  7. 7. Xtextの仕組みについて *dsl 言語定義 言語(メタ) (.xtext) モデル (.ecore) モデルファイル パーサ モデル *dsl.ui エディタ content assist チェック ク テンプレート プ labeling (.chk) (.xpt) DSL outline quick fi i k fix モデル テンプレー テンプレ 生成 チェッカ トエンジン コード *dsl generator dsl.generator 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 7
  8. 8. E4環境のデモ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 8
  9. 9. 4のアプリケ ション構成 e4のアプリケーション構成 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 9
  10. 10. sample.e4dsl e4 UI DSL 4 application e4app { { e4app project Application.e4xmi window win { <application:Applica.... part MyPart { <children xsi:type=“basic:Window” label=“win” hild i “b i Wi d ” l b l “ i ” label lab { <children xsi:type=“basic:Part” elementId= text “hello e4” “e4app.MyPart” } <children xsi... Id=“e4app.MyXWTPart”...> <children xsi Id “e4app MyXWTPart” > } src/parts MyPart.java xwtpart MyXWTPart class MyPart { { .... label lab2 { Label lab2 = new Label(parent,SWT.None); text “hello xwt” lab2.setText("hello xwt"); l b2 tT t("h ll t") } MyXWTPart.java MyXWTPart.xwt class MyXWTPart <Composite .....> } extends  ..... } XWTStaticPart { <Label text = “hello  } } xwt”></Label> </Composite> / 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 10
  11. 11. 国 国内 Eclipse Modeling Project  p g j コミュニティ活動について • 経緯と提案 – Eclipse Modeling が欧州で盛んなのは何故だろう? Eclipse Modeling が欧州で盛んなのは何故だろう? • 多数のEU研究プロジェクト • 産業界(自動車等)の支援・要求 (そう言えば日本でも自動車産業は ・・・) • Engineeringは元々の得意分野!? • 例:Eclipse DemoCamp in Germany: 6月に開催10回(モデリング中心) • それに比べ 日本 は ミ それに比べ、日本ではコミュニティ活動の存在自体が余り見えない(例外:日本語 テ 活動 存在自体が余り見えな (例外 日本語 化プロジェクト) 企業の内部では使われているのかも – ソフトウェアは今後も大量に開発しないといけない • もっと楽で確実な開発方法が必要 ← Modelingは一つの有力候補 – 日本でも Eclipse Modeling のコミュニティ活動を始めませんか? • とりあえず質問・相談など発言出来る「場」を作るところからスタートしてはどうで しょう。「走りながら考える」で行きませんか。賛同頂ける方をお待ちしています。 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 11
  12. 12. Eclipse Modeling Project E li M d li P j t Abstract Syntax Development Concrete Syntax Development Eclipse Modeling Framework (EMF) Graphical Modeling Framework (GMF) EMF Query Xtext EMF Transaction Model Development Tools EMF Validation UML2 Teneo UML2 Tools EMF Compare Object Constraint L Obj t C t i t Language (OCL) EMF Search XSD Ecore Tools EODM Model Transformation Generative Modeling Technologies Model to Model Transformation (M2M) GMT Atlas Transformation Language (ATL) AM3 QVT Operational Mappings Language (QVTO) Q O (Q O) AMW QVT Core Language (QVTc) MoDisco QVT Relations Language (QVTr) VIATRA2 Model Integration 他に Eclipse SOA Project (BPMN/SCA) Model Driven Development integration (MDDi) FAQ もあります 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 12
  13. 13. 日本Xtextユーザ会 日本Xt tユ ザ会 http://groups.google.com/group/xtext-users-japan 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 13
  14. 14. Q&A Eclipse Modeling Project • ご質問があればお願いします。 Xtext • ご清聴どうも有り難うございました。 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 14
  15. 15. 補足 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 15
  16. 16. インストール手順(1) インスト ル手順(1) • (幾通りかありますが)最も簡単と思われる手順 – HeliosのEclipse Modeling Tools (includes Incubating components)をダウンロ ード&解凍 – JRE:5と6の両系統インストールしておいた方が良さそう li 起動 – eclipse起動 – Marketplace client(Help→eclipse Marketplace)を用いXtextにチェックを入れ インストール – Updateの実行(現在のバージョンは1.0.1):オプション – ANTLRモジュールの追加(TMF Update):オプション • http://download.itemis.com/updates/releases // / / – Window→Preference→General→workspaceのText file encoding(エンコーディ グ指定)を ング指定)をUTF‐8に – Window→Customize Preference→ShortcutsでXtextボックスを選択 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 16
  17. 17. インストール手順(2) インスト ル手順(2) • e4の場合 – e4 SDKをインストール – e4 Update実行 – Marketplace clientをインストールしXtextをインストール – 以降はHeliosの場合と同じ 以降は 場合と同じ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 17
  18. 18. Xt t付属サンプルプロジ クト Xtext付属サンプルプロジェクト • Domain Model – UMLのClassモデル相当(本日紹介したEntityとほぼ同じ) – テキストモデルをJavaプロジェクトのsrcフォルダ配下に置くとsrc‐genフ ォルダ(要作成)配下にJavaコードを生成する機能が実装されている • State Machine 氏 出 る状態遷移機械を – Martin Fowler氏のSecret Compartmentに出てくる状態遷移機械を p Xtextで記述したもの • GMF Integration g – Domain Model相当ですがGMFとのブリッジ機能も実装されている(テ キストモデルと図形モデルの相互同期が取れます) 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 18
  19. 19. E4DSLのつかいかた
  20. 20. Eclipse SDK 4 0の環境構築 E li SDK 4.0の環境構築 • Eclipse SDKのDL – http://www.eclipse.org/eclipse4/ からEclipse SDKをDLして解凍,workspaceの設定等済ませてお から を し 解凍 設定等済ませ お く • Plugin のインストール Plugin のインスト ル – e4 package Help > Install New Software から を選択し 以外(ま Work with: からe4update Siteを選択し,ServerFeature以外(ま たは全選択)しインストール – Xtext Xpand Xtext, Xpand Help > Install New Software Work with: Helios ‐ Modeling > Xpand SDKと Xtext SDKにチェックを入れインストー > Xpand SDKと,Xtext SDKにチェックを入れインスト ル, 必要に応じてSubversionなども入れておく
  21. 21. プラグインとプロジェクトのインポート プラグインとプロジ クトのインポ ト • S F (htt // SourceForge(http://sourceforge.jp/projects/e4‐ui‐ f j / j t/ 4 i dsl/)から必要なファイルをDLする • *e4dsl.jarと*e4dsl.ui.jarをeclipseをインストールした フォルダのdropins/plugins/に配置する • Eclipseを起動し,プロジェクトエクスプローラ右クリッ ク, p , ク,Import, General > Existing Projects into  g j Workspace. Select archive fileからe4dsl_generator.zipを選択し, Select archive fileからe4dsl generator zipを選択し インポートする. – 必要に応じて 4d l i のプロジ クトもインポ トしておく 必要に応じて,e4dsl.zipのプロジェクトもインポートしておく
  22. 22. sample projectの作成 l j tの作成 • N New > Project, e4 > e4 Application Projectでプロジ P j t 4 4 A li ti P j tでプロジ ェクトを作成 • プロジェクト名は”e4app”としておく,(変更する場合 は,generatorプロジェクトの は generatorプロジェクトの – /src/templates/Extensions.ext –/ / /src/workflow/E4DslGenerator.mwe2 kfl /E4D lG t 2 のプロジェクト名の箇所も変更する必要がある.) • その他のオプションはそのままでウィザードを終了 • e4app productを開き ”Launch an Eclipse e4app.productを開き, Launch an Eclipse  application″をクリックし一度アプリケーションを実行 しておく
  23. 23. 依存関係の追加 • 以下の依存を追加しておく – org.eclipse.e4.tools.emf.liveeditor – org.eclipse.e4.xwt org eclipse e4 xwt – com.ibm.icu – org.eclipse.e4.core.di.extensions – org.eclipse.e4.xwt.css – org.eclipse.e4.xwt.ui.workbench 下5つは,plugin.xmlで追加するか, 度XWT Static Partを 下5つは plugin xmlで追加するか 一度XWT Static Partを 新規追加すると自動的に追加される. – 依存関係を追加した後は,実行の際にRun Configurations を開き,Plug‐insタブでAdd Required Plug‐insを押してApply を開き Plug insタブでAdd Required Plug insを押してApply しておく
  24. 24. E4DSLの実行 • generatorプロジェクトの実行 – /src/model/Example.e4dslを開いて適当に編集 –/ / を実行すると /src/workflow/E4DslGenerator.mwe2を実行すると,e4app kfl / l プロジェクトが更新される. – この際元からあったファイルは上書きされるので注意. 際 あ 書きされ 注意 pp 実行 • e4appの実行 – 再度アプリケーションを実行すると,Part部などが変更さ れているのが確認できる. れているのが確認できる – 現時点でPartの部品として生成できるのは,LabelとButton とTextだけ.DSLは作成しているので,Generatorを追加す とTextだけ DSLは作成しているので Generatorを追加す れば対応可能. – e4dslの文法や生成コードについては まだ固まってない e4dslの文法や生成コードについては,まだ固まってない のでドキュメント化はお待ちください.

×