SlideShare a Scribd company logo
1 of 53
Download to read offline
DevLOVE 2012


 ドメイン駆動設計という
    仕事の流儀

        2012年12月16日
     有限会社 システム設計 増田亨
Domain-Driven Design (DDD)

 ドメイン駆動設計
ドメイン駆動設計の
  腕を磨くと
仕事が楽しくなる
  喜んでもらえる
  自分の成長の手ごたえ
  やっていて面白い
ドメイン駆動設計
        興味を持つ
利用者の
やりたい事
         いつも   話題にする
        モデルに要約する
 コードで実現する
ドメイン駆動設計的な


・アーキテクチャ
・開発プロセス
・設計スタイル
Domain-Drivenな

  アプリケーション
  アーキテクチャ
ドメインモデル指向の設計パターン
業務活動のトリガー                   業務手順の要約                             業務の知識


     ドメイン
                     起動
                                 ドメイン                  委譲
                                                                ドメイン
     イベント                        サービス                           モデル

   入会申込                         受付()
    -申込番号                      {                               会員とは?
    -氏名                          検証();                         入会とは?
    -連絡先                         記録();                         申込とは?
    -申込日時                        通知();                         受付とは?
                               }



"something interesting      "represents a Use Case scenario"   “an Object Model
which affects the domain"   "delegate to other objects "       of the Domain”
[EAA-dev, Fowler]           [GRASP : Controller]               [PoEAA]
ドメイン層の基本部品
業務イベント

入会申込
                                                  会員リポジトリ
           会員登録サービス                                     << interface >>
イベント            << controller >>
リスナ      登録する(会員) : void
                                               登録する(会員) : void
                                               存在を確認(会員) : Boolean

                                                  DIP    DBアクセス

       会員                            会員トランスファー
                                            << interface>>
  <<domain object>>
連絡手段                               Thank Youメール送る(会員) : void
                                   関係部門に通知する(会員) :void
通知先() : メールアドレス
業務の用語、業務のルール
                              メール送信            DIP      メッセージング
アンチパターン
 大きなサービスクラス        get
 5以上のimport文       get
                   get    データの入れ物だけの
 5以上のインスタンス変数       set
                           ドメインオブジェクト

 10行以上の長いメソッド       set
                    set
 50行を超えるクラス               メソッドは
                          getter/setter だけ

ドメインサービスクラスが    業務の流れ・構造・ルールの
いろいろ知っていて、      理解が不十分なまま作った、
                とりあえずの置き場所に、

なんでもやりたがる       なんでも突っ込んでいく
                (偶発的凝集)。
ドメインモデル指向の
  フレームワーク
  Spring MVC           SQLマッピング
                         myBatis




Bean バリデータ     ドメイン      メッセージング
                          Spring JMS
  Hibernate
               モデル
 テンプレート
                         OXマッピング
  エンジン
                           JAXB
  Velocity     業務の知識
ドメインイベント駆動の実行環境
     ドメイン              ドメイン            ドメイン
     イベント              イベント            イベント

 HTTP リクエスト          メッセージング
(Web アプリ, Web API)   (システム間連携)         電子メール受信
  アプケーション             メッセージング          メールサーバー
   サーバー                 サーバー             James
    Tomcat             Active MQ
                             サービス      Mailet
           Servlet
                             コンテナ      コンテナ
           コンテナ
                            Mule ESB




                     ドメインサービス

                      ドメインモデル
Domain-Drivenな

  開発プロセス
ドメイン駆動の開発プロセス
   ドメインの把握           ユースケース   画面・帳表

  コンテキスト    業務フロー                         ロバストネス分析


                      イベント    状態遷移



                                                   必要ならシーケンス図



初期のラフモデル   モデルの改良             属性の追加    操作追加         基盤クラス追加
                    モデルの洗練
                                                         Java
                                                       ソースコー
                                                          ド


                                         DDL/SQL
 手がかかり     要約、骨格    構造化用語集              ソースコー
                                           ド
 ドメインモデルの設計と実装                データモデル
ドメインを把握する
リレーションシップ駆動
要件定義(RDRA)         ICONIX    初期のラフモデルを
                             2時間以内で描く
     ・コンテキストモデル
     ・業務フローモデル              ・ドメインオブジェクトの発見
     ・イベント/状態モデル            ・ドメインモデルの育て方
                            ・ロバストネス分析
     モデル間を関連づけ                ユースケースと
     整合性と網羅性を確保               実装のギャップを埋める


               ビジネスルールの発見と定義
                       業務フロー図から
                       ドメインモデルから
                       イベント/状態モデルから

                        それぞれのモデルから
                        ビジネスルールを抽出する
                        ヒントとテクニック
