SlideShare a Scribd company logo
1 of 24
Download to read offline
テキスト型 Domain Specific Language (DSL) 
        開発フレームワーク Xtext
        開発フレ ムワ ク Xte t の紹介



           北陸先端科学技術大学院大学 細合晋太郎
               ビュ ファイブ
               ビューファイブ LLC 田中明


2010/9/6          eclipse DemoCamp Helios 2010/Tokyo   1
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
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
公開 Documentation に Entity, State Machine などのサンプル有り

         環境 デ
   HELIOS環境のデモ


2010/9/6             eclipse DemoCamp Helios 2010/Tokyo   4
作成するテキスト型モデル
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
DSL Grammar定義

                                                      テンプレ トによるモデル変換
                                                      テンプレートによるモデル変換
                DSLベースエディタ / モデル




                                                          …


2010/9/6         eclipse DemoCamp Helios 2010/Tokyo              6
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
E4環境のデモ




2010/9/6   eclipse DemoCamp Helios 2010/Tokyo   8
4のアプリケ ション構成
           e4のアプリケーション構成




2010/9/6      eclipse DemoCamp Helios 2010/Tokyo   9
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
国
               国内 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
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
日本Xtextユーザ会
               日本Xt tユ ザ会
           http://groups.google.com/group/xtext-users-japan




2010/9/6               eclipse DemoCamp Helios 2010/Tokyo     13
Q&A
                                                    Eclipse Modeling Project
•   ご質問があればお願いします。                                                     Xtext




•   ご清聴どうも有り難うございました。




2010/9/6       eclipse DemoCamp Helios 2010/Tokyo                          14
補足


2010/9/6   eclipse DemoCamp Helios 2010/Tokyo   15
インストール手順(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
インストール手順(2)
                  インスト ル手順(2)
•   e4の場合
      –    e4 SDKをインストール
      –    e4 Update実行
      –    Marketplace clientをインストールしXtextをインストール
      –    以降はHeliosの場合と同じ
           以降は             場合と同じ




2010/9/6                  eclipse DemoCamp Helios 2010/Tokyo   17
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
E4DSLのつかいかた
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なども入れておく
プラグインとプロジェクトのインポート
 プラグインとプロジ クトのインポ ト
• 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のプロジェクトもインポートしておく
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″をクリックし一度アプリケーションを実行
  しておく
依存関係の追加
• 以下の依存を追加しておく
 –   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
   しておく
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の文法や生成コードについては,まだ固まってない
    のでドキュメント化はお待ちください.

More Related Content

What's hot

C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~Fujio Kojima
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesShintarou Okada
 
Object oriented-01
Object oriented-01Object oriented-01
Object oriented-01Osam Tmu
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
Xtend30分クッキング やきに駆動
Xtend30分クッキング   やきに駆動Xtend30分クッキング   やきに駆動
Xtend30分クッキング やきに駆動Shinichi Kozake
 
物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発Tatsuya Suzuki
 
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都Takuya Azumi
 
多相な関数の定義から学ぶ、型クラスデザインパターン
多相な関数の定義から学ぶ、型クラスデザインパターン多相な関数の定義から学ぶ、型クラスデザインパターン
多相な関数の定義から学ぶ、型クラスデザインパターンTaisuke Oe
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略cch-robo
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
第2回デザインパターン資料
第2回デザインパターン資料第2回デザインパターン資料
第2回デザインパターン資料gaaupp
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するkwatch
 
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming[豆ナイト]Java small object programming
[豆ナイト]Java small object programmingYuichi Hasegawa
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介Akira Tanaka
 
ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)Kazunori Sakamoto
 

What's hot (20)

C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~C#勉強会 ~ C#9の新機能 ~
C#勉強会 ~ C#9の新機能 ~
 
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core GuidelinesBoost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
 
Object oriented-01
Object oriented-01Object oriented-01
Object oriented-01
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
Boost Fusion Library
Boost Fusion LibraryBoost Fusion Library
Boost Fusion Library
 
