SlideShare a Scribd company logo
1 of 14
Download to read offline
エリック・エヴァンスの 
ドメイン駆動設計 
P.189~206:第3部冒頭~8章 
@福岡DDD勉強会 第7回 
すごく、、、AKIMICYUです、、、
第3部へ 
第2部から
第2部のおさらい (1/2) 
モデルと実装との一致を保つための基礎 
4章:レイア化アーキテクチャによるドメインの隔離 
5章:ソフトウエアで表現されたモデル(エンティ 
ティ、値オブジェクト、サービス、モジュール) 
6章:集約、ファクトリ、リポジトリ 
上記は実証済みの構成要素。矛盾のない言語と一緒に使 
用することで、開発作業が健全化 
そこは本当の課題ではない
第2部のおさらい (2/2) 
本当の課題は的確なモデルを実際に見つけること 
的確なモデルは 
ドメインエキスパートの微妙な関心事をとらえて、実 
用的な設計を推進可能 
ドメインについての深い理解をとらえている 
第3部では、そうしたモデルの目標を明確にした上で、 
目標が達成されるまでのプロセスを記述する
第3部: 
深い洞察へと向かう 
リファクタリング
役に立つモデルの成功から導き出せる 
3点のこと (p.190) 
1. 洗練されたドメインモデルを作ることは可能、苦 
労して実現する価値がある 
2. そうしたモデルの開発には、リファクタリングを 
行うイテレーティブなプロセス(+ドメインエキ 
スパート/開発者の密接な協力)がほぼ必須 
3. そうしたモデルは、実装して効果的に使用するに 
あたって、高度な設計スキルが必要かもしれない
リファクタリング 
機能を変更しないように行われる、ソフトウェアの再設計 
プロセス(と著者は捉えている) 
リファクタリングについての焦点 
1. 「詳細レベルのマイクロリファクタリング」 
2. 「パターン試行リファクタリングのアプローチ」 
3. 「ドメインについてのより深い洞察」←ここが論点 
(1と2が3に置き換わると云っているわけではない。)
深いモデル 
オブジェクト分析について説明する従来の方法 
「要件定義書にある名詞と動詞を識別して、それらをオブジェ 
クト名とメソッド名に採用」 
こうして作ったモデルは、浅い知識にしか基づかない 
深いモデルはドメインエキスパートの主要な関心事と、それに 
最も深く関連した知識に関する明快な表現を提供するが、一方 
でドメインの表面的な側面は捨て去る 
注意:ただ抽象化すればいいと云っている訳ではない
各章の位置づけ 
8章ブレイクスルー[導入] 成功体験紹介 
9章暗黙的な概念を 
明示的にする 
ドメインの中心となる 
モデルを探しだす 
10章しなやかな設計モデルを設計に取り込む方法 
11章アナリシスパターンを 
適用する見出した概念のモデル化に 
既存のパターンを利用する 
12章デザインパターンを方法の紹介 
モデルに関連づける 
13章より深い洞察に向かう 
リファクタリングまとめ
第8章: 
ブレイクスルー
ブレイクスルーの話(1/4) 
リファクタリングの収穫 
通常は、小さい努力に対してわずかな報酬 
でもたまに、突如として現れて、プロジェクト 
全体に大きな影響を与えるものがある 
→ 8章はそういう事例紹介
ブレイクスルーの話(2/4) 
事例:投資銀行のシンジゲートローン管理 
ローン出資、ローン、ファシリティ、出資(p.197) 
貸し手の分担率が固定であることを想定していたが、 
そうでないことが分かってきた 
「ローン調整」という概念を導入するもうまくいかず 
  → 基本設計に問題がある兆候では?
ブレイクスルーの話(3/4) 
「ファシリティの分担率」と「ローンの分担率」が互いに 
独立して変更できることに気づく 
変更前のモデル:分担率から算出された各社のローン出 
資額について、各社で金額調整を行う。 
変更後のモデル:ファシリティ分担率に応じた出資額を 
負担するかの意思決定を、毎回の出資ごとに各社が行 
う。その結果としてローンの分担率が確定する 
この洞察が大きなブレイクスルー(だが、ビジネスエキスパート視点から 
は、些細な気づきに時間を浪費しているように見える)
ブレイクスルーの話(4/4) 
さらに深い洞察 
より一般的な「シェアパイ」という概念へ 
「シェア算」の導入 
「ローン調整」は不要になった 
ビジネスエキスパートが理解可能なモデル図になる 
新しいユビキタス言語に基づくコミュニケーションの改善が、 
さらなるモデリングのブレイクスルーに繋がる

More Related Content

Viewers also liked

職業プログラマに必要な意識について
職業プログラマに必要な意識について職業プログラマに必要な意識について
職業プログラマに必要な意識についてakimichi Yamada
 
Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2edy555
 
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っているやはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っているyouten (ようてん)
 
Android BLEのつらみを予防するTips
Android BLEのつらみを予防するTipsAndroid BLEのつらみを予防するTips
Android BLEのつらみを予防するTipsTaisuke Oe
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会Shinji Kobayashi
 

Viewers also liked (7)