インクリメンタルに
• Evolving ドメインモデルを育て続ける
 – 小さく生む
 – フィードバックを反映しながら育てる

• Pervading ドメインモデルを行渡らせ続ける
 – 多くの関係者
 – あらゆるタスク
 – ドメイン以外のレイヤ

• Binding       ドメインモデルを   結びつけ続ける
 – 利用者の関心事とモデル
 – 実装コードとモデル
イテレーティブで発見的に
より良い部品を探し続ける


 モデリング プログラミング


  リファクタリング     三位一体
               繰り返し
ドメインモデルの

  設計スタイル
設計原則 二本柱

 ギュッと             サラッと
 集めて              つなぐ
  High Cohesion   Low Coupling




ドメインオブジェクトに適用する
業務の知識を
ギュッと集める
・パッケージ
・クラス
・メソッド
          High Cohesion
業務の概念ごとに
 独立させて
サラッとつなぐ
・パッケージ
・クラス
           Low Coupling
ドメインモデルの設計
    腕を磨く

   小さな部品
  How より What
   設計の本を読む
原則・パターンとの付き合い方
ドメイン駆動設計への道
                  実装のテクニック                          ドメインの理解
                   ・メソッドの構成         設計のスタイル
                   ・オブジェクト間の特性の移動                   言葉の力
小さく作る練習            ・データの再編成
                   ・条件記述の単純化
                                                    モデル駆動
オブジェクト指向 エクササイズ                        ・役割ステレオタイプ
9つの簡単なルール          ・メソッド呼び出しの単純化
                                       ・小数の隣人と協力
                                       RDD




                                        責任の割当の原則
                                        GRASP




                                                    For
                                                    Thoughtful Developer
       実装の原則                             凝集と結合の原則
                                                    Leading Designer
                                         SOLID
      ・クラス
                                         RCC
      ・振る舞いとメソッド
                                         ASS
      ・状態とコレクション
腕を磨く

小さな部品
部品(業務の基本用語)の粒度
日付 (時分秒を持たない)            金額            管理番号,登録番号
時分(秒を持たない)               単価            取引先コード
翌営業日, 休前日                数量,数量単位,換算    取引区分
月末,月初, 四半期, 半期, 年度       消費税,税率,端数処理   契約番号
期間                       合計,小計,総合計     商品番号
有効期限                     数量割引          型式コード
予定日                      キャンペーン価格      製造番号
期限切れ一週間前のアラート            季節料金          シリアルナンバー
前日のリマインダ                 キャンセルポリシー     …
…                        …

Date, String, BigDecimal, Long, …
            小さな部品に
プリミティブな型をラッピングした

業務で必要なデータとロジック(知識、ルール)を

凝集(カプセル化)する
ドメインオブジェクト

第5章
オブジェクト指向
エクササイズ
           小さく作る
           クラス     50行まで
           メソッド    3行まで
           パッケージ   10ファイルまで
3行メソッド
nextStage()
{
   ready();
   set();
   go();
}
       こういうのが良い感じ
必然的に
   オブジェクト指向(小さく)
   になる


   9つの簡単なルール
          「Thought Works アンソロジー」
            第5章 オブジェクト指向エクササイズ

原文 http://www.bennadel.com/resources/uploads/2012/ObjectCalisthenics.pdf
小さく作る練習課題
1.ひとつのメソッドのインデントは1段階まで
2.else 句 を使わない
3.すべてのプリミティブ、文字型をラッピング
4.ファーストクラスコレクションを使う
5.1行につき、ドットはひとつ
6.名前は省略しない
7.クラス50行、パッケージ10ファイルまで
8.インスタンス変数は2つまで
9.getter/setter を使わない
小さく作る練習ガイド
                                  パターン集



第5章
オブジェクト指向エクササイズ                     パターン集
9つのルール


slideshare:

オブジェクト指向できていますか?
http://www.slideshare.net/MoriharuOhzu/ss-14083300

オブジェクト指向エクササイズのススメ
http://www.slideshare.net/yojik/ss-1033616

オブジェクト指向の設計と実装 学び方のコツ
http://www.slideshare.net/masuda220/ss-14263541

                              原文    http://www.bennadel.com/resources/uploads/2012/ObjectCalisthenics.pdf
小さな部品   実践の小技
汎用部品 より 目的特化部品
  if 文を減らす・隠す
 for 文を減らす・隠す
 setter を使わない
 getter を使わない
