SlideShare a Scribd company logo
1 of 60
Download to read offline
DDD                        Pt.II


Building Blocks
 ~DDD                                                        ~


        (   ) - tricreo.jp / Jiemamy Project - jiemamy.org
    2011.04.09 @
•               (@daisuke_m)

• Jiemamy / java-ja
• Apache Mahout
• Java / OO / DDD
•
works
• @IT — Jiemamy
•
  • Java
  • Java
• Java: The Good Parts (           )

•                          DDD (       )
DDD
      http://d.hatena.ne.jp/daisuke-m/20110407/1302156870


• Jiemamy Project
•
•
•         DDD
•
• Jiemamy version 0.3
• baseunits library (timeandmoney)
Jiemamy
•           ER

    • Eclipse        (UI         )

    • DB          , SQL (            )

     •                      SQL…

    • XML I/O, DDD (         )
Agenda
• DDD overview
• Isolating the Domain
• Model
• LifeCycle
§0 DDD overview

• DDD
 • GoF
 • PoEAA
DDD PATTERNS
•   STRATEGY                              •   OPEN HOST SERVICE

•   COMPOSITE                             •   CORE DOMAIN

•   BOUNDED CONTEXT                       •   GENERIC SUBDOMAINS

•   CONTINUOUS INTEGRATION                •   DOMAIN VISION STATEMENT

•   CONTEXT MAP                           •   HIGHLIGHTED CORE

•   SHARED KERNEL                         •   COHESIVE MECHANISMS

•   CUSTOMER/SUPPLIER DEVELOPMENT TEAMS   •   SUGGESTED CORE

•   CONFORMIST                            •   ABSTRACT CORE

•   ANTICORRUPTION LAYER                  •   EVOLVING ORDER

•   SEPARATE WAYS                         •   SYSTEM METAPHOR

•   OPEN HOST SERVICE                     •   RESPONSIVILITY LAYERS

•   PUBLISHED LANGUAGE                    •   KNOWLEDGE LEVEL

•   INTEGRATION                           •   PLUGGABLE COMPONENT FRAMEWORK
DDD PATTERNS
•   UBIQUITOUS LANGUAGE           •   FACTRIES

•   MODEL-DRIVEN DESIGN           •   REPOSITORIES

•   HANDS-ON MODELERS             •   SPECIFICATION

•   LAYERED ARCHITECTURE          •   INTENTION-REVEALING
                                      INTERFACES
•   THE SMART UI "ANTI-PATTERN"
                                  •   SIDE-EFFECT-FREE
                                      FUNCTION
•   ENTITIES

•   VALUE OBJECTS                 •   ASSERTIONS

•   SERVICES                      •   CONCEPTUAL CONTOURS

•   MODULES                       •   STANDALONE CLASSES

•   AGGREGATES                    •   CLOSURE OF OPERATIONS
•
•
•
•(   )
•
    •
    •
Domain or Not
•
•
•        HISTORY
•
•
•
•
• UI
• DB
•
•      DB
•

•

•
•
•               →
•                →
•           ®

    •
    •
•       ®

    •
    •
•
•
•
•
•
    •
• Model Driven Design (   )


    •
Model or Not
•   LibHTTP         •   User

•   Search          •   File

•   FacebookLogin   •   String

•   Translation     •   StringBuilder

•   FoobarLogic     •   YearMonth
§1

•

•
    •
    •   UI
LAYERED
    ARCHITECTURE
•

•    ;




•
Jiemamy
      DiagramEditor
        TableView
     DbObjectEditPart            maven-jiemamy-plugin                 UI
 jiemamy eclipse plugin                           ExecuteMojo     Application


       jiemamy-diagram                JmDiagram
                                 JmNode / JmConnection

     SqlStatement        jiemamy-sql                               Domain
         Token                              JmTable / JmView
                                               JmColumn
                        jiemamy-core     JmForeignKeyConstraint

                                   woodstox
SqlExecutor / UUIDProvider
                                   XMLInputFactory                 Infrastructure
                                  XMLValidationSchema
   jiemamy-commons
                              apache commons
THE SMART UI
        "ANTI-PATTERN"
• DDD
•
  •

•          light   MDD
UI   DB




User#save(); → DB
toString() ! "<span>...</span>"
§2
•
•
•                         3

    • ENTITY (E)
    • VALUE OBJECT (VO)
    • SERVICE
•
    •
•
    • Table knows Columns / Column knows Table
    • Emp knows Dept / Dept knows Emps
class Emp {       class Dept {
  String name;      String name;
  Dept dept;        List<Emp> members;
}                 }

   Dept tech = new Dept("         ");
   Emp kato = new Emp("     ");
   kato.setDept(tech);
   tech.addMember(kato);
• Declaration & Reference
• Repository
ENTITY (E)

•
•
•        vs

•   (SE) vs   (   )
• 31                   32
                             31
                             (File / DB)


                             32
                            (On Memory)


•
• Serialize / Deserialize                  clone…
ENTITY
•   Table         •   Order

•   Column        •   Customer

•   ForeignKey



•   Employee

•   Department
ENTITY

•
•
• ID
• equals   hashCode ID
•      ENTITY

• ID
•
  •
  •
E
Column col = ...; // ← ENTITY
tableFoo.addColumn(col);
tableBar.addColumn(col);
// something
tableFoo.getColumn(...).setName("AAA");

tableBar
•   ID

•        (v0.2)

•
VALUE OBJECT (VO)
•

•
• new String("foo") vs new String("foo")
• man.getName(): String
• equals hashCode property
VALUE OBJECT
• Integer
• BigDecimal
• String
• Color
• Date / TimePoint
• Status (OPEN / PROGRESS / CLOSED)
VALUE OBJ.

•
•
• Immutable
  •            Flyweight
SERVICE
•                              E   VO


•       E       VO
                     Service

    •       E    VO

    •
SERVICE
•
•             (UL)

•

•        →
•                          E / VO
•       E / VO
•         E / VO
    •              Transaction Script
    •
• Infrastructure Service (      )
  • E-mail
  •
• Application Service
  •                   Excel export
  •
• Domain Service
  •
•
MODULE


•
•
Java package
•
•        1



•
MVC
• com.example.foobar •com.example.foobar
 • model              • foo
   • FooModel           • FooModel
   • BarModel           • FooView
 • view          UL     • FooController
   • FooView          • bar
   • BarView            • BarModel
 • controller           • BarView
   • FooController      • BarController
   • BarController
MVC
• com.example.foobar •com.example.foobar
 • model              • foo
   • FooModel           • FooModel
   • BarModel           • FooView
 • view          UL     • FooController
   • FooView          • bar
   • BarView            • BarModel
 • controller           • BarView
   • FooController      • BarController
   • BarController
§3 LifeCycle

•        Object

    • new GC
    • INSERT DELETE
•
§3 LifeCycle
E
•       LifeCycle   Object    LifeCycle

•                            User




• JVM
AGGREGATE


•
•               …
•
• Table
• Column                 Entity

• Column         Table

•       ObjColumn
         →    Table
FACTORY
•
•
•                     new

•   Object   Object

•
• Obj.
• Object    LifeCycle

•
  •        Object
Obj.
•
    • Obj.

    •         Obj.

•       Factory      Obj.
REPOSITORY
•
    •
    •
        •
    • Repository
• Entity      LifeCycle

• LC          Entity

•        new

  • On Memory Collection
  • Database
Repos.            Collection
•                              DB



• Repository
    Collection

• store / delete / find (resolve) ...
Declaration & Reference
CREATE TABLE FOOBAR (
     FOO INTEGER,
     BAR VARCHAR(32),              Decl. = Entity
     PRIMARY KEY (FOO),
     FOREIGN KEY (BAR)              Ref. = VO
                                      (ID)
       REFERECE BAZ (QUX)
);

         Table has-a Column(s) and ...
      PrimaryKey has-a ColumnReference
•                     /
•
    ENTITY / VO / SERVICE
•
    FACTORY / REPOSITRY
• DDD
DevLOVE Beautiful Development - 第一幕 陽の巻

More Related Content

What's hot

Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Henry S
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scalatod esking
 
Webinar: What's new in the .NET Driver
Webinar: What's new in the .NET DriverWebinar: What's new in the .NET Driver
Webinar: What's new in the .NET DriverMongoDB
 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesHibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesBrett Meyer
 
Creating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChartCreating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChartDavid Keener
 
โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8kruple
 

What's hot (10)

Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2Code for Startup MVP (Ruby on Rails) Session 2
Code for Startup MVP (Ruby on Rails) Session 2
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scala
 
第二回Salesforce勉強会
第二回Salesforce勉強会第二回Salesforce勉強会
第二回Salesforce勉強会
 
Webinar: What's new in the .NET Driver
Webinar: What's new in the .NET DriverWebinar: What's new in the .NET Driver
Webinar: What's new in the .NET Driver
 
UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2
 
Avik_RailsTutorial
Avik_RailsTutorialAvik_RailsTutorial
Avik_RailsTutorial
 
Hibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance TechniquesHibernate ORM: Tips, Tricks, and Performance Techniques
Hibernate ORM: Tips, Tricks, and Performance Techniques
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
 
Creating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChartCreating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChart
 
โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8
 

Viewers also liked

「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係Yukei Wachi
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布sleipnir002
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
(SEC402) Enterprise Cloud Security via DevSecOps 2.0
(SEC402) Enterprise Cloud Security via DevSecOps 2.0(SEC402) Enterprise Cloud Security via DevSecOps 2.0
(SEC402) Enterprise Cloud Security via DevSecOps 2.0Amazon Web Services
 
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイドドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド増田 亨
 
مجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثانيمجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثانيibnrushd1434
 
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...Lviv Startup Club
 
【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)久美歩 石郷
 
Opne data @ Big data & Analytics day 2016-11-15
Opne data @ Big data & Analytics day  2016-11-15Opne data @ Big data & Analytics day  2016-11-15
Opne data @ Big data & Analytics day 2016-11-15Livar Bergheim
 
Kaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author SenthilKaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author SenthilSenthil Kumar, PhD.
 
Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015Juan Carlos Zúñiga Montalvo
 
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)Lalvmun
 
Let's Get Physical
Let's Get PhysicalLet's Get Physical
Let's Get PhysicalJoel Lord
 
O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?Edilson Osorio Junior
 
Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)Gian Guzman
 
What is Modernization Infographic
What is Modernization InfographicWhat is Modernization Infographic
What is Modernization InfographicUniface
 
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect CrimeTime Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect CrimeLeanKit
 

Viewers also liked (19)

「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係「攻めのIt」を実現するアーキテクチャーとdev opsの関係
「攻めのIt」を実現するアーキテクチャーとdev opsの関係
 
パターン認識 04 混合正規分布
パターン認識 04 混合正規分布パターン認識 04 混合正規分布
パターン認識 04 混合正規分布
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
(SEC402) Enterprise Cloud Security via DevSecOps 2.0
(SEC402) Enterprise Cloud Security via DevSecOps 2.0(SEC402) Enterprise Cloud Security via DevSecOps 2.0
(SEC402) Enterprise Cloud Security via DevSecOps 2.0
 
ドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイドドメイン駆動設計 実践ガイド
ドメイン駆動設計 実践ガイド
 
مجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثانيمجلة ابن رشد الاصدار الثاني
مجلة ابن رشد الاصدار الثاني
 
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
Lviv Outsourcing Forum 2016 Максим Іцкович “iOS & Android : What happened dur...
 
Casa administrativo
Casa   administrativoCasa   administrativo
Casa administrativo
 
【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)【Jt】closhe 分層 プレゼン (1)
【Jt】closhe 分層 プレゼン (1)
 
Terms of Reference for Selection of Auditors Audit Reports and Audit Review
Terms of Reference for Selection of Auditors Audit Reports and Audit ReviewTerms of Reference for Selection of Auditors Audit Reports and Audit Review
Terms of Reference for Selection of Auditors Audit Reports and Audit Review
 
Opne data @ Big data & Analytics day 2016-11-15
Opne data @ Big data & Analytics day  2016-11-15Opne data @ Big data & Analytics day  2016-11-15
Opne data @ Big data & Analytics day 2016-11-15
 
Kaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author SenthilKaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author Senthil
 
Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015Inteligencia emocional para el liderazgo v1.0 ago 2015
Inteligencia emocional para el liderazgo v1.0 ago 2015
 
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
Bullying intimidación y maltrato entre el alumnado (j maria avilés martínez)
 
Let's Get Physical
Let's Get PhysicalLet's Get Physical
Let's Get Physical
 
O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?O futuro do Bitcoin está nas mãos da China?
O futuro do Bitcoin está nas mãos da China?
 
Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)Documento de finanzas corporativas de 50 ejercicios (1)
Documento de finanzas corporativas de 50 ejercicios (1)
 
What is Modernization Infographic
What is Modernization InfographicWhat is Modernization Infographic
What is Modernization Infographic
 
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect CrimeTime Theft: How Hidden and Unplanned Work Commit the Perfect Crime
Time Theft: How Hidden and Unplanned Work Commit the Perfect Crime
 

Similar to DevLOVE Beautiful Development - 第一幕 陽の巻

コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門潤一 加藤
 
Java EE revisits design patterns
Java EE revisits design patterns Java EE revisits design patterns
Java EE revisits design patterns Alex Theedom
 
Java EE revisits design patterns
Java EE revisits design patternsJava EE revisits design patterns
Java EE revisits design patternsAlex Theedom
 
SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016Alex Theedom
 
Java EE Revisits Design Patterns
Java EE Revisits Design PatternsJava EE Revisits Design Patterns
Java EE Revisits Design PatternsAlex Theedom
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Client-side MVC with Backbone.js
Client-side MVC with Backbone.js Client-side MVC with Backbone.js
Client-side MVC with Backbone.js iloveigloo
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsFabian Jakobs
 
Nuxeo World Session: CMIS - What's Next?
Nuxeo World Session: CMIS - What's Next?Nuxeo World Session: CMIS - What's Next?
Nuxeo World Session: CMIS - What's Next?Nuxeo
 
初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料Shinichi Ogawa
 
Simplify integrations-final-pdf
Simplify integrations-final-pdfSimplify integrations-final-pdf
Simplify integrations-final-pdfChristian Posta
 
ITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cbormITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cbormOrtus Solutions, Corp
 
Learning to run
Learning to runLearning to run
Learning to rundominion
 
Killing Shark-Riding Dinosaurs with ORM
Killing Shark-Riding Dinosaurs with ORMKilling Shark-Riding Dinosaurs with ORM
Killing Shark-Riding Dinosaurs with ORMOrtus Solutions, Corp
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewAntonio Pintus
 
Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門Wen-Tien Chang
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...J V
 
Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?treby
 

Similar to DevLOVE Beautiful Development - 第一幕 陽の巻 (20)

JS Essence
JS EssenceJS Essence
JS Essence
 
コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門
 
Java EE revisits design patterns
Java EE revisits design patterns Java EE revisits design patterns
Java EE revisits design patterns
 
Java EE revisits design patterns
Java EE revisits design patternsJava EE revisits design patterns
Java EE revisits design patterns
 
SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016SE2016 - Java EE revisits design patterns 2016
SE2016 - Java EE revisits design patterns 2016
 
Java EE Revisits Design Patterns
Java EE Revisits Design PatternsJava EE Revisits Design Patterns
Java EE Revisits Design Patterns
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Client-side MVC with Backbone.js
Client-side MVC with Backbone.js Client-side MVC with Backbone.js
Client-side MVC with Backbone.js
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
 
Nuxeo World Session: CMIS - What's Next?
Nuxeo World Session: CMIS - What's Next?Nuxeo World Session: CMIS - What's Next?
Nuxeo World Session: CMIS - What's Next?
 
初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料初心者向けGAE/Java説明資料
初心者向けGAE/Java説明資料
 
Simplify integrations-final-pdf
Simplify integrations-final-pdfSimplify integrations-final-pdf
Simplify integrations-final-pdf
 
ITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cbormITB2017 - Slaying the ORM dragons with cborm
ITB2017 - Slaying the ORM dragons with cborm
 
Learning to run
Learning to runLearning to run
Learning to run
 
Killing Shark-Riding Dinosaurs with ORM
Killing Shark-Riding Dinosaurs with ORMKilling Shark-Riding Dinosaurs with ORM
Killing Shark-Riding Dinosaurs with ORM
 
JavaOne_2010
JavaOne_2010JavaOne_2010
JavaOne_2010
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overview
 
Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門Ruby on Rails : 簡介與入門
Ruby on Rails : 簡介與入門
 
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
Deep Dive: Alfresco Core Repository (... embedded in a micro-services style a...
 
Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?Octocatは技術的負債の夢を見るか?
Octocatは技術的負債の夢を見るか?
 

More from 都元ダイスケ Miyamoto

認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio都元ダイスケ Miyamoto
 
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019都元ダイスケ Miyamoto
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay都元ダイスケ Miyamoto
 
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)都元ダイスケ Miyamoto
 
20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案都元ダイスケ Miyamoto
 
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解都元ダイスケ Miyamoto
 
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016都元ダイスケ Miyamoto
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座都元ダイスケ Miyamoto
 
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda都元ダイスケ Miyamoto
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05都元ダイスケ Miyamoto
 
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編都元ダイスケ Miyamoto
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...都元ダイスケ Miyamoto
 
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ都元ダイスケ Miyamoto
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回都元ダイスケ Miyamoto
 
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategyjava-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy都元ダイスケ Miyamoto
 
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - JiemamyDevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy都元ダイスケ Miyamoto
 

More from 都元ダイスケ Miyamoto (20)

認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
 
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、
ERRORで出すか? WARNで出すか? #cmdevio2019
 
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDayマイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
 
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
 
AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論
 
20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案
 
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
 
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
 
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
 
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
 
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
 
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
 
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
 
20130516 cm課外授業8-aws
20130516 cm課外授業8-aws20130516 cm課外授業8-aws
20130516 cm課外授業8-aws
 
20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS
 
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
 
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
 
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategyjava-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
 
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - JiemamyDevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
 

Recently uploaded

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 

Recently uploaded (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 

DevLOVE Beautiful Development - 第一幕 陽の巻

  • 1. DDD Pt.II Building Blocks ~DDD ~ ( ) - tricreo.jp / Jiemamy Project - jiemamy.org 2011.04.09 @
  • 2. (@daisuke_m) • Jiemamy / java-ja • Apache Mahout • Java / OO / DDD •
  • 3. works • @IT — Jiemamy • • Java • Java • Java: The Good Parts ( ) • DDD ( )
  • 4. DDD http://d.hatena.ne.jp/daisuke-m/20110407/1302156870 • Jiemamy Project • • • DDD • • Jiemamy version 0.3 • baseunits library (timeandmoney)
  • 5. Jiemamy • ER • Eclipse (UI ) • DB , SQL ( ) • SQL… • XML I/O, DDD ( )
  • 6. Agenda • DDD overview • Isolating the Domain • Model • LifeCycle
  • 7. §0 DDD overview • DDD • GoF • PoEAA
  • 8. DDD PATTERNS • STRATEGY • OPEN HOST SERVICE • COMPOSITE • CORE DOMAIN • BOUNDED CONTEXT • GENERIC SUBDOMAINS • CONTINUOUS INTEGRATION • DOMAIN VISION STATEMENT • CONTEXT MAP • HIGHLIGHTED CORE • SHARED KERNEL • COHESIVE MECHANISMS • CUSTOMER/SUPPLIER DEVELOPMENT TEAMS • SUGGESTED CORE • CONFORMIST • ABSTRACT CORE • ANTICORRUPTION LAYER • EVOLVING ORDER • SEPARATE WAYS • SYSTEM METAPHOR • OPEN HOST SERVICE • RESPONSIVILITY LAYERS • PUBLISHED LANGUAGE • KNOWLEDGE LEVEL • INTEGRATION • PLUGGABLE COMPONENT FRAMEWORK
  • 9. DDD PATTERNS • UBIQUITOUS LANGUAGE • FACTRIES • MODEL-DRIVEN DESIGN • REPOSITORIES • HANDS-ON MODELERS • SPECIFICATION • LAYERED ARCHITECTURE • INTENTION-REVEALING INTERFACES • THE SMART UI "ANTI-PATTERN" • SIDE-EFFECT-FREE FUNCTION • ENTITIES • VALUE OBJECTS • ASSERTIONS • SERVICES • CONCEPTUAL CONTOURS • MODULES • STANDALONE CLASSES • AGGREGATES • CLOSURE OF OPERATIONS
  • 11. • •
  • 12. Domain or Not • • • HISTORY • • • •
  • 15. → • → • ® • • • ® • •
  • 17. • • • • Model Driven Design ( ) •
  • 18. Model or Not • LibHTTP • User • Search • File • FacebookLogin • String • Translation • StringBuilder • FoobarLogic • YearMonth
  • 19. §1 • • • • UI
  • 20. LAYERED ARCHITECTURE • • ; •
  • 21. Jiemamy DiagramEditor TableView DbObjectEditPart maven-jiemamy-plugin UI jiemamy eclipse plugin ExecuteMojo Application jiemamy-diagram JmDiagram JmNode / JmConnection SqlStatement jiemamy-sql Domain Token JmTable / JmView JmColumn jiemamy-core JmForeignKeyConstraint woodstox SqlExecutor / UUIDProvider XMLInputFactory Infrastructure XMLValidationSchema jiemamy-commons apache commons
  • 22. THE SMART UI "ANTI-PATTERN" • DDD • • • light MDD
  • 23. UI DB User#save(); → DB toString() ! "<span>...</span>"
  • 24. §2 • • • 3 • ENTITY (E) • VALUE OBJECT (VO) • SERVICE
  • 25. • • • Table knows Columns / Column knows Table • Emp knows Dept / Dept knows Emps
  • 26. class Emp { class Dept { String name; String name; Dept dept; List<Emp> members; } } Dept tech = new Dept(" "); Emp kato = new Emp(" "); kato.setDept(tech); tech.addMember(kato);
  • 27. • Declaration & Reference • Repository
  • 28. ENTITY (E) • • • vs • (SE) vs ( )
  • 29.
  • 30. • 31 32 31 (File / DB) 32 (On Memory) • • Serialize / Deserialize clone…
  • 31. ENTITY • Table • Order • Column • Customer • ForeignKey • Employee • Department
  • 33. ENTITY • ID • • •
  • 34. E Column col = ...; // ← ENTITY tableFoo.addColumn(col); tableBar.addColumn(col); // something tableFoo.getColumn(...).setName("AAA"); tableBar
  • 35. ID • (v0.2) •
  • 36. VALUE OBJECT (VO) • • • new String("foo") vs new String("foo") • man.getName(): String • equals hashCode property
  • 37. VALUE OBJECT • Integer • BigDecimal • String • Color • Date / TimePoint • Status (OPEN / PROGRESS / CLOSED)
  • 39. SERVICE • E VO • E VO Service • E VO •
  • 40. SERVICE • • (UL) • • →
  • 41. E / VO • E / VO • E / VO • Transaction Script •
  • 42. • Infrastructure Service ( ) • E-mail • • Application Service • Excel export • • Domain Service • •
  • 45. MVC • com.example.foobar •com.example.foobar • model • foo • FooModel • FooModel • BarModel • FooView • view UL • FooController • FooView • bar • BarView • BarModel • controller • BarView • FooController • BarController • BarController
  • 46. MVC • com.example.foobar •com.example.foobar • model • foo • FooModel • FooModel • BarModel • FooView • view UL • FooController • FooView • bar • BarView • BarModel • controller • BarView • FooController • BarController • BarController
  • 47. §3 LifeCycle • Object • new GC • INSERT DELETE •
  • 49. E • LifeCycle Object LifeCycle • User • JVM
  • 51. • • Table • Column Entity • Column Table • ObjColumn → Table
  • 52. FACTORY • • • new • Object Object •
  • 53. • Obj. • Object LifeCycle • • Object
  • 54. Obj. • • Obj. • Obj. • Factory Obj.
  • 55. REPOSITORY • • • • • Repository
  • 56. • Entity LifeCycle • LC Entity • new • On Memory Collection • Database
  • 57. Repos. Collection • DB • Repository Collection • store / delete / find (resolve) ...
  • 58. Declaration & Reference CREATE TABLE FOOBAR ( FOO INTEGER, BAR VARCHAR(32), Decl. = Entity PRIMARY KEY (FOO), FOREIGN KEY (BAR) Ref. = VO (ID) REFERECE BAZ (QUX) ); Table has-a Column(s) and ... PrimaryKey has-a ColumnReference
  • 59. / • ENTITY / VO / SERVICE • FACTORY / REPOSITRY • DDD