Sharing Deep Dive
Sharing Deep DiveSharing Deep Dive
Sharing Deep Dive
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Xtend30分クッキング やきに駆動
Xtend30分クッキング   やきに駆動Xtend30分クッキング   やきに駆動
Xtend30分クッキング やきに駆動
 
物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発物体検出フレームワークMMDetectionで快適な開発
物体検出フレームワークMMDetectionで快適な開発
 
TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都TOPPERSプロジェクト紹介 OSC2016京都
TOPPERSプロジェクト紹介 OSC2016京都
 
多相な関数の定義から学ぶ、型クラスデザインパターン
多相な関数の定義から学ぶ、型クラスデザインパターン多相な関数の定義から学ぶ、型クラスデザインパターン
多相な関数の定義から学ぶ、型クラスデザインパターン
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Deep Dive C# 6.0
Deep Dive C# 6.0Deep Dive C# 6.0
Deep Dive C# 6.0
 
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
FlutterでのWidgetツリーへの状態伝播とアクセス制限の基本戦略
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
第2回デザインパターン資料
第2回デザインパターン資料第2回デザインパターン資料
第2回デザインパターン資料
 
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較するPHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
 
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming[豆ナイト]Java small object programming
[豆ナイト]Java small object programming
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
 
ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)
 

Viewers also liked

Inria - Extrait du catalogue logiciels calcul haute performance (HPC)
Inria - Extrait du catalogue logiciels calcul haute performance (HPC)Inria - Extrait du catalogue logiciels calcul haute performance (HPC)
Inria - Extrait du catalogue logiciels calcul haute performance (HPC)Inria
 
Inria - Software assets - Biotechnology
Inria - Software assets - BiotechnologyInria - Software assets - Biotechnology
Inria - Software assets - BiotechnologyInria
 
Gee Ukase
Gee UkaseGee Ukase
Gee Ukaserix
 
Inria - Bilan social 2014
Inria - Bilan social 2014Inria - Bilan social 2014
Inria - Bilan social 2014Inria
 
Su
SuSu
Suasd
 
Full Prism Solution Overview
Full Prism Solution OverviewFull Prism Solution Overview
Full Prism Solution OverviewAndrew Bain
 
Ingles8 Publishing
Ingles8 PublishingIngles8 Publishing
Ingles8 Publishingcarlos214
 
The Magnet Group - 2010 New Products
The Magnet Group - 2010 New ProductsThe Magnet Group - 2010 New Products
The Magnet Group - 2010 New Productsjacquemchugh
 
Full Prism Solution Overview
Full Prism Solution OverviewFull Prism Solution Overview
Full Prism Solution OverviewAndrew Bain
 
Outstanding researchers in infocommunications
Outstanding researchers in infocommunicationsOutstanding researchers in infocommunications
Outstanding researchers in infocommunicationsPaul Serikov
 
Technology And Student Achievement
Technology And Student AchievementTechnology And Student Achievement
Technology And Student Achievementjblikre
 
Медиа-проект "Студент-на-Дону". Стартап года 2012
Медиа-проект "Студент-на-Дону". Стартап года 2012Медиа-проект "Студент-на-Дону". Стартап года 2012
Медиа-проект "Студент-на-Дону". Стартап года 2012Paul Serikov
 
2008 Flip Chart 97 2003 Office
2008 Flip Chart 97 2003 Office2008 Flip Chart 97 2003 Office
2008 Flip Chart 97 2003 Officejoecali26
 

Viewers also liked (20)

RubyでDSL
RubyでDSLRubyでDSL
RubyでDSL
 
Inria - Extrait du catalogue logiciels calcul haute performance (HPC)
Inria - Extrait du catalogue logiciels calcul haute performance (HPC)Inria - Extrait du catalogue logiciels calcul haute performance (HPC)
Inria - Extrait du catalogue logiciels calcul haute performance (HPC)
 
Test 3
Test 3Test 3
Test 3
 