汎用部品       より   目的特化部品
String             AreaCode
Long               EntryNumber
BigDecimal ラッピング
                   Amount
Date               ExpireDate
List<Appoint>      Appointments

 なんでも屋               目的特化
if   文を減らす・隠す

Boolean より Enum
Strategy/State パターン
Missing Object パターン (null object パターン)
Map
パターンマッチング
…
for     文を減らす・隠す

・ファーストクラスコレクションに隠す
・Collection フレームワーク API の復習
        たとえば、TreeMap, TreeSet
必要なら
・Comparable の実装
・Comparator の実装
・equals()/hashCode() の override
setter   を使わない
完全コンストラクタ
  ・Value Object パターン
  ・生成時に必要な値をすべて渡す

状態を変えたい時
  ・別のオブジェクトを作る
  ・ライフサイクルの短いクラスの導入
  (状態を固定できるまで細分化)
getter     を使わない
@Deprecated
   フレームワークは使っていいよ
   アプリケーションでは使っちゃだめよ

get して何したいのか?
もう一度考え直す
 ロジックを移動する (データにロジックを寄せる)
 フィールドを移動する (ロジックにデータを寄せる)
腕を磨く
How   より   What
How       より    What
業務要件:期限切れの前日にアラートメールを送る


   expireDate.add(-1);

   expireDate.previousDay();

   expireDate.dayOfFinalAlert ();
How           より   What
                       料金の用語( What ) をクラスで表現

計算方法( How ) を記述                課金ポリシー

                               適用する()
      料金

                               シーズン料金
    計算する()
                                           <<interface>>
                               レート()
  ルール変更・追加のたびに
  クラスが肥大化し
                        夏料金              冬料金
  if 文が増殖する予感
                       レート()            レート()


                          ルール変更・追加は、
                          一部の部品の追加、差し替えで
                          すみそう。
腕を磨く


  本を読む
設計の
いろいろな設計の考え方に触れる


             広がりと掘り下げのT字
             多くの本に目を向け、視野を広げる。
             (浅くて良い。建築や機械、他分野まで広げる。)

             これぞと思う本は、徹底的に読み込んで深く理解する。
             両方やることがたいせつ。




© 慶応大学 SFC 井庭研 学習パターン
技術書を読み込む

                    鳥の眼と虫の眼
                    俯瞰して全体を見る。
                    詳細に部分を見る。
                    2つの視点を行き来する。


       小説じゃないだから、
       最初から順番に読んで面白いわけがない。

       知らないことが書いてあるんだから、
       一読で、わかるわけがない。

       鳥の眼と虫の眼で何度も読み直す


© 慶応大学 SFC 井庭研 学習パターン
設計技術を自分のものにする



                  プロトタイピング
                  実際に作って覚える。
                  設計用語は、コードを書いて、動かして
                  「はじめて」わかることばかり。

               設計用語をひとつ覚えるたびに、
               昨日のコードと今日のコードの違いが
               自分でわかるようになる。

               それが「設計の考え方」「見方」の変化。

© 慶応大学 SFC 井庭研 学習パターン
腕を磨く

  設計原則
デザインパターン
 付き合い方
DDDのパターンの源流
  RDD: Responsibility Driven Design
  18の基本用語(第1章)



  GRASP: General Responsibility Assignment
  9つの責任割り当て汎用パターン




  SOLID: 5つのクラス設計の原則
  RCC:3つのパッケージの凝集度の原則
  ASS:3つのパッケージの結合度の原則
設計原則・デザインパターン
   との付き合い方


      北極星、
 in the context、
     as a whole
設計原則を北極星として使う

北極星に行きたいわけではない。
現在の進行方向の確認に使うだけ。

南に進むことが、
時には役に立つこともある。
in the context
設計原則やデザインパターンは、
特定の文脈(背景、事情、前後関係)の
中での使い方を探す。

文脈が違えば
原則・パターンの使いどころも変わる。

その文脈でのベストプラクティスを探す。
as a whole
ドメインモデルが、
全体として、
  役に立つか?
  心地よいか?

設計原則やパターンへの執着が、
ドメインモデルを
台無しにすることもある。
まとめ
ドメイン駆動設計
        興味を持つ
利用者の
やりたい事
         いつも   話題にする
        モデルに要約する
 コードで実現する
腕を磨く

  小さな部品
 How より What
  設計の本を読む
設計原則とうまく付き合う
仕事を楽しく
 喜んでもらう
 自分が成長する
 面白いことをやる

