SlideShare une entreprise Scribd logo
1  sur  42
Télécharger pour lire hors ligne
モデリングと Grails の
  あやしい関係
はじめに
• 今回ご紹介する考え方・方式やツールは必ず
  しも Groovy/Grails 専用のものではありません
 – Groovy/Grails の世界にも適用可能で、後半で
   Grails との対応付けを試みました
 – 余り期待せず「こんな世界もある」ということで、
   気楽に聞いてください
自己紹介




ブログ


      仕事
モデル駆動ソフトウェア開発(MDSD)
• 主題は Model Driven Software Development
  です。
  – モデルをソフトウェア開発につなげるという考え方
    や開発手法
  – 欧州(独・仏・英ほか)で研究開発が活発


• まずは雰囲気を理解して貰うための例題から
  入ります。
ソーシャルネット(Twitter/LinkedIn)
                           山田さん
            フォロー




  Cathyさん          コネクト
                          フォロー




               コネクト
 鳩山さん
                          誰かさん
ソーシャルネットモデルエディタ



当エディタはEclipse
  GMF で作成
ソーシャルネットメタモデル

         Eclipse GMF への
          インプットデータ
モデル
• モデル(Model)         名詞 (出典:Wiktionary)
  – “A simplified representation (usually mathematical) used
    to explain the workings of a real world system or event.”
  – “The structural design of a complex system.”

• 単純化する(Simplify)           動詞 (同上)
  – To make simpler, either by reducing in complexity, reducing
    to component parts, or making easier to understand.

• モデリングとは関心事以外の詳細を切り捨て単純化した
  結果(モデル)を作る作業
  – 詳細をドロップしているため、プログラム・ソースコードの世界と
    ちと違います
モデリング言語
• 汎用(標準)モデリング言語
 – Unified Modeling Language (UML)
 – 特徴
    • グラフィカル言語(テキストより全体像を把握しやすい)
       – 実際は要素数がある程度まで
    • カバレッジが広い(広すぎる)


• 特定用途向モデリング言語
 – Domain Specific Language (DSL)
 – 特徴
    • 特定用途に最適化(カバレッジが狭い)
    • グラフィカル言語もテキストベース言語もある
    • 標準になるもあるが誰でも作成可能
DSL の分類
• Internal DSL と External DSL
   – Internal: 母体となるプログラミング言語を持つ
   – External: プログラミング言語独立

• Graphical DSL と Textual DSL
   – Graphical: ダイアグラムベース (BPMNなど)
   – Textual: テキストベース (GroovyやRubyのDSLなど)

• DSLについての一般的な説明・議論については
  Wikipediaとmartinfowler.comへどうぞ
モデル駆動ソフトウェア開発(MDSD)
• Model Driven Software
  Design/Development/Engineering (MDD, MDA, MDE,
  MBD, … ) --- 言い方多数有
• モデルとソースコードをつなげる仕組み(試み)
• モデルは「UMLモデル」だけでない
  – DSL に基づくモデル
  – UML Profile(UML拡張)を適用した拡張UMLモデル など
• モデルの作成
  – DSL/UMLモデルエディタ
  – モデル作成→{モデル変換}* もある
• モデルのテキストへの変換(コード生成)
  – モデル→ソースコード変換
4階層メタモデルアーキテクチャ
M3    メタメタモデル      Meta Object Facility (MOF)

                                    標準仕様の世界

M2    メタモデル     UML, BPDM/BPMN, BMM, CWM, …



M1     モデル      UML モデル, BPMNモデル, …


M0    インスタンス
4階層メタモデルアーキテクチャ
M3    メタメタモデル   Eclipse Modeling Framework (EMF), …

                                     標準実装の世界

M2    メタモデル          UML tools, BPMN tools, …



M1     モデル         ユーザが作成したモデル(データ)



M0    インスタンス
悪乗り

     4階層メタモデルアーキテクチャ
                                          言語設計用言語

M3    メタメタモデル                 EBNF

                                     プログラミング言語

M2    メタモデル     Java, Groovy, Grails, Scala, … 言語仕様


                   プログラミング言語を用いて書かれた
M1     モデル
                     プログラム(例:Grails Apps)


M0    インスタンス
ということで
• 「モデリング」と「プログラミング」は実は近そう