Ponencia Ri Final
Ponencia Ri FinalPonencia Ri Final
Ponencia Ri Final
 
Hfc o cli seminar
Hfc o cli seminarHfc o cli seminar
Hfc o cli seminar
 
Inria - Software assets - Biotechnology
Inria - Software assets - BiotechnologyInria - Software assets - Biotechnology
Inria - Software assets - Biotechnology
 
Gee Ukase
Gee UkaseGee Ukase
Gee Ukase
 
Test 2
Test 2Test 2
Test 2
 
SocialBOM
SocialBOMSocialBOM
SocialBOM
 
Inria - Bilan social 2014
Inria - Bilan social 2014Inria - Bilan social 2014
Inria - Bilan social 2014
 
Hfc g rf amplifiers
Hfc g rf amplifiersHfc g rf amplifiers
Hfc g rf amplifiers
 
Su
SuSu
Su
 
Full Prism Solution Overview
Full Prism Solution OverviewFull Prism Solution Overview
Full Prism Solution Overview
 
Ingles8 Publishing
Ingles8 PublishingIngles8 Publishing
Ingles8 Publishing
 
The Magnet Group - 2010 New Products
The Magnet Group - 2010 New ProductsThe Magnet Group - 2010 New Products
The Magnet Group - 2010 New Products
 
Full Prism Solution Overview
Full Prism Solution OverviewFull Prism Solution Overview
Full Prism Solution Overview
 
Outstanding researchers in infocommunications
Outstanding researchers in infocommunicationsOutstanding researchers in infocommunications
Outstanding researchers in infocommunications
 
Technology And Student Achievement
Technology And Student AchievementTechnology And Student Achievement
Technology And Student Achievement
 
Медиа-проект "Студент-на-Дону". Стартап года 2012
Медиа-проект "Студент-на-Дону". Стартап года 2012Медиа-проект "Студент-на-Дону". Стартап года 2012
Медиа-проект "Студент-на-Дону". Стартап года 2012
 
2008 Flip Chart 97 2003 Office
2008 Flip Chart 97 2003 Office2008 Flip Chart 97 2003 Office
2008 Flip Chart 97 2003 Office
 

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

jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶShumpei Shiraishi
 
EclipseCon NA 2015 report
EclipseCon NA 2015 reportEclipseCon NA 2015 report
EclipseCon NA 2015 reportAkira Tanaka
 
Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要Shintaro Hosoai
 
Xcore introduction
Xcore introductionXcore introduction
Xcore introductionAkira Tanaka
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストAtsuhiro Kubo
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinigTom Hayakawa
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Shotaro Suzuki
 
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化Akira Inoue
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~Akira Inoue
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用Takuya Iwatsuka
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Akira Inoue
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Nextdynamis
 
Electronについて
ElectronについてElectronについて
Electronについてtomowata
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うことAkira Inoue
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Akira Inoue
 
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用de:code 2017
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)Masanori Itoh
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Shinsuke Sugaya
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 

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

jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶjQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
 
EclipseCon NA 2015 report
EclipseCon NA 2015 reportEclipseCon NA 2015 report
EclipseCon NA 2015 report
 
Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要
 
Xcore introduction
Xcore introductionXcore introduction
Xcore introduction
 
Eclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテストEclipse PDT + MakeGoodによるPHPコードのテスト
Eclipse PDT + MakeGoodによるPHPコードのテスト
 
2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig2005 07 30_xwj_customizinig
2005 07 30_xwj_customizinig
 
Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...Introduction to extensions and other useful features for developing apps usin...
Introduction to extensions and other useful features for developing apps usin...
 
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
"今" 押さえておきたい! Web アプリ開発の技術トレンドとツールの進化
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
 
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
 
Xtext 紹介
Xtext 紹介Xtext 紹介
Xtext 紹介
 
JavaScript.Next
JavaScript.NextJavaScript.Next
JavaScript.Next
 
Electronについて
ElectronについてElectronについて
Electronについて
 