More Related Content

What's hot

ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう増田 亨
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)Yoshitaka Kawashima
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる増田 亨
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意Yoshitaka Kawashima
 
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース増田 亨
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで増田 亨
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し増田 亨
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)Mikiya Okuno
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことBIGLOBE Inc.
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門増田 亨
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう増田 亨
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD増田 亨
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかKoichiro Matsuoka
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計増田 亨
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 

What's hot (20)

ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
ちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てるちいさなオブジェクトでドメインモデルを組み立てる
ちいさなオブジェクトでドメインモデルを組み立てる
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
リッチなドメインモデル 名前探し
リッチなドメインモデル 名前探しリッチなドメインモデル 名前探し
リッチなドメインモデル 名前探し
 
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのかDDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 

Similar to ドメイン駆動設計という仕事の流儀

DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】Tomoharu ASAMI
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Tomoharu ASAMI
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallShinpei Ohtani
 
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Daizen Ikehara
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門Sho A
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - Tetsutaro Watanabe
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】Tomoharu ASAMI
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 
RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)Techno Project Co., Ltd.
 
プログラムの大海に溺れないために
プログラムの大海に溺れないためにプログラムの大海に溺れないために
プログラムの大海に溺れないためにZenji Kanzaki
 

Similar to ドメイン駆動設計という仕事の流儀 (20)

DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
 
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 FallAmazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
Amazon Elastic MapReduce@Hadoop Conference Japan 2011 Fall
 
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
 
Hadoopカンファレンス2013
Hadoopカンファレンス2013Hadoopカンファレンス2013
Hadoopカンファレンス2013
 
Ajn24
Ajn24Ajn24
Ajn24
 
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
Dev campjpn day2session3
Dev campjpn day2session3Dev campjpn day2session3
Dev campjpn day2session3
 
RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)RWC2012(ワコムアイティ&テクノプロジェクト)
RWC2012(ワコムアイティ&テクノプロジェクト)
 
プログラムの大海に溺れないために
プログラムの大海に溺れないためにプログラムの大海に溺れないために
プログラムの大海に溺れないために
 

More from 増田 亨

ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善増田 亨
 
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述増田 亨
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン増田 亨
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来増田 亨
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer増田 亨
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル増田 亨
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル増田 亨
 
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える増田 亨
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ増田 亨
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方増田 亨
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう増田 亨
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう増田 亨
 
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java増田 亨
 
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指してアジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して増田 亨
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす増田 亨
 
SoR 2.0 summary
SoR 2.0 summarySoR 2.0 summary
SoR 2.0 summary増田 亨
 
毎日が越境だ!
毎日が越境だ!毎日が越境だ!
毎日が越境だ!増田 亨
 
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築増田 亨
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】増田 亨
 

More from 増田 亨 (20)

ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
 
事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述事業活動モデル・システム機能モデル・ビジネスロジックの記述
事業活動モデル・システム機能モデル・ビジネスロジックの記述
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
 
プロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイルプロダクトづくりのためのソフトウェア設計スタイル
プロダクトづくりのためのソフトウェア設計スタイル
 
ソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考えるソフトウェア設計の学び方を考える
ソフトウェア設計の学び方を考える
 
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチレガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
レガシーコードの複雑さに立ち向かう~ドメイン駆動設計のアプローチ
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
ビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かうビジネスルールの複雑さに立ち向かう
ビジネスルールの複雑さに立ち向かう
 
ソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かうソフトウェアの核心にある複雑さに立ち向かう
ソフトウェアの核心にある複雑さに立ち向かう
 
DDD sample code explained in Java
DDD sample code explained in JavaDDD sample code explained in Java
DDD sample code explained in Java
 
アジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指してアジャイルなソフトウェア設計を目指して
アジャイルなソフトウェア設計を目指して
 
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かすドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
 
SoR 2.0 summary
SoR 2.0 summarySoR 2.0 summary
SoR 2.0 summary
 
毎日が越境だ!
毎日が越境だ!毎日が越境だ!
毎日が越境だ!
 
SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築SoR 2.0 基幹システムの再定義と再構築
SoR 2.0 基幹システムの再定義と再構築
 
ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】ドメイン駆動設計とは何か 【入門編】
ドメイン駆動設計とは何か 【入門編】
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
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
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...博三 太田
 
クラウドネイティブなサーバー仮想化基盤 - 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
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (8)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
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 発表資料)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~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...
 
クラウドネイティブなサーバー仮想化基盤 - 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
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

ドメイン駆動設計という仕事の流儀