SlideShare una empresa de Scribd logo
1 de 61
Descargar para leer sin conexión
⽂文書をプログラムにする技術!
-­‐	
  SimpleModeler	
  +	
  	
  
	
  	
  Mindmap	
  &	
  SmartDox
2012年年10⽉月22⽇日
浅海智晴
浅海のプロフィール
•  1985年年-2001年年:富⼠士通
     •  UNIX OSをビジネス向けに改造する仕事
       •    ファイル管理理、分散ファイルシステム、Webサーバなど
       •    信頼性、運⽤用管理理、COBOL向けの改造
     •  1993年年頃からオブジェクト・モデリングの調査を始める
     •  1995年年からJavaの利利⽤用を始める
     •  1998年年からJava&XMLのフリーソフトを開発・公開(個⼈人活動)
       •    SmartDoc(XML⽂文書処理理系)、Relaxer(プログラム⾃自動⽣生成)
•  2001年年-現在:浅海智晴事務所代表
     •  モデリング、XML、Javaのコンサルティング、教育活動
•  2002、2003年年度度:IPA未踏に採⽤用
     •  Relaxer (DSLによるプログラムの⾃自動⽣生成)
•    2005年年度度-2007年年度度:稚内北北星学園⼤大学東京サテライト校教授
•    2007年年度度-現在:⽇日本Javaユーザグループ副会⻑⾧長
•    2009年年2⽉月-現在:edge2.cc主宰
•    2009年年5⽉月-現在:匠Labフェロー
開発プログラム
•  SmartDoc (1998年年)[Java]
  •  XML⽂文書処理理系
  •  専⽤用XML⽂文書からHTML、LaTeX、プレインテキストを⽣生成
•  Relaxer (2000年年)[Java]
  •  XMLスキーマ⾔言語RELAXをDSLとして⽤用いたスキーマ・コンパイラ
  •  RELAXからJavaプログラム、W3C XML Schemaなどを⽣生成
•  SmartCase (2004年年、試作)[Java]
  •  専⽤用XML⽂文書でユースケース・モデルを記述
  •  仕様書を⽣生成
•  JavaDSL (2007年年、試作)[Java]
  •  JavaをDSLのメタ⾔言語としてオブジェクト・モデルを記述
  •  Javaプログラムと仕様書を⽣生成
•  SimpleModler (2008年年〜~)[Scala]
  •  ScalaをDSLのメタ⾔言語としてオブジェクト・モデルを記述
  •  Javaプログラムと仕様書を⽣生成
•  SmartDox (2012年年〜~)[Scala]
  •  Emacs org-modeベースの⽂文書処理理システム
⽂文脈
論論点
•  ソフトウェア開発における⽇日本語記述の仕様の取り扱い
•  ⽇日本語、モデル、プログラムを連携する技法
 •  ⽇日本語記述による仕様を形骸化させない
 •  考え⽅方、⽅方法論論、ツール
•  オントロジーその他、他分野の技術を活⽤用できないか?
 •  ご意⾒見見を頂きたいポイントです。
アジェンダ

ユビキタス⾔言語

 MindmapModeling

  SmartDox DSL DSL

    SimpleModeler
ユビキタス⾔言語
⽇日本語、モデル、プログラム
⽇日本語、モデル、プログラム
ユビキタス⾔言語
メタ・モデル
オブジェクトモデリング
協調の実装技術
がボトルネック              ドメイン・モデル
 になっている         状態
                機械

           協調
                 静的  
アプリケーション         構造
  モデル
PIM/PSM/実装

                            CIM : Computer Independent Model
                   DSL      PIM : Platform Independent Model
     CIM
                PIM         PSM : Platform Specific Model
                            DSL: Domain Specific Language
                      DSL
               PSM




 非機能要求          実装                  プラットフォーム
           (Java、 XML、 …)
クラウド時代のソフトウェア
開発

                                      業務
    業務

                                    アーキテクチャ
    方式                                開発


               クラウドに飲み込まれてしまう!
    製造                            コンポーネント開発
                 プラットフォームの共用
              コンポーネント・サービスの再利用
                   オフショア開発
                  プログラム自動生成
 システム保守・運用                        システム保守・運用
ハードウェア保守・運用                      ハードウェア保守・運用
DSL駆動開発&コンポーネン
ト
        分析           設計         実装



               DSL           自動生成      コンポーネント

        OO分析

                     OO設計       OO実装   コンポーネント




  DSL                 自動生成             コンポーネント




               DSL           自動生成      コンポーネント

        OO分析

                     OO設計       OO実装   コンポーネント
DSL駆動開発とは
•  テキストDSLを⽤用いたモデル駆動開発
 •  UMLをプログラミング⾔言語的に⽤用いることは間違いだっ
    た!?
•  テキストDSLでモデルを記述
 •  作成効率率率はテキストが圧倒的に効率率率的
•  必要に応じてUMLの図を⽣生成
 •  モデルの視認性はUMLが上    モデルをテキストで記述する
•  テキストDSLの実現⽅方法       モデルをデータとして
 •  内部DSL:ホスト⾔言語上に構築   操作して成果物を⽣生成する
 •  外部DSL:スクラッチで⾔言語を作成
SimpleModelingの本
SimpleModelingモデル変換
業務モデル          ドメイン・モデル           要求モデル          システム・モデル                  設計モデル              実装



                    静的構造                             エンティティ                   ドメイン層                ドメイン層

          抽出
                                  具体化                                                                      格納
 現実世界
                                                                                                                     データベース




                                      ドメイン・モデル




        抽出
                                                      コントロール                アプリケーション層         アプリケーション層
                             ボキャブラリ                              詳細化                    実現




  動的モデル
                                           具体化

                   文脈

                                  ユースケース




                                           具体化
                           利用事例                       バウンダリ                プレゼンテーション層        プレゼンテーション層


                                                                                                           操作

                              やりたいこと



                                                                                                           エンド・ユーザ


                                                            アプリケーション・モデル