• どちらも抽象化により下位の詳細を隠蔽
 – プログラミング言語は機械語を隠蔽
 – モデリング言語はプログラミング言語を隠蔽

• プログラミング言語には対応するコンパイラやインター
  プリタがある

• モデリング言語にはどうして対応する何かが無いの?
 – モデル駆動開発(MDSD)
実例に基づいて
• ソーシャルネットワークと Grails で考えます
Grails メタモデル
• Grails 言語仕様
 – プログラミング言語は通常 EBNF 等で規定
   • 残念ですが、私はまだ Grails の EBNF による Grails 言
     語(Framework?)規定を Web 上で見つけていません
     – あれば助かったのですが・・・
     – ご存じの方おられれば是非教えてください


   • とりあえず、どこかに存在するものと勝手に想定してお
     きます
期待する Grails との対応付け
• モデルに基づき(可能な範囲で)
 – Grails の Domain Class を導きたい
 – Grails の Controller を導きたい
 – Grails の View を導きたい

• そのためには
 – モデリングツールの準備要
   • Grails 対応 Profile を組み込んだ UML ツール または Grails 対応
     DSL ツール
 – コード生成支援ツールの準備要
   • コード編集支援ツール
   • コード生成ツール
UML利用の場合
• 純粋UMLではGrailsのセマンティクスを表現でき
  ません
• Grails のメタモデルとそれに基づく UML Profile
  が必要です
 – Grails特有の概念をUMLモデルとして記述するための
   規定(標準はありません)
 – UMLツールにこの拡張(Profile定義)を組み込む
 –例
   • Grails ドメインクラス → UMLクラス
   • Grails Web Flow → UML状態遷移図やアクティビティ図
   • Grails View → UMLクラス
ツールについて
• 最初に eclipse/GMF の例を見て頂きましたが、
  ここからはドイツのオープンソースプロジェクト
  が推進している、相互に関連を持つ2種類の
  ツールについて紹介します
 – eclipse/Xtext(旧openArchitectureWare)
 – Fornax-Platform の Grails Cartridge


• 話の都合により後者から説明します
Fornax-Platform: Grails Cartridge
                       ご存じだった方
                       おられますか?
Fornax-Platform: Grails Cartridge
• この Cartridge は Grails 用の拡張を加えた UML
  図に基づいて以下の(それなりの)コード生成を
  行います
  – Domain Class
  – Controller
  – View
• 作成者によると 2007 年に大学でマスター論文
  中に行ったプロジェクトの一部だそうです
• UML ツールはオープンソースの Topcased
  – かなり多機能ですが少し癖があります
UML Profile for Grails 定義例
Domain Class定義例
Controller定義例
Demo
DSL利用の場合
• Graphical DSL
   – eclipse GMF/EMF などのツール利用
   – Grails 対応では UMLの Class 図(構造)+状態遷移図(振
     る舞い)に近いものとなるでしょう
• Textual DSL
   – eclipse Xtext, JetBrains MPS, Microsoft Oslo などのツール
     利用
   – Grails 対応では Code Completion機能を備えたIDE的なも
     のも可能です

• Goovy/Grails から離れ一般的な説明から入ります
Graphical DSL 例
• eclipse Graphical Modeling Framework (GMF)
Graphical DSL 例
• 他の Graphical DSL ツール
  – MetaEdit+ (MetaCase)
  – Generic Modeling Environment (Vanderbilt Univ.)
  – Visual Studio DSL Toolkit (Microsoft)
Graphical DSL 例
Textual DSL 例
            ご存じだった方
            おられますか?
Textual DSL 例
• 他の Textual DSL ツール
  – Oslo M Language [ と呼ばれていた技術 ]
    (Microsoft)
  – Meta Programming System (JetBrains)
Textual DSL 例
                DSL 言語定義
このEMFモデルと同義
          DSL 言語定義
Textual DSL 利用例
                           DSL ベースモデル
                                定義




この生成されたエディタにはIDE的サポート機能がおまけで付いてきます
DSL モデル変換
• UML であれ Graphical DSL であれ Textual DSL であ
  れ、最終的には何らかのメカニズムでモデルをソー
  スコードへ変換

• ここでは Xtext と同じファミリーにある機能(Xtext の
  Distribution に含まれる)を利用
DSL モデル変換例
             変換手順定義 &
              変換結果




 当テンプレート
 を使いモデル
   変換