.NET の今と今後に思うこと
.NET の今と今後に思うこと.NET の今と今後に思うこと
.NET の今と今後に思うこと
 
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
Angular ユーザーなら押さえておきたい! TypeScript と Visual Studio Code の基礎と活用
 
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
[AI08] 深層学習フレームワーク Chainer × Microsoft で広がる応用
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 

More from Shintaro Hosoai

UMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature Model
UMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature ModelUMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature Model
UMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature ModelShintaro Hosoai
 
astah関西勉強会#2 STAMP Workbenchではじめる安全分析
astah関西勉強会#2 STAMP Workbenchではじめる安全分析astah関西勉強会#2 STAMP Workbenchではじめる安全分析
astah関西勉強会#2 STAMP Workbenchではじめる安全分析Shintaro Hosoai
 
Eclipse con2010 参加報告 upload
Eclipse con2010 参加報告 uploadEclipse con2010 参加報告 upload
Eclipse con2010 参加報告 uploadShintaro Hosoai
 

More from Shintaro Hosoai (10)

UMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature Model
UMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature ModelUMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature Model
UMLだけじゃないもやもやを解消するモデリング技術の紹介 その2 Feature Model
 
astah関西勉強会#2 STAMP Workbenchではじめる安全分析
astah関西勉強会#2 STAMP Workbenchではじめる安全分析astah関西勉強会#2 STAMP Workbenchではじめる安全分析
astah関西勉強会#2 STAMP Workbenchではじめる安全分析
 
astah関西勉強会
astah関西勉強会astah関西勉強会
astah関西勉強会
 
手抜力
手抜力手抜力
手抜力
 
Mqttで始めるIoT
Mqttで始めるIoTMqttで始めるIoT
Mqttで始めるIoT
 
Xtext入門
Xtext入門Xtext入門
Xtext入門
 
Xtext&Xtend documents
Xtext&Xtend documentsXtext&Xtend documents
Xtext&Xtend documents
 
Xtext practice
Xtext practiceXtext practice
Xtext practice
 
Umlとは
UmlとはUmlとは
Umlとは
 
Eclipse con2010 参加報告 upload
Eclipse con2010 参加報告 uploadEclipse con2010 参加報告 upload
Eclipse con2010 参加報告 upload
 

Recently uploaded

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (7)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

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

  • 1. テキスト型 Domain Specific Language (DSL)  開発フレームワーク Xtext 開発フレ ムワ ク Xte t の紹介 北陸先端科学技術大学院大学 細合晋太郎 ビュ ファイブ ビューファイブ LLC 田中明 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 1
  • 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. 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. 公開 Documentation に Entity, State Machine などのサンプル有り 環境 デ HELIOS環境のデモ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 4
  • 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. DSL Grammar定義 テンプレ トによるモデル変換 テンプレートによるモデル変換 DSLベースエディタ / モデル … 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 6
  • 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. E4環境のデモ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 8
  • 9. 4のアプリケ ション構成 e4のアプリケーション構成 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 9
  • 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. 国内 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. 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. 日本Xtextユーザ会 日本Xt tユ ザ会 http://groups.google.com/group/xtext-users-japan 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 13
  • 14. Q&A Eclipse Modeling Project • ご質問があればお願いします。 Xtext • ご清聴どうも有り難うございました。 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 14
  • 15. 補足 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 15
  • 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. インストール手順(2) インスト ル手順(2) • e4の場合 – e4 SDKをインストール – e4 Update実行 – Marketplace clientをインストールしXtextをインストール – 以降はHeliosの場合と同じ 以降は 場合と同じ 2010/9/6 eclipse DemoCamp Helios 2010/Tokyo 17
  • 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
  • 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. プラグインとプロジェクトのインポート プラグインとプロジ クトのインポ ト • 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. 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. 依存関係の追加 • 以下の依存を追加しておく – 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. 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の文法や生成コードについては,まだ固まってない のでドキュメント化はお待ちください.