SimpleModeling全体像
                   ドメイン・モデル                        要求モデル               システム・モデル             設計モデル




                                   用語
                                   事実                      契約
 自然言語             規則               契約                     ユースケース
          宣言モデル        拡張   静的モデル          利用      動的モデル




                                                     変換
                                                                         コラボレーション              コラボレーション
                                                                       動的モデル                動的モデル          アプリケ
                                                                                                           ーション・
                              同期




                                                   機能モデル          変換                  具体化                   モデル
                                                    サービス契約             静的モデル                静的モデル
                                                    データフロー図                   クラス図                  クラス図
オブジェクト・
                                                            OCL
           同期




                                                                         操作




                                                                                              操作
 モデル
                                        OCL                                     OCL
                                    クラス図                                      クラス図                 クラス図
                            静的モデル                  変換                  静的モデル          具体化   静的モデル
                                                                                                           ドメイン・
                                                                                                            モデル
                                                                                            動的モデル
                    張
                   拡




                                                                                        化
                                                                                       体
                                                                                      具
ルール・モデル   宣言モデル                               変換                        宣言モデル
           ビジネス・ルール                                                      ビジネス・ルール
UMLの⻑⾧長所と短所
•  ⻑⾧長所
  •  唯⼀一の標準オブジェクト・モデル記法である。
  •  メタ・モデルが厳密に定義されている。
  •  グラフィカル⾔言語であり、概要情報の伝達にすぐれてい
     る。
•  短所
  •  オブジェクト・モデル以外の記述には必ずしも適してい
     ない。
  •  オブジェクト・モデルも完全に記述できるわけではない。
  •  作成効率率率が必ずしも⾼高くない。
  •  モデル・リポジトリの操作性がよくない。
  •  ⼤大規模開発に必ずしも適していない。
  •  ⾃自然⾔言語情報の取り扱いが不不⼗十分。
Modegramming (モデグラミング)

•  Modeling + Programming
 •  モデリングとプログラミングの融合
•  テキストDSL+モデルコンパイラによるモデル駆動
   開発
 •  DSL (Domain Specific Language)
     •  Scala DSL
     •  Mindmap DSL (MindmapModeling)
     •  Excel DSL, XML DSL, JRuby DSLなど必要に応じて
 •  メタ・モデル(モデル体系)
    •  SimpleModeling
 •  モデルコンパイラ
    •  SimpleModeler
SimpleModeling技術
•  SimpleModeling
  •  企業アプリケーション向けモデリング⼿手法
  •  業務モデリング、ドメイン・モデリング、要求モデリング、
     システム・モデリング
•  MindmapModeling
  •  SimpleModelingのモデル抽出⼿手法
  •  ドメイン・モデリング(+業務モデリング)
•  SimpleModeler
  •  SimpleModeling⽤用モデル・コンパイラ
MindmapModeling
MindmapModeling
•  MindmapModelingはマインドマップを使ってモデルを
   作成する⼿手法。
 •  稚内北北星学園⼤大学東京サテライト校で実務者をターゲット
    としたモデリング教育向けに開発
•  問題空間側のモデルをマインドマップで記述することが
   できる。
 •  業務モデル : 業務ユースケース
 •  ドメイン・モデル : 静的構造モデル
•  MindmapModelingと⼀一般的なマインドマップの違い。
 •  MindmapModelingモデルは、マインドマップの上に独⾃自構造
    を拡張しており、オブジェクト・モデルに落落とし込む⼿手順が確
    ⽴立立している。
なぜMindmapModelingなのか
•  ⾃自然⾔言語(⽇日本語)による⽂文章情報からいかにオブジェクト・モ
   デルを作成するのか?
 •  ⾃自然⾔言語(⽇日本語)→UMLを直接作成するのは難しい。
 •  ⾃自然⾔言語(⽇日本語)ベースの中間的な構造モデルがあるとよい。
 •  この⽬目的にはマインドマップが最適。
•  単なるマインドマップでは不不⼗十分
 •  オブジェクト・モデルへの変換を前提にしたマインドマップベー
    スのフォーマットが有効。
 •  このためには⽬目的にかなったメタ・モデルをバックグラウンドに
    したマインドマップのフォーマットでなければならない。
 •  このフォーマットがMindmapModeling。
•  オブジェクト・モデルをメタファで理理解できる。
 •  オブジェクト・モデリングの”コツ”を習得
MindmapModelingのコツ
•  ⼊入⼒力力となる⾃自然⾔言語の⽂文章(雑誌記事など)は、仕様化の
   ための⽅方針やモデルの⾻骨格、詳細情報が不不⼗十分なので、
   その現実を受け⼊入れて適宜モデルを補う。
 •  構想⼒力力、提案⼒力力もモデリング技術のうち
•  MindmapModelingのモデルは、プログラムで実装可能
   であることが重要。実装がイメージできないモデルは、
   間違いと考えてよい。
•  仕様の⾻骨格は「物語」で構築する。「物語」を明確にす
   ることで、モデルの取捨選択、モデル化⽅方針の選択、不不
   ⾜足部分の補完を⾏行行うことができる。
MindmapModelingについて
•  このスライドが参考になると思います。
 •  MindmapModelingチュートリアル
 •  http://www.slideshare.net/asami224/
    mindmapmodeling
•  毎⽉月勉強会やってます。
 •  横浜モデリング勉強会
 •  http://www.facebook.com/groups/223587707726703/
   •  ワークショップの進め⽅方
   •  http://www.facebook.com/groups/223587707726703/
      doc/370544933030979/
MindmapModelingの例例
SimpleModelerで⽣生成した
クラス図
SmartDox  DSL
SmartDox DSL
•  SmartDox
  •  https://github.com/asami/smartdoxprocessor
  •  SmartDoc後継
  •  Emacs org-modeベースの⽂文書処理理システム