DSL モデル変換例
             変換手順定義 &
              変換結果




 当テンプレート
 を使いモデル
   変換
Demo
体験から得た Xtext 適用のこつ
• Xtext で定義するDSL要素はメタモデルレベルのものを選
  ぶと効果的
  – クラス(Entity)や状態遷移図はサンプルをそのままかベースに
    すれば良い
  – UMLほかのメタモデル仕様も素材になる

• 生成されるエディタ
  – 無理にソースエディタを目指さない(雑音が混入するため)
  – 本質的な情報だけ記述できればよしとする

• 残りはコード変換テンプレートで頑張る(LoopingやNesting
  などの構造も活用)
日本Xtextユーザ会
http://groups.google.co.jp/group/xtext-users-japan
最後に
• モデリングとプログラミングの境界領域に関する話で
  した
  – 夜の部で感想など聞かせて頂ければと思います

• JGGUG Groovy Lovers のみなさんの Enjoy Groovy
  Programming という気持ちに棹さす積りはありません

• むしろ、こういった技術・ツールと組み合わせるともっ
  と面白いことが出来るかもしれない、ということです

• ご清聴どうもありがとうございました

Contenu connexe

En vedette

Groovy AST Demystified
Groovy AST DemystifiedGroovy AST Demystified
Groovy AST DemystifiedAndres Almiray
 
Griffon Update Gr8conf 2013
Griffon Update Gr8conf 2013Griffon Update Gr8conf 2013
Griffon Update Gr8conf 2013Andres Almiray
 
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjugGroovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjugkyon mm
 
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Uehara Junji
 
Grailsでシステム構築
Grailsでシステム構築Grailsでシステム構築
Grailsでシステム構築Megumi Sato
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGUehara Junji
 
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所Takuma Watabiki
 
Formato plano 10th week2_form_noungerund
Formato plano 10th week2_form_noungerundFormato plano 10th week2_form_noungerund
Formato plano 10th week2_form_noungerundEvelin Peña
 
Qrious things qr codes
Qrious things qr codesQrious things qr codes
Qrious things qr codeslnash
 
Technology Showcase
Technology ShowcaseTechnology Showcase
Technology Showcaselenthurman
 
Presentation Skills Workshop - KUMC Fellowship 2014
Presentation Skills Workshop - KUMC Fellowship 2014Presentation Skills Workshop - KUMC Fellowship 2014
Presentation Skills Workshop - KUMC Fellowship 2014Christian Sinclair
 
How & Why to do tweetchat for hospice and palliative medicine
How & Why to do tweetchat for hospice and palliative medicineHow & Why to do tweetchat for hospice and palliative medicine
How & Why to do tweetchat for hospice and palliative medicineChristian Sinclair
 
The Five Senses And You!
The Five Senses And You!The Five Senses And You!
The Five Senses And You!jhyoung
 
La Porte Profile Apr 09
La Porte Profile Apr 09La Porte Profile Apr 09
La Porte Profile Apr 09Maggie Poppy
 
Social Media In Palliative Care Communities 3 of 3 - Widera
Social Media In Palliative Care Communities 3 of 3 - WideraSocial Media In Palliative Care Communities 3 of 3 - Widera
Social Media In Palliative Care Communities 3 of 3 - WideraChristian Sinclair
 

En vedette (20)

GroovyでJSON2014
GroovyでJSON2014GroovyでJSON2014
GroovyでJSON2014
 
Groovy AST Demystified
Groovy AST DemystifiedGroovy AST Demystified
Groovy AST Demystified
 
Griffon Update Gr8conf 2013
Griffon Update Gr8conf 2013Griffon Update Gr8conf 2013
Griffon Update Gr8conf 2013
 
Groovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjugGroovyで学ぶプロセス代数 #jjug
Groovyで学ぶプロセス代数 #jjug
 
Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait Introduce Groovy 2.3 trait
Introduce Groovy 2.3 trait
 
Grailsでシステム構築
Grailsでシステム構築Grailsでシステム構築
Grailsでシステム構築
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
簡単!Groovy入門
簡単!Groovy入門簡単!Groovy入門
簡単!Groovy入門
 
Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所Grailsでドメイン駆動設計を実践する時の勘所
Grailsでドメイン駆動設計を実践する時の勘所
 
