SlideShare a Scribd company logo
テキスト型 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

PPT
ジェネリクスの基礎と応用 JJUG CCC 2012 Fall
PDF
Unityで覚えるC#
PDF
PDF
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
PDF
UnityでC#を勉強しはじめた私の主張
PDF
Xtend30分クッキング
PDF
C++勉強会
PDF
BOF1-Scala02.pdf
ジェネリクスの基礎と応用 JJUG CCC 2012 Fall
Unityで覚えるC#
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
UnityでC#を勉強しはじめた私の主張
Xtend30分クッキング
C++勉強会
BOF1-Scala02.pdf

What's hot (19)

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

Viewers also liked (20)

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

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

PPT
2008.10.18 L4u Tech Talk
PDF
EclipseCon NA 2015 report
PDF
Eclipse modeling 勉強会 dslについて
PDF
Xtext And Grails20091218
PPTX
Silverlightの今
PDF
イマドキの現場で使えるJavaライブラリ事情
PPTX
Eclipse modeling projectの概要
PDF
Javaにおけるモジュラリティ元年
PDF
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
PDF
Xcore introduction
PDF
TypeScriptへの入口
PDF
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
PPTX
Windows 8時代のアプリ開発
PPTX
Xtext practice
PDF
最新技術動向(2011年上期)
PDF
ScalaでAndroidアプリ開発
PPTX
つぶLT20121215
PDF
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
PDF
110409 slintky lt
2008.10.18 L4u Tech Talk
EclipseCon NA 2015 report
Eclipse modeling 勉強会 dslについて
Xtext And Grails20091218
Silverlightの今
イマドキの現場で使えるJavaライブラリ事情
Eclipse modeling projectの概要
Javaにおけるモジュラリティ元年
Scalable Generator: Using Scala in SIer Business (ScalaMatsuri)
Xcore introduction
TypeScriptへの入口
Androidとの同時開発だけどモデルをC++で書けば問題ないよねっ
Windows 8時代のアプリ開発
Xtext practice
最新技術動向(2011年上期)
ScalaでAndroidアプリ開発
つぶLT20121215
成長できるエンタープライズシステムを目指して-OSGiによるモジュール型アーキテクチャの実現-
110409 slintky lt

More from Shintaro Hosoai (9)

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

テキスト型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の文法や生成コードについては,まだ固まってない のでドキュメント化はお待ちください.