•  SmartDox DSL
  •  固いモデル:プログラムに落落ちるモデル
    •  ドメイン・モデルなど
  •  柔らかいモデル:プログラムに落落ちないモデル
    •  要求仕様など
•  SmartDoc DSLで記述した⽂文書
  •  固いモデルと柔らかいモデルが混在
  •  ⽂文書の中からマーキングルールを使って⾃自動抽出
SimpleModeler
SimpleModeler
•  https://github.com/asami/simplemodeler
•  SimpleModel⽤用モデル・コンパイラ
  •  Relaxer後継
•  テキストDSL
  •  Scala DSL
  •  Scala DSL&mavenによるモデル・リポジトリ
•  Web仕様書、Java、Androidを⽣生成
  •  昔:Grails、Google App Engine Python/Java
SimpleModeler service
•  勉強会での確認⽤用にマインドマップモデルからクラス図
   を⽣生成するサービスを提供
 •  http://www.mindmapmodeling.org/service
•  SmartDox DSLからクラス図の⽣生成も可能
SimpleModelerの動作
                                                                                    Web仕様書


                                   project                                           クラス図
                                                            html
                                                                                     ステート
  CSV      import                                                                   マシーン図


                                                              java
                            SimpleModelリポジトリ
                               (Maven project)                                    Javaプログラム
 convert
                                                             grails
                                     Scala DSL
                                                                                 Grailsプログラム
           import
                                                                     gae
 Mindmap
 (Xmind)
                                                                             Google App Engine/Python
                                                                                    プログラム
                                                                      gaej
                          verify                  testset
           import

                                                                              Google App Engine/Java
                                                             gaeo                   プログラム
  Excel


                          検証結果                   テストセット                        Google App Engine Oil
                                                                                    プログラム
                    企画中
SimpleModelerが⽣生成する
コード
 Web Controller/
 Action/Template                      HTML Form
                               JSP
                   index.jsp                                                         EntityRepositoryService
                                                              Servlet
               Dojoウィジェット
                   index.jsp
                     index.jsp                 DEACustomerController
                       index.jsp
                                                                          <<document>>
                                                                           DDCustomer



                                               GwtCustomer                        DSYorozuEntity
      GWT                                                                        RepositoryService
                                     GWT-RPC                                                                     JDO
                       index.html                             Servlet
                                                                                                        <<entity>>
                                                    GwtYorozuEntity                                    DEACustomer
                     GWTCustomer                  RepositoryServiceImpl
                        Editor
                                                                                         JDO

                                                  Atom

    AtomPub
                                     AtomPub                  Servlet
                                                 AtomYorozuDomain
                    Atomクライアント
                                               RepositoryServiceServlet
                                                                                     DataStore

                                           HTML Form
      REST                                   JSON
                                                              Servlet
                      Webブラウザ                    RESTYorozuDomain
                      (JavaScript)             RepositoryServiceServlet
昔のバージョンのデモ
•  メタモデルをだいぶ改造したので、現時点では動かなく
   なっていますが、昔やっていたデモを参考資料料として紹
   介します。
•  新しいメタモデルをベースに、プログラムの⾃自動⽣生成は
   改めて実装中です。
 •  ⽣生成対象となるプラットフォームも変わる予定です。
諸元
•    SimpleModeler 0.1.5
•    Grails 1.0.4
•    Google App Engine/Python 1.1.9
•    Eoogle App Engine/Java 1.2.0
•    Google Web Toolkit 1.6.4
•    Eclipse 3.4 Java EE Developers + Google App Engine
     Plugin
デモ⼿手順

                                                            Groovy/Spring/Hibernate
                                           Grails


                                                           Python/Django/Dojo Toolkit
   CSV
                             ③       Google App Engine
                                          Python
               SimpleModel
                リポジトリ            ④                                 Java/JDO/
 ①                Scala
                                     Google App Engine      Servlet/JSP/Dojo Toolkit

                  DSL        ⑤             Java

 マインドマップ   ②                         Google App Engine    Java/JDO/Google Web Toolkit
                                            Java
                                     Google Web Toolkit
                             ⑥                            クラス図/ステートマシーン図/
                                                              状態遷移表
                                        Web仕様書
CSVとクラス図
  demo.csv
 #actor,parts,attrs
 customer,,phone
 #resource
 goods,,note
 #event
 buy,customer;goods
SimpleModelerデモ
①CSV→マインドマップ
$ simplemodeler –convert demo.csv
SimpleModelerデモ
マインドマップ
SimpleModelerデモ
②マインドマップ→Scala DSL(SimpleModelリポジトリ)

$ simplemodeler –project demo
$ cd demo
$ simplemodeler –import ../demo.csv –
  import.package:com.demo
$ mvn compile
SimpleModelerデモ
③Scala DSL→Grails
$ grails create-app grailsdemo
$ simplemodeler –grails com.demo –
 output:grailsdemo
$ cd grailsdemo
$ grails generate-all com.demo.DeeBuy
$ grails generate-all com.demo.DeaCustomer
$ grails generate-all com.demo.DerGoods
$ grails run-app
SimpleModelerデモ
Grails
SimpleModelerデモ
④Scala DSL→Google App Engine/Python

$ simplemodeler –gae com.demo –
  gae.project:simplemodelerdemo –output:gae
$ dev_appserver.py gae
$ cd gae
$ cd appcfg.py update simplemodelerdemo
SimpleModelerデモ
Google App Engine/Python
SimpleModelerデモ
⑤Scala DSL→Google App Engine/Java

[Eclipse]gaejプロジェクト作成
$ simplemodeler –gaej com.demo –
  gaej.project:simplemodelerdemo –gaej.gwt –
  output:../gaej