Formato plano 10th week2_form_noungerund
Formato plano 10th week2_form_noungerundFormato plano 10th week2_form_noungerund
Formato plano 10th week2_form_noungerund
 
Friend
FriendFriend
Friend
 
Qrious things qr codes
Qrious things qr codesQrious things qr codes
Qrious things qr codes
 
Graduates
GraduatesGraduates
Graduates
 
Technology Showcase
Technology ShowcaseTechnology Showcase
Technology Showcase
 
Presentation Skills Workshop - KUMC Fellowship 2014
Presentation Skills Workshop - KUMC Fellowship 2014Presentation Skills Workshop - KUMC Fellowship 2014
Presentation Skills Workshop - KUMC Fellowship 2014
 
How & Why to do tweetchat for hospice and palliative medicine
How & Why to do tweetchat for hospice and palliative medicineHow & Why to do tweetchat for hospice and palliative medicine
How & Why to do tweetchat for hospice and palliative medicine
 
The Five Senses And You!
The Five Senses And You!The Five Senses And You!
The Five Senses And You!
 
La Porte Profile Apr 09
La Porte Profile Apr 09La Porte Profile Apr 09
La Porte Profile Apr 09
 
Good programmer habits
Good programmer habitsGood programmer habits
Good programmer habits
 
Social Media In Palliative Care Communities 3 of 3 - Widera
Social Media In Palliative Care Communities 3 of 3 - WideraSocial Media In Palliative Care Communities 3 of 3 - Widera
Social Media In Palliative Care Communities 3 of 3 - Widera
 

Similaire à Xtext And Grails20091218

Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要Shintaro Hosoai
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】Tomoharu ASAMI
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】Tomoharu ASAMI
 
2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysis2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysisn-yuki
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう増田 亨
 
Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編
Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編
Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編Knowledge & Experience
 
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...Atsuhiro Kubo
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminarAtushi Sugiyama
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
Eclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめにEclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめにAkira Tanaka
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門増田 亨
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめKenichi Sonoda
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】Tomoharu ASAMI
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計アシアル株式会社
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】Tomoharu ASAMI
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309Nobuhiro Sue
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門Daiyu Hatakeyama
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)Masayuki Kanou
 

Similaire à Xtext And Grails20091218 (20)

Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
 
2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysis2009 qsic-constructing feature models using goal-oriented analysis
2009 qsic-constructing feature models using goal-oriented analysis
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編
Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編
Conceptual Modeling Workshop Desing - 概念モデリングワークショップ 設計編
 
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...Frameworks We Live By: Design by day-to-day framework development: Multi-para...
Frameworks We Live By: Design by day-to-day framework development: Multi-para...
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
Eclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめにEclipse modeling 勉強会 はじめに
Eclipse modeling 勉強会 はじめに
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめMLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
【アシアル塾】PHPオブジェクト指向再入門・第四回デザインパターンに学ぶクラス設計
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
 
Groovy base gradle_20130309
Groovy base gradle_20130309Groovy base gradle_20130309
Groovy base gradle_20130309
 
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
 

Plus de Akira Tanaka

Developing Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse SiriusDeveloping Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse SiriusAkira Tanaka
 
EclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling reportEclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling reportAkira Tanaka
 
Eclipse Sirius Applied to a RAD Tool in Japan
Eclipse Sirius Applied to a RAD Tool in JapanEclipse Sirius Applied to a RAD Tool in Japan
Eclipse Sirius Applied to a RAD Tool in JapanAkira Tanaka
 
EclipseCon France 2018 report
EclipseCon France 2018 reportEclipseCon France 2018 report
EclipseCon France 2018 reportAkira Tanaka
 
Eclipse Modeling Environment 概要
Eclipse Modeling Environment 概要Eclipse Modeling Environment 概要
Eclipse Modeling Environment 概要Akira Tanaka
 
Eclipse con2017参加報告公開版
Eclipse con2017参加報告公開版Eclipse con2017参加報告公開版
Eclipse con2017参加報告公開版Akira Tanaka
 
Simple Line-Tracer statechart simulation with Yakindu
Simple Line-Tracer statechart simulation with YakinduSimple Line-Tracer statechart simulation with Yakindu
Simple Line-Tracer statechart simulation with YakinduAkira Tanaka
 