職業プログラマに必要な意識について
職業プログラマに必要な意識について職業プログラマに必要な意識について
職業プログラマに必要な意識について
 
Androidとi beacon(ble)
Androidとi beacon(ble)Androidとi beacon(ble)
Androidとi beacon(ble)
 
AndroidとiOSのBLEな事情 3
AndroidとiOSのBLEな事情 3AndroidとiOSのBLEな事情 3
AndroidとiOSのBLEな事情 3
 
Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2Bluetooth Low Energy入門講座 -part2
Bluetooth Low Energy入門講座 -part2
 
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っているやはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
 
Android BLEのつらみを予防するTips
Android BLEのつらみを予防するTipsAndroid BLEのつらみを予防するTips
Android BLEのつらみを予防するTips
 
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
 

Similar to エリック・エヴァンスのドメイン駆動設計 第3部〜8章まで

ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
DDD7章 言語を利用する:応用例
DDD7章 言語を利用する:応用例DDD7章 言語を利用する:応用例
DDD7章 言語を利用する:応用例akimichi Yamada
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門Takuya Kitamura
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント増田 亨
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】Tomoharu ASAMI
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug efvsug_jim
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにAtsuhiro Kubo
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with SymfonyAtsuhiro Kubo
 
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndDDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndBIGLOBE Inc.
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発Tomoharu ASAMI
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】Tomoharu ASAMI
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)Masayuki Kanou
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework Microsoft
 
Kinect 2セミナー
Kinect 2セミナーKinect 2セミナー
Kinect 2セミナーAkira Hatsune
 
RDRA DDD Agile
RDRA DDD AgileRDRA DDD Agile
RDRA DDD Agile増田 亨
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例agileware_jp
 
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)Ryusaburo Tanaka
 

Similar to エリック・エヴァンスのドメイン駆動設計 第3部〜8章まで (20)

ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
DDD7章 言語を利用する:応用例
DDD7章 言語を利用する:応用例DDD7章 言語を利用する:応用例
DDD7章 言語を利用する:応用例
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
 
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
実装(2) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第31回】
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug ef
 
Symfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るためにSymfony2でより良いソフトウェアを作るために
Symfony2でより良いソフトウェアを作るために
 
Software Development with Symfony
Software Development with SymfonySoftware Development with Symfony
Software Development with Symfony
 
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2ndDDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
DDDモデリングハンズオン - レガシーをぶっつぶせ。現場でDDD!2nd
 
DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発DSL駆動によるクラウド・アプリケーション開発
DSL駆動によるクラウド・アプリケーション開発
 
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
設計/ドメイン設計(3) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第25回】
 
20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)20100324 勉強会資料(ドメイン駆動)
20100324 勉強会資料(ドメイン駆動)
 
ADO.NET Entity Framework
ADO.NET Entity Framework ADO.NET Entity Framework
ADO.NET Entity Framework
 
Kinect 2セミナー
Kinect 2セミナーKinect 2セミナー
Kinect 2セミナー
 
RDRA DDD Agile
RDRA DDD AgileRDRA DDD Agile
RDRA DDD Agile
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
Dev campjpn day2session3
Dev campjpn day2session3Dev campjpn day2session3
Dev campjpn day2session3
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
JavaFX + NetBeans環境におけるJenkinsの活用(Jenkins第六回勉強会)
 

More from akimichi Yamada

情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell being情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell beingakimichi Yamada
 
情報処理技術者のための技術士受験のすすめ
情報処理技術者のための技術士受験のすすめ情報処理技術者のための技術士受験のすすめ
情報処理技術者のための技術士受験のすすめakimichi Yamada
 
NASのHDDが死にかけた話
NASのHDDが死にかけた話NASのHDDが死にかけた話
NASのHDDが死にかけた話akimichi Yamada
 
Fiddlerで通信のデバッグを効率化する
Fiddlerで通信のデバッグを効率化するFiddlerで通信のデバッグを効率化する
Fiddlerで通信のデバッグを効率化するakimichi Yamada
 
Androidでテストってどないすんねん!
Androidでテストってどないすんねん!Androidでテストってどないすんねん!
Androidでテストってどないすんねん!akimichi Yamada
 

More from akimichi Yamada (6)

情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell being情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell being
 
情報処理技術者のための技術士受験のすすめ
情報処理技術者のための技術士受験のすすめ情報処理技術者のための技術士受験のすすめ
情報処理技術者のための技術士受験のすすめ
 
NASのHDDが死にかけた話
NASのHDDが死にかけた話NASのHDDが死にかけた話
NASのHDDが死にかけた話
 
Fiddlerで通信のデバッグを効率化する
Fiddlerで通信のデバッグを効率化するFiddlerで通信のデバッグを効率化する
Fiddlerで通信のデバッグを効率化する
 
Phone gap + monaca
Phone gap + monacaPhone gap + monaca
Phone gap + monaca
 
Androidでテストってどないすんねん!
Androidでテストってどないすんねん!Androidでテストってどないすんねん!
Androidでテストってどないすんねん!
 

エリック・エヴァンスのドメイン駆動設計 第3部〜8章まで