[Eclipse]リフレッシュ
[Eclipse]Gaejプロジェクト起動
[Eclipse]Googleアップロード
SimpleModelerデモ
Google App Engine/Java Servlet/JSP/
Dojo Toolkit
SimpleModelerデモ
Google App Engine/Java
Google Web Toolkit
SimpleModelerデモ
⑥CSV→マインドマップ→Scala DSL→Web仕様書

$   simplemodeler   –convert yorozu.csv
$   simplemodeler   –project yorozu
$   cd yorozu
$   simplemodeler   –import ../yorozu.csv
$   mvn compile
$   simplemodeler   –html com.yorozu –output:target/
    html.d
SimpleModelerデモ
CSVで記述できること
yorozu.csv

#actor,base,parts,attrs,powers,states,roles
顧客,,,住所
個⼈人顧客,顧客,,,性別(男性;⼥女女性)
法⼈人顧客,顧客
従業員,,,,,,店員
#role
店員
#resource
商品,,製品+,,,商品状態(⼊入荷待;在庫中;配送中;販売完)
製品
#event
顧客取引,,顧客;店員
顧客購⼊入,顧客取引,商品+
SimpleModelerデモ
マインドマップ(XMind)
SimpleModelerデモ
Scala DSL
package com.yorozu

import    org.simplemodeling.dsl._
import    org.simplemodeling.dsl.datatype._
import    org.simplemodeling.dsl.domain._
import    org.simplemodeling.dsl.domain.values._

case class DER製品 extends DomainResource {
 term = "製品"
 caption = "製品"
 brief = <t></t>
 description = <text></text>

    id("製品Id", DVI製品Id())
    attribute("製品Name", DVN製品Name())
}

case class DVI製品Id extends DomainValueId {
 term = "製品Id"
 caption = "製品Id"
 brief = <t></t>
 description = <text></text>

    attribute("value", XString)
}

case class DVN製品Name extends DomainValueName {
 term = "製品Name"
 caption = "製品Name"
 brief = <t></t>
 description = <text></text>

    attribute("value", XString)
}
SimpleModelerデモ
Web仕様書
SimpleModelerデモ
クラス図
SimpleModelerデモ
Scala DSL→ステートマシーン図
package com.yorozu
                                                  case class DMS⼊入荷待 extends DomainState {
import   org.simplemodeling.dsl._                  term = "⼊入荷待"
import   org.simplemodeling.dsl.datatype._         caption = "⼊入荷待"
import   org.simplemodeling.dsl.domain._           brief = <t></t>
import   org.simplemodeling.dsl.domain.values._    description = <text></text>

case class DER商品 extends DomainResource {             transition(DEE商品⼊入荷(), DMS在庫中())
 term = "商品"                                      }
 caption = "商品"
 brief = <t></t>                                  case class DMS在庫中 extends DomainState {
 description = <text></text>                       term = "在庫中"
                                                   caption = "在庫中"
    id("商品Id", DVI商品Id())                          brief = <t></t>
    attribute("商品Name", DVN商品Name())               description = <text></text>
    association("製品", DER製品(), OneMore)
    statemachine(DM商品状態())                            transition(DEE顧客購⼊入(), DMS配送中())
}                                                     transition(DEE顧客購⼊入(), DMS販売完())
                                                  }
・・・中略略・・・
case class DM商品状態 extends DomainStateMachine {    case class DMS配送中 extends DomainState {
 term = "商品状態"                                     term = "配送中"
 caption = "商品状態"                                  caption = "配送中"
 brief = <t></t>                                   brief = <t></t>
 description = <text></text>                       description = <text></text>

    state(DMS⼊入荷待())                                  transition(DEE商品配送(), DMS販売完())
    state(DMS在庫中())                               }
    state(DMS配送中())
    state(DMS販売完())                               case class DMS販売完 extends DomainState {
}                                                  term = "販売完"
                                                   caption = "販売完"
                                                   brief = <t></t>
                                                   description = <text></text>

                                                  }
SimpleModelerデモ
ステートマシーン図と状態遷移表
デモ
•  マインドマップからクラス図を⽣生成
•  SmartDox DSLからクラス図を⽣生成
まとめ
•  ユビキタス⾔言語の設計と運⽤用が⾮非常に重要
 •  ツールのアシストは必須
•  マインドマップによるユビキタス⾔言語記述はブレインス
   トーミングと教育向け
•  Scala DSLでのユビキタス⾔言語は「柔らかいモデル」の
   記述に不不満
•  SmartDox DSLで「柔らかいモデル」と「固いモデル」
   を統合
END

Más contenido relacionado

Destacado

C# linq入門 意図編
C# linq入門 意図編C# linq入門 意図編
C# linq入門 意図編Fujio Kojima
 
ORと経済学の「結婚」問題
ORと経済学の「結婚」問題ORと経済学の「結婚」問題
ORと経済学の「結婚」問題Yosuke YASUDA
 
Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発Yoshiteru Takeshita
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りましたTomoharu ASAMI
 
Prefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャPrefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャTomoharu ASAMI
 
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイルDSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル陽平 山口
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSLKenta USAMI
 
価値デザインモデル戦国絵巻
価値デザインモデル戦国絵巻価値デザインモデル戦国絵巻
価値デザインモデル戦国絵巻Kentaro Takasaki
 
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】Tomoya Tatekawa
 
DSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることDSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることTomohiro Nishimura
 
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijpTwitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijpYusuke Yamamoto
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~bleis tift
 
この人と結婚していいの?を読んで
この人と結婚していいの?を読んでこの人と結婚していいの?を読んで
この人と結婚していいの?を読んでShumpei Shiraishi
 
DSLの過去と未来
DSLの過去と未来DSLの過去と未来
DSLの過去と未来Akio Tajima
 
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~Yusuke Suzuki
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題tsudaa
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)Tsunenori Oohara
 
婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策大和 金太郎
 

Destacado (20)

SimpleModeler
SimpleModelerSimpleModeler
SimpleModeler
 
C# linq入門 意図編
C# linq入門 意図編C# linq入門 意図編
C# linq入門 意図編
 
ORと経済学の「結婚」問題
ORと経済学の「結婚」問題ORと経済学の「結婚」問題
ORと経済学の「結婚」問題
 
Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発Dslからのコードジェネレーションで楽々play開発
Dslからのコードジェネレーションで楽々play開発
 
Scalaでプログラムを作りました
Scalaでプログラムを作りましたScalaでプログラムを作りました
Scalaでプログラムを作りました
 
Prefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャPrefer Cloud Platform - ビジョン、アーキテクチャ
Prefer Cloud Platform - ビジョン、アーキテクチャ
 
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイルDSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
 
学ばないDSL
学ばないDSL学ばないDSL
学ばないDSL
 
価値デザインモデル戦国絵巻
価値デザインモデル戦国絵巻価値デザインモデル戦国絵巻
価値デザインモデル戦国絵巻
 
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
恋人がいない30代前半女性が5年以内に結婚できる確率は17.6%【アラサー未婚女性へ】
 
RubyでDSL
RubyでDSLRubyでDSL
RubyでDSL
 
DSLについて語るときに僕の語ること
DSLについて語るときに僕の語ることDSLについて語るときに僕の語ること
DSLについて語るときに僕の語ること
 
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijpTwitter API最新事情 - API Meetup Tokyo #1 #apijp
Twitter API最新事情 - API Meetup Tokyo #1 #apijp
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
この人と結婚していいの?を読んで
この人と結婚していいの?を読んでこの人と結婚していいの?を読んで
この人と結婚していいの?を読んで
 
DSLの過去と未来
DSLの過去と未来DSLの過去と未来
DSLの過去と未来
 
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
エンタープライズアジャイルと全体最適について ~アーキテクチャ設計とウォーターフォールの必要性~
 
全角チルダ問題
全角チルダ問題全角チルダ問題
全角チルダ問題
 
地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)地獄のElixir(目黒スタートアップ勉強会)
地獄のElixir(目黒スタートアップ勉強会)
 
婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策婚活偏差値ランキングと傾向と対策
婚活偏差値ランキングと傾向と対策
 

Similar a 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox

DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要Shintaro Hosoai
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】Tomoharu ASAMI
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】Tomoharu ASAMI
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】Tomoharu ASAMI
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】Tomoharu ASAMI
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】Tomoharu ASAMI
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】Tomoharu ASAMI
 
Astah UML/ER/mindmapping modeling tool Introduction
Astah UML/ER/mindmapping modeling tool IntroductionAstah UML/ER/mindmapping modeling tool Introduction
Astah UML/ER/mindmapping modeling tool IntroductionKenji Hiranabe
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀増田 亨
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】Tomoharu ASAMI
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】Tomoharu ASAMI
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】Tomoharu ASAMI
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】Tomoharu ASAMI
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】Tomoharu ASAMI
 

Similar a 文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox (20)

DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
Eclipse modeling projectの概要
Eclipse modeling projectの概要Eclipse modeling projectの概要
Eclipse modeling projectの概要
 
EMF勉強会
EMF勉強会EMF勉強会
EMF勉強会
 
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
設計/コンポーネント設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第20回】
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
設計/アーキテクチャ設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第19回】
 
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
実装(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第30回】
 
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
設計/ドメイン設計(4) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第26回】
 
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
設計/ドメイン設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第24回】
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
 
Astah UML/ER/mindmapping modeling tool Introduction
Astah UML/ER/mindmapping modeling tool IntroductionAstah UML/ER/mindmapping modeling tool Introduction
Astah UML/ER/mindmapping modeling tool Introduction
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
Dev campjpn day2session3
Dev campjpn day2session3Dev campjpn day2session3
Dev campjpn day2session3
 
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
設計/コンポーネント設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第22回】
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
設計/コンポーネント設計(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第21回】
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
 
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
設計/ドメイン設計(1) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第23回】
 

Más de Tomoharu ASAMI

アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】Tomoharu ASAMI
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】Tomoharu ASAMI
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】Tomoharu ASAMI
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】Tomoharu ASAMI
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】Tomoharu ASAMI
 
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】Tomoharu ASAMI
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】Tomoharu ASAMI
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】Tomoharu ASAMI
 
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】Tomoharu ASAMI
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】Tomoharu ASAMI
 
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】Tomoharu ASAMI
 
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】Tomoharu ASAMI
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】Tomoharu ASAMI
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】Tomoharu ASAMI
 
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】Tomoharu ASAMI
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】Tomoharu ASAMI
 
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】Tomoharu ASAMI
 

Más de Tomoharu ASAMI (17)

アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
アプリケーション・アーキテクチャ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第34回】
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
 
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
実装(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第32回】
 
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
設計/UX/UI 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第29回】
 
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
設計/原理 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第28回】
 
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
設計 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第18回】
 
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
分析/イベント駆動 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第17回】
 
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
分析/コンポーネント分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第16回】
 
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
分析 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第15回】
 
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
要求/シナリオ 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第14回】
 
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
要求/ユースケース 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第13回】
 
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
要求 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第12回】
 
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
ビジネス・モデリング 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第11回】
 
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
作業分野 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第10回】
 
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
物理モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第9回】
 
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
関数モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第8回】
 
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
協調モデル 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第7回】
 

Último

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

Último (9)

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

文書をプログラムにする技術 - SimpleModeler + Mindmap & SmartDox

  • 1. ⽂文書をプログラムにする技術! -­‐  SimpleModeler  +        Mindmap  &  SmartDox 2012年年10⽉月22⽇日 浅海智晴
  • 2. 浅海のプロフィール •  1985年年-2001年年:富⼠士通 •  UNIX OSをビジネス向けに改造する仕事 •  ファイル管理理、分散ファイルシステム、Webサーバなど •  信頼性、運⽤用管理理、COBOL向けの改造 •  1993年年頃からオブジェクト・モデリングの調査を始める •  1995年年からJavaの利利⽤用を始める •  1998年年からJava&XMLのフリーソフトを開発・公開(個⼈人活動) •  SmartDoc(XML⽂文書処理理系)、Relaxer(プログラム⾃自動⽣生成) •  2001年年-現在:浅海智晴事務所代表 •  モデリング、XML、Javaのコンサルティング、教育活動 •  2002、2003年年度度:IPA未踏に採⽤用 •  Relaxer (DSLによるプログラムの⾃自動⽣生成) •  2005年年度度-2007年年度度:稚内北北星学園⼤大学東京サテライト校教授 •  2007年年度度-現在:⽇日本Javaユーザグループ副会⻑⾧長 •  2009年年2⽉月-現在:edge2.cc主宰 •  2009年年5⽉月-現在:匠Labフェロー
  • 3. 開発プログラム •  SmartDoc (1998年年)[Java] •  XML⽂文書処理理系 •  専⽤用XML⽂文書からHTML、LaTeX、プレインテキストを⽣生成 •  Relaxer (2000年年)[Java] •  XMLスキーマ⾔言語RELAXをDSLとして⽤用いたスキーマ・コンパイラ •  RELAXからJavaプログラム、W3C XML Schemaなどを⽣生成 •  SmartCase (2004年年、試作)[Java] •  専⽤用XML⽂文書でユースケース・モデルを記述 •  仕様書を⽣生成 •  JavaDSL (2007年年、試作)[Java] •  JavaをDSLのメタ⾔言語としてオブジェクト・モデルを記述 •  Javaプログラムと仕様書を⽣生成 •  SimpleModler (2008年年〜~)[Scala] •  ScalaをDSLのメタ⾔言語としてオブジェクト・モデルを記述 •  Javaプログラムと仕様書を⽣生成 •  SmartDox (2012年年〜~)[Scala] •  Emacs org-modeベースの⽂文書処理理システム
  • 5. 論論点 •  ソフトウェア開発における⽇日本語記述の仕様の取り扱い •  ⽇日本語、モデル、プログラムを連携する技法 •  ⽇日本語記述による仕様を形骸化させない •  考え⽅方、⽅方法論論、ツール •  オントロジーその他、他分野の技術を活⽤用できないか? •  ご意⾒見見を頂きたいポイントです。
  • 12. オブジェクトモデリング 協調の実装技術 がボトルネック ドメイン・モデル になっている 状態 機械 協調 静的   アプリケーション 構造 モデル
  • 13. PIM/PSM/実装 CIM : Computer Independent Model DSL PIM : Platform Independent Model CIM PIM PSM : Platform Specific Model DSL: Domain Specific Language DSL PSM 非機能要求 実装 プラットフォーム (Java、 XML、 …)
  • 14. クラウド時代のソフトウェア 開発 業務 業務 アーキテクチャ 方式 開発 クラウドに飲み込まれてしまう! 製造 コンポーネント開発 プラットフォームの共用 コンポーネント・サービスの再利用 オフショア開発 プログラム自動生成 システム保守・運用 システム保守・運用 ハードウェア保守・運用 ハードウェア保守・運用
  • 15. DSL駆動開発&コンポーネン ト 分析 設計 実装 DSL 自動生成 コンポーネント OO分析 OO設計 OO実装 コンポーネント DSL 自動生成 コンポーネント DSL 自動生成 コンポーネント OO分析 OO設計 OO実装 コンポーネント
  • 16. DSL駆動開発とは •  テキストDSLを⽤用いたモデル駆動開発 •  UMLをプログラミング⾔言語的に⽤用いることは間違いだっ た!? •  テキストDSLでモデルを記述 •  作成効率率率はテキストが圧倒的に効率率率的 •  必要に応じてUMLの図を⽣生成 •  モデルの視認性はUMLが上 モデルをテキストで記述する •  テキストDSLの実現⽅方法 モデルをデータとして •  内部DSL:ホスト⾔言語上に構築 操作して成果物を⽣生成する •  外部DSL:スクラッチで⾔言語を作成
  • 18. SimpleModelingモデル変換 業務モデル ドメイン・モデル 要求モデル システム・モデル 設計モデル 実装 静的構造 エンティティ ドメイン層 ドメイン層 抽出 具体化 格納 現実世界 データベース ドメイン・モデル 抽出 コントロール アプリケーション層 アプリケーション層 ボキャブラリ 詳細化 実現 動的モデル 具体化 文脈 ユースケース 具体化 利用事例 バウンダリ プレゼンテーション層 プレゼンテーション層 操作 やりたいこと エンド・ユーザ アプリケーション・モデル
  • 19. SimpleModeling全体像 ドメイン・モデル 要求モデル システム・モデル 設計モデル 用語 事実 契約 自然言語 規則 契約 ユースケース 宣言モデル 拡張 静的モデル 利用 動的モデル 変換 コラボレーション コラボレーション 動的モデル 動的モデル アプリケ ーション・ 同期 機能モデル 変換 具体化 モデル サービス契約 静的モデル 静的モデル データフロー図 クラス図 クラス図 オブジェクト・ OCL 同期 操作 操作 モデル OCL OCL クラス図 クラス図 クラス図 静的モデル 変換 静的モデル 具体化 静的モデル ドメイン・ モデル 動的モデル 張 拡 化 体 具 ルール・モデル 宣言モデル 変換 宣言モデル ビジネス・ルール ビジネス・ルール
  • 20. UMLの⻑⾧長所と短所 •  ⻑⾧長所 •  唯⼀一の標準オブジェクト・モデル記法である。 •  メタ・モデルが厳密に定義されている。 •  グラフィカル⾔言語であり、概要情報の伝達にすぐれてい る。 •  短所 •  オブジェクト・モデル以外の記述には必ずしも適してい ない。 •  オブジェクト・モデルも完全に記述できるわけではない。 •  作成効率率率が必ずしも⾼高くない。 •  モデル・リポジトリの操作性がよくない。 •  ⼤大規模開発に必ずしも適していない。 •  ⾃自然⾔言語情報の取り扱いが不不⼗十分。
  • 21. Modegramming (モデグラミング) •  Modeling + Programming •  モデリングとプログラミングの融合 •  テキストDSL+モデルコンパイラによるモデル駆動 開発 •  DSL (Domain Specific Language) •  Scala DSL •  Mindmap DSL (MindmapModeling) •  Excel DSL, XML DSL, JRuby DSLなど必要に応じて •  メタ・モデル(モデル体系) •  SimpleModeling •  モデルコンパイラ •  SimpleModeler
  • 22. SimpleModeling技術 •  SimpleModeling •  企業アプリケーション向けモデリング⼿手法 •  業務モデリング、ドメイン・モデリング、要求モデリング、 システム・モデリング •  MindmapModeling •  SimpleModelingのモデル抽出⼿手法 •  ドメイン・モデリング(+業務モデリング) •  SimpleModeler •  SimpleModeling⽤用モデル・コンパイラ
  • 24. MindmapModeling •  MindmapModelingはマインドマップを使ってモデルを 作成する⼿手法。 •  稚内北北星学園⼤大学東京サテライト校で実務者をターゲット としたモデリング教育向けに開発 •  問題空間側のモデルをマインドマップで記述することが できる。 •  業務モデル : 業務ユースケース •  ドメイン・モデル : 静的構造モデル •  MindmapModelingと⼀一般的なマインドマップの違い。 •  MindmapModelingモデルは、マインドマップの上に独⾃自構造 を拡張しており、オブジェクト・モデルに落落とし込む⼿手順が確 ⽴立立している。
  • 25. なぜMindmapModelingなのか •  ⾃自然⾔言語(⽇日本語)による⽂文章情報からいかにオブジェクト・モ デルを作成するのか? •  ⾃自然⾔言語(⽇日本語)→UMLを直接作成するのは難しい。 •  ⾃自然⾔言語(⽇日本語)ベースの中間的な構造モデルがあるとよい。 •  この⽬目的にはマインドマップが最適。 •  単なるマインドマップでは不不⼗十分 •  オブジェクト・モデルへの変換を前提にしたマインドマップベー スのフォーマットが有効。 •  このためには⽬目的にかなったメタ・モデルをバックグラウンドに したマインドマップのフォーマットでなければならない。 •  このフォーマットがMindmapModeling。 •  オブジェクト・モデルをメタファで理理解できる。 •  オブジェクト・モデリングの”コツ”を習得
  • 26. MindmapModelingのコツ •  ⼊入⼒力力となる⾃自然⾔言語の⽂文章(雑誌記事など)は、仕様化の ための⽅方針やモデルの⾻骨格、詳細情報が不不⼗十分なので、 その現実を受け⼊入れて適宜モデルを補う。 •  構想⼒力力、提案⼒力力もモデリング技術のうち •  MindmapModelingのモデルは、プログラムで実装可能 であることが重要。実装がイメージできないモデルは、 間違いと考えてよい。 •  仕様の⾻骨格は「物語」で構築する。「物語」を明確にす ることで、モデルの取捨選択、モデル化⽅方針の選択、不不 ⾜足部分の補完を⾏行行うことができる。
  • 27. MindmapModelingについて •  このスライドが参考になると思います。 •  MindmapModelingチュートリアル •  http://www.slideshare.net/asami224/ mindmapmodeling •  毎⽉月勉強会やってます。 •  横浜モデリング勉強会 •  http://www.facebook.com/groups/223587707726703/ •  ワークショップの進め⽅方 •  http://www.facebook.com/groups/223587707726703/ doc/370544933030979/
  • 31. SmartDox DSL •  SmartDox •  https://github.com/asami/smartdoxprocessor •  SmartDoc後継 •  Emacs org-modeベースの⽂文書処理理システム •  SmartDox DSL •  固いモデル:プログラムに落落ちるモデル •  ドメイン・モデルなど •  柔らかいモデル:プログラムに落落ちないモデル •  要求仕様など •  SmartDoc DSLで記述した⽂文書 •  固いモデルと柔らかいモデルが混在 •  ⽂文書の中からマーキングルールを使って⾃自動抽出
  • 33. SimpleModeler •  https://github.com/asami/simplemodeler •  SimpleModel⽤用モデル・コンパイラ •  Relaxer後継 •  テキストDSL •  Scala DSL •  Scala DSL&mavenによるモデル・リポジトリ •  Web仕様書、Java、Androidを⽣生成 •  昔:Grails、Google App Engine Python/Java
  • 34. SimpleModeler service •  勉強会での確認⽤用にマインドマップモデルからクラス図 を⽣生成するサービスを提供 •  http://www.mindmapmodeling.org/service •  SmartDox DSLからクラス図の⽣生成も可能
  • 35. SimpleModelerの動作 Web仕様書 project クラス図 html ステート CSV import マシーン図 java SimpleModelリポジトリ (Maven project) Javaプログラム convert grails Scala DSL Grailsプログラム import gae Mindmap (Xmind) Google App Engine/Python プログラム gaej verify testset import Google App Engine/Java gaeo プログラム Excel 検証結果 テストセット Google App Engine Oil プログラム 企画中
  • 36. SimpleModelerが⽣生成する コード Web Controller/ Action/Template HTML Form JSP index.jsp EntityRepositoryService Servlet Dojoウィジェット index.jsp index.jsp DEACustomerController index.jsp <<document>> DDCustomer GwtCustomer DSYorozuEntity GWT RepositoryService GWT-RPC JDO index.html Servlet <<entity>> GwtYorozuEntity DEACustomer GWTCustomer RepositoryServiceImpl Editor JDO Atom AtomPub AtomPub Servlet AtomYorozuDomain Atomクライアント RepositoryServiceServlet DataStore HTML Form REST JSON Servlet Webブラウザ RESTYorozuDomain (JavaScript) RepositoryServiceServlet
  • 37. 昔のバージョンのデモ •  メタモデルをだいぶ改造したので、現時点では動かなく なっていますが、昔やっていたデモを参考資料料として紹 介します。 •  新しいメタモデルをベースに、プログラムの⾃自動⽣生成は 改めて実装中です。 •  ⽣生成対象となるプラットフォームも変わる予定です。
  • 38. 諸元 •  SimpleModeler 0.1.5 •  Grails 1.0.4 •  Google App Engine/Python 1.1.9 •  Eoogle App Engine/Java 1.2.0 •  Google Web Toolkit 1.6.4 •  Eclipse 3.4 Java EE Developers + Google App Engine Plugin
  • 39. デモ⼿手順 Groovy/Spring/Hibernate Grails Python/Django/Dojo Toolkit CSV ③ Google App Engine Python SimpleModel リポジトリ ④ Java/JDO/ ① Scala Google App Engine Servlet/JSP/Dojo Toolkit DSL ⑤ Java マインドマップ ② Google App Engine Java/JDO/Google Web Toolkit Java Google Web Toolkit ⑥ クラス図/ステートマシーン図/ 状態遷移表 Web仕様書
  • 40. CSVとクラス図 demo.csv #actor,parts,attrs customer,,phone #resource goods,,note #event buy,customer;goods
  • 43. SimpleModelerデモ ②マインドマップ→Scala DSL(SimpleModelリポジトリ) $ simplemodeler –project demo $ cd demo $ simplemodeler –import ../demo.csv – import.package:com.demo $ mvn compile
  • 44. SimpleModelerデモ ③Scala DSL→Grails $ grails create-app grailsdemo $ simplemodeler –grails com.demo – output:grailsdemo $ cd grailsdemo $ grails generate-all com.demo.DeeBuy $ grails generate-all com.demo.DeaCustomer $ grails generate-all com.demo.DerGoods $ grails run-app
  • 46. SimpleModelerデモ ④Scala DSL→Google App Engine/Python $ simplemodeler –gae com.demo – gae.project:simplemodelerdemo –output:gae $ dev_appserver.py gae $ cd gae $ cd appcfg.py update simplemodelerdemo
  • 48. SimpleModelerデモ ⑤Scala DSL→Google App Engine/Java [Eclipse]gaejプロジェクト作成 $ simplemodeler –gaej com.demo – gaej.project:simplemodelerdemo –gaej.gwt – output:../gaej [Eclipse]リフレッシュ [Eclipse]Gaejプロジェクト起動 [Eclipse]Googleアップロード
  • 49. SimpleModelerデモ Google App Engine/Java Servlet/JSP/ Dojo Toolkit
  • 51. SimpleModelerデモ ⑥CSV→マインドマップ→Scala DSL→Web仕様書 $ simplemodeler –convert yorozu.csv $ simplemodeler –project yorozu $ cd yorozu $ simplemodeler –import ../yorozu.csv $ mvn compile $ simplemodeler –html com.yorozu –output:target/ html.d
  • 54. SimpleModelerデモ Scala DSL package com.yorozu import org.simplemodeling.dsl._ import org.simplemodeling.dsl.datatype._ import org.simplemodeling.dsl.domain._ import org.simplemodeling.dsl.domain.values._ case class DER製品 extends DomainResource { term = "製品" caption = "製品" brief = <t></t> description = <text></text> id("製品Id", DVI製品Id()) attribute("製品Name", DVN製品Name()) } case class DVI製品Id extends DomainValueId { term = "製品Id" caption = "製品Id" brief = <t></t> description = <text></text> attribute("value", XString) } case class DVN製品Name extends DomainValueName { term = "製品Name" caption = "製品Name" brief = <t></t> description = <text></text> attribute("value", XString) }
  • 57. SimpleModelerデモ Scala DSL→ステートマシーン図 package com.yorozu case class DMS⼊入荷待 extends DomainState { import org.simplemodeling.dsl._ term = "⼊入荷待" import org.simplemodeling.dsl.datatype._ caption = "⼊入荷待" import org.simplemodeling.dsl.domain._ brief = <t></t> import org.simplemodeling.dsl.domain.values._ description = <text></text> case class DER商品 extends DomainResource { transition(DEE商品⼊入荷(), DMS在庫中()) term = "商品" } caption = "商品" brief = <t></t> case class DMS在庫中 extends DomainState { description = <text></text> term = "在庫中" caption = "在庫中" id("商品Id", DVI商品Id()) brief = <t></t> attribute("商品Name", DVN商品Name()) description = <text></text> association("製品", DER製品(), OneMore) statemachine(DM商品状態()) transition(DEE顧客購⼊入(), DMS配送中()) } transition(DEE顧客購⼊入(), DMS販売完()) } ・・・中略略・・・ case class DM商品状態 extends DomainStateMachine { case class DMS配送中 extends DomainState { term = "商品状態" term = "配送中" caption = "商品状態" caption = "配送中" brief = <t></t> brief = <t></t> description = <text></text> description = <text></text> state(DMS⼊入荷待()) transition(DEE商品配送(), DMS販売完()) state(DMS在庫中()) } state(DMS配送中()) state(DMS販売完()) case class DMS販売完 extends DomainState { } term = "販売完" caption = "販売完" brief = <t></t> description = <text></text> }
  • 60. まとめ •  ユビキタス⾔言語の設計と運⽤用が⾮非常に重要 •  ツールのアシストは必須 •  マインドマップによるユビキタス⾔言語記述はブレインス トーミングと教育向け •  Scala DSLでのユビキタス⾔言語は「柔らかいモデル」の 記述に不不満 •  SmartDox DSLで「柔らかいモデル」と「固いモデル」 を統合
  • 61. END