EclipseCon NA2016 report
EclipseCon NA2016 reportEclipseCon NA2016 report
EclipseCon NA2016 reportAkira Tanaka
 
Sirius を試してみて
Sirius を試してみてSirius を試してみて
Sirius を試してみてAkira Tanaka
 
EMF Forms Introduction
EMF Forms IntroductionEMF Forms Introduction
EMF Forms IntroductionAkira Tanaka
 
EclipseCon NA 2015 report
EclipseCon NA 2015 reportEclipseCon NA 2015 report
EclipseCon NA 2015 reportAkira Tanaka
 
OCL in Papyrus Introduction
OCL in Papyrus IntroductionOCL in Papyrus Introduction
OCL in Papyrus IntroductionAkira Tanaka
 
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...Akira Tanaka
 
Xcore introduction
Xcore introductionXcore introduction
Xcore introductionAkira Tanaka
 
Eclipse Modeling QVT
Eclipse Modeling QVTEclipse Modeling QVT
Eclipse Modeling QVTAkira Tanaka
 

Plus de Akira Tanaka (20)

Developing Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse SiriusDeveloping Modeling Tool for RM-ODP with Eclipse Sirius
Developing Modeling Tool for RM-ODP with Eclipse Sirius
 
DSL4ODP Diagrams
DSL4ODP DiagramsDSL4ODP Diagrams
DSL4ODP Diagrams
 
Dsl4 odp diagrams
Dsl4 odp diagramsDsl4 odp diagrams
Dsl4 odp diagrams
 
EclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling reportEclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling report
 
Sirius in 30 min.
Sirius in 30 min.Sirius in 30 min.
Sirius in 30 min.
 
Eclipse Sirius Applied to a RAD Tool in Japan
Eclipse Sirius Applied to a RAD Tool in JapanEclipse Sirius Applied to a RAD Tool in Japan
Eclipse Sirius Applied to a RAD Tool in Japan
 
EclipseCon France 2018 report
EclipseCon France 2018 reportEclipseCon France 2018 report
EclipseCon France 2018 report
 
Eclipse Modeling Environment 概要
Eclipse Modeling Environment 概要Eclipse Modeling Environment 概要
Eclipse Modeling Environment 概要
 
Eclipse con2017参加報告公開版
Eclipse con2017参加報告公開版Eclipse con2017参加報告公開版
Eclipse con2017参加報告公開版
 
Simple Line-Tracer statechart simulation with Yakindu
Simple Line-Tracer statechart simulation with YakinduSimple Line-Tracer statechart simulation with Yakindu
Simple Line-Tracer statechart simulation with Yakindu
 
EclipseCon NA2016 report
EclipseCon NA2016 reportEclipseCon NA2016 report
EclipseCon NA2016 report
 
Sirius を試してみて
Sirius を試してみてSirius を試してみて
Sirius を試してみて
 
EMF Forms Introduction
EMF Forms IntroductionEMF Forms Introduction
EMF Forms Introduction
 
EclipseCon NA 2015 report
EclipseCon NA 2015 reportEclipseCon NA 2015 report
EclipseCon NA 2015 report
 
OCL in Papyrus Introduction
OCL in Papyrus IntroductionOCL in Papyrus Introduction
OCL in Papyrus Introduction
 
RM-ODP 概要
RM-ODP 概要RM-ODP 概要
RM-ODP 概要
 
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
Extension Mechanism for Integrating New Technology Elements into Viewpoint ba...
 
Xcore introduction
Xcore introductionXcore introduction
Xcore introduction
 
Xtext 紹介
Xtext 紹介Xtext 紹介
Xtext 紹介
 
Eclipse Modeling QVT
Eclipse Modeling QVTEclipse Modeling QVT
Eclipse Modeling QVT
 

Dernier

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Dernier (9)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Xtext And Grails20091218

  • 1. モデリングと Grails の あやしい関係
  • 2. はじめに • 今回ご紹介する考え方・方式やツールは必ず しも Groovy/Grails 専用のものではありません – Groovy/Grails の世界にも適用可能で、後半で Grails との対応付けを試みました – 余り期待せず「こんな世界もある」ということで、 気楽に聞いてください
  • 4. モデル駆動ソフトウェア開発(MDSD) • 主題は Model Driven Software Development です。 – モデルをソフトウェア開発につなげるという考え方 や開発手法 – 欧州(独・仏・英ほか)で研究開発が活発 • まずは雰囲気を理解して貰うための例題から 入ります。
  • 5. ソーシャルネット(Twitter/LinkedIn) 山田さん フォロー Cathyさん コネクト フォロー コネクト 鳩山さん 誰かさん
  • 7. ソーシャルネットメタモデル Eclipse GMF への インプットデータ
  • 8. モデル • モデル(Model) 名詞 (出典:Wiktionary) – “A simplified representation (usually mathematical) used to explain the workings of a real world system or event.” – “The structural design of a complex system.” • 単純化する(Simplify) 動詞 (同上) – To make simpler, either by reducing in complexity, reducing to component parts, or making easier to understand. • モデリングとは関心事以外の詳細を切り捨て単純化した 結果(モデル)を作る作業 – 詳細をドロップしているため、プログラム・ソースコードの世界と ちと違います
  • 9. モデリング言語 • 汎用(標準)モデリング言語 – Unified Modeling Language (UML) – 特徴 • グラフィカル言語(テキストより全体像を把握しやすい) – 実際は要素数がある程度まで • カバレッジが広い(広すぎる) • 特定用途向モデリング言語 – Domain Specific Language (DSL) – 特徴 • 特定用途に最適化(カバレッジが狭い) • グラフィカル言語もテキストベース言語もある • 標準になるもあるが誰でも作成可能
  • 10. DSL の分類 • Internal DSL と External DSL – Internal: 母体となるプログラミング言語を持つ – External: プログラミング言語独立 • Graphical DSL と Textual DSL – Graphical: ダイアグラムベース (BPMNなど) – Textual: テキストベース (GroovyやRubyのDSLなど) • DSLについての一般的な説明・議論については Wikipediaとmartinfowler.comへどうぞ
  • 11. モデル駆動ソフトウェア開発(MDSD) • Model Driven Software Design/Development/Engineering (MDD, MDA, MDE, MBD, … ) --- 言い方多数有 • モデルとソースコードをつなげる仕組み(試み) • モデルは「UMLモデル」だけでない – DSL に基づくモデル – UML Profile(UML拡張)を適用した拡張UMLモデル など • モデルの作成 – DSL/UMLモデルエディタ – モデル作成→{モデル変換}* もある • モデルのテキストへの変換(コード生成) – モデル→ソースコード変換
  • 12. 4階層メタモデルアーキテクチャ M3 メタメタモデル Meta Object Facility (MOF) 標準仕様の世界 M2 メタモデル UML, BPDM/BPMN, BMM, CWM, … M1 モデル UML モデル, BPMNモデル, … M0 インスタンス
  • 13. 4階層メタモデルアーキテクチャ M3 メタメタモデル Eclipse Modeling Framework (EMF), … 標準実装の世界 M2 メタモデル UML tools, BPMN tools, … M1 モデル ユーザが作成したモデル(データ) M0 インスタンス
  • 14. 悪乗り 4階層メタモデルアーキテクチャ 言語設計用言語 M3 メタメタモデル EBNF プログラミング言語 M2 メタモデル Java, Groovy, Grails, Scala, … 言語仕様 プログラミング言語を用いて書かれた M1 モデル プログラム(例:Grails Apps) M0 インスタンス
  • 15. ということで • 「モデリング」と「プログラミング」は実は近そう • どちらも抽象化により下位の詳細を隠蔽 – プログラミング言語は機械語を隠蔽 – モデリング言語はプログラミング言語を隠蔽 • プログラミング言語には対応するコンパイラやインター プリタがある • モデリング言語にはどうして対応する何かが無いの? – モデル駆動開発(MDSD)
  • 17. Grails メタモデル • Grails 言語仕様 – プログラミング言語は通常 EBNF 等で規定 • 残念ですが、私はまだ Grails の EBNF による Grails 言 語(Framework?)規定を Web 上で見つけていません – あれば助かったのですが・・・ – ご存じの方おられれば是非教えてください • とりあえず、どこかに存在するものと勝手に想定してお きます
  • 18. 期待する Grails との対応付け • モデルに基づき(可能な範囲で) – Grails の Domain Class を導きたい – Grails の Controller を導きたい – Grails の View を導きたい • そのためには – モデリングツールの準備要 • Grails 対応 Profile を組み込んだ UML ツール または Grails 対応 DSL ツール – コード生成支援ツールの準備要 • コード編集支援ツール • コード生成ツール
  • 19. UML利用の場合 • 純粋UMLではGrailsのセマンティクスを表現でき ません • Grails のメタモデルとそれに基づく UML Profile が必要です – Grails特有の概念をUMLモデルとして記述するための 規定(標準はありません) – UMLツールにこの拡張(Profile定義)を組み込む –例 • Grails ドメインクラス → UMLクラス • Grails Web Flow → UML状態遷移図やアクティビティ図 • Grails View → UMLクラス
  • 20. ツールについて • 最初に eclipse/GMF の例を見て頂きましたが、 ここからはドイツのオープンソースプロジェクト が推進している、相互に関連を持つ2種類の ツールについて紹介します – eclipse/Xtext(旧openArchitectureWare) – Fornax-Platform の Grails Cartridge • 話の都合により後者から説明します
  • 21. Fornax-Platform: Grails Cartridge ご存じだった方 おられますか?
  • 22. Fornax-Platform: Grails Cartridge • この Cartridge は Grails 用の拡張を加えた UML 図に基づいて以下の(それなりの)コード生成を 行います – Domain Class – Controller – View • 作成者によると 2007 年に大学でマスター論文 中に行ったプロジェクトの一部だそうです • UML ツールはオープンソースの Topcased – かなり多機能ですが少し癖があります
  • 23. UML Profile for Grails 定義例
  • 26. Demo
  • 27. DSL利用の場合 • Graphical DSL – eclipse GMF/EMF などのツール利用 – Grails 対応では UMLの Class 図(構造)+状態遷移図(振 る舞い)に近いものとなるでしょう • Textual DSL – eclipse Xtext, JetBrains MPS, Microsoft Oslo などのツール 利用 – Grails 対応では Code Completion機能を備えたIDE的なも のも可能です • Goovy/Grails から離れ一般的な説明から入ります
  • 28. Graphical DSL 例 • eclipse Graphical Modeling Framework (GMF)
  • 29. Graphical DSL 例 • 他の Graphical DSL ツール – MetaEdit+ (MetaCase) – Generic Modeling Environment (Vanderbilt Univ.) – Visual Studio DSL Toolkit (Microsoft)
  • 31. Textual DSL 例 ご存じだった方 おられますか?
  • 32. Textual DSL 例 • 他の Textual DSL ツール – Oslo M Language [ と呼ばれていた技術 ] (Microsoft) – Meta Programming System (JetBrains)
  • 33. Textual DSL 例 DSL 言語定義
  • 34. このEMFモデルと同義 DSL 言語定義
  • 35. Textual DSL 利用例 DSL ベースモデル 定義 この生成されたエディタにはIDE的サポート機能がおまけで付いてきます
  • 36. DSL モデル変換 • UML であれ Graphical DSL であれ Textual DSL であ れ、最終的には何らかのメカニズムでモデルをソー スコードへ変換 • ここでは Xtext と同じファミリーにある機能(Xtext の Distribution に含まれる)を利用
  • 37. DSL モデル変換例 変換手順定義 & 変換結果 当テンプレート を使いモデル 変換
  • 38. DSL モデル変換例 変換手順定義 & 変換結果 当テンプレート を使いモデル 変換
  • 39. Demo
  • 40. 体験から得た Xtext 適用のこつ • Xtext で定義するDSL要素はメタモデルレベルのものを選 ぶと効果的 – クラス(Entity)や状態遷移図はサンプルをそのままかベースに すれば良い – UMLほかのメタモデル仕様も素材になる • 生成されるエディタ – 無理にソースエディタを目指さない(雑音が混入するため) – 本質的な情報だけ記述できればよしとする • 残りはコード変換テンプレートで頑張る(LoopingやNesting などの構造も活用)
  • 42. 最後に • モデリングとプログラミングの境界領域に関する話で した – 夜の部で感想など聞かせて頂ければと思います • JGGUG Groovy Lovers のみなさんの Enjoy Groovy Programming という気持ちに棹さす積りはありません • むしろ、こういった技術・ツールと組み合わせるともっ と面白いことが出来るかもしれない、ということです • ご清聴どうもありがとうございました