SlideShare a Scribd company logo
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   (   )
DevLOVE Beautiful Development - 第一幕 陽の巻
• 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 2
Henry S
 
From Ruby to Scala
From Ruby to ScalaFrom Ruby to Scala
From Ruby to Scala
tod esking
 
第二回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
MongoDB
 
UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2UT on Rails3 2010- Week 2
UT on Rails3 2010- Week 2
Richard Schneeman
 
Avik_RailsTutorial
Avik_RailsTutorialAvik_RailsTutorial
Avik_RailsTutorial
tutorialsruby
 
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
Brett Meyer
 
jQuery-1-Ajax
jQuery-1-AjaxjQuery-1-Ajax
jQuery-1-Ajax
guestcf600a
 
Creating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChartCreating Dynamic Charts With JFreeChart
Creating Dynamic Charts With JFreeChart
David Keener
 
โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8โปรแกรม Dreamweaver 8
โปรแกรม Dreamweaver 8
kruple
 

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.0
Amazon 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
 
Casa administrativo
Casa   administrativoCasa   administrativo
Casa administrativo
Christiano Morais
 
【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
IFAD International Fund for Agricultural Development
 
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
Livar Bergheim
 
Kaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author SenthilKaleidoscopic organization Characteristics - Author Senthil
Kaleidoscopic organization Characteristics - Author Senthil
Senthil 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 2015
Juan 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 Physical
Joel 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 Infographic
Uniface
 
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
LeanKit
 

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 - 第一幕 陽の巻

JS Essence
JS EssenceJS Essence
JS Essence
Uladzimir Piatryka
 
コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門コードで学ぶドメイン駆動設計入門
コードで学ぶドメイン駆動設計入門
潤一 加藤
 
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 patterns
Alex 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 2016
Alex Theedom
 
Java EE Revisits Design Patterns
Java EE Revisits Design PatternsJava EE Revisits Design Patterns
Java EE Revisits Design Patterns
Alex Theedom
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
Kevin 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 Applications
Fabian 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-pdf
Christian 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 cborm
Ortus Solutions, Corp
 
Learning to run
Learning to runLearning to run
Learning to run
dominion
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
Ortus Solutions, Corp
 
Killing Shark-Riding Dinosaurs with ORM
Killing Shark-Riding Dinosaurs with ORMKilling Shark-Riding Dinosaurs with ORM
Killing Shark-Riding Dinosaurs with ORM
Ortus Solutions, Corp
 
JavaOne_2010
JavaOne_2010JavaOne_2010
JavaOne_2010
Tadaya Tsuyukubo
 
MongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overviewMongoDB: a gentle, friendly overview
MongoDB: a gentle, friendly overview
Antonio 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
 

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
 
Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!Introducing BoxLang : A new JVM language for productivity and modularity!
Introducing BoxLang : A new JVM language for productivity and modularity!
 
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...
 

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
 
AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論
都元ダイスケ 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
 
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
都元ダイスケ 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

Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
ScyllaDB
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
Liveplex
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
Yevgen Sysoyev
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
KAMAL CHOUDHARY
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 

Recently uploaded (20)

Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
Mitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing SystemsMitigating the Impact of State Management in Cloud Stream Processing Systems
Mitigating the Impact of State Management in Cloud Stream Processing Systems
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALLBLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
BLOCKCHAIN FOR DUMMIES: GUIDEBOOK FOR ALL
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
DealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 editionDealBook of Ukraine: 2024 edition
DealBook of Ukraine: 2024 edition
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Recent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS InfrastructureRecent Advancements in the NIST-JARVIS Infrastructure
Recent Advancements in the NIST-JARVIS Infrastructure
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 

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 ( )
  • 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