#author("2019-01-05T08:33:40+00:00","default:admin","admin")
-[[公式サイト:http://domaindrivendesign.org/]]

-[[Domain Driven Design(ドメイン駆動設計) Quickly 日本語版:http://www.infoq.com/jp/minibooks/domain-driven-design-quickly;jsessionid=E8C1652BF2AAC131C2E54001B3266405]]
--[[PDF:http://www.infoq.com/resource/minibooks/domain-driven-design-quickly/ja/pdf/DomainDrivenDesignQuicklyOnline_JP.pdf]]

-[[ドメイン駆動設計 基本を理解する:https://www.slideshare.net/masuda220/ss-59756718]]
-[[3つのキーワードで学ぶ、ドメイン駆動設計の基礎知識:https://logmi.jp/tech/articles/310424]]

-[[ドメイン駆動設計は何を解決しようとしているのか[DDD]:https://qiita.com/little_hand_s/items/721afcbc555444663247]]

*概要 [#be57db19]
**キーワード [#ecd90615]
***ドメイン [#acb14e6d]
問題領域、対象領域

**特徴 [#v96c0c6a]
***ドメインロジックに焦点を合わせる [#h99aae64]
-ドメインの状況を表している値の種類をまず見つける
-それに対してどんな計算ロジック、判定ロジックがあるかということを見つけ出す
-その判定結果や計算結果をどう表現するかを決める

-以下はドメインロジック以外の関心事 = ドメインロジックに従属すべき関心事
--画面の入出力
--DBアクセス
--API

-ドメインロジックに焦点を合わせる理由
--ソフトウェアの複雑さの原因は、ドメインロジック(計算ロジックと判定ロジック)にある
--ドメインロジックと入出力が混在していると、ドメインロジックの全体像や構造が見えてこない
--入出力の関心事を分離して、ドメインロジックだけを対象にすると、ドメインロジックの輪郭や構造がはっきりしてくる
--ドメインロジックの輪郭や構造が見えてくると、計算ロジックと判定ロジックの発見が進み、ロジックの整理がやりやすくなる
--計算ロジックと判定ロジックが整理できると、入出力の記述もシンプルになる
--ソフトウェア全体の見通しが良くなり、変更が楽で安全になる

***オブジェクト指向でモジュール化する [#m6d6143e]
-入出力単位のモジュール化

-値の種類ごとのモジュール化

***インクリメンタルに設計する [#r3f162ae]
-対象領域の知識を少しずつ広げ、掘り下げる
-最初に書いたコードを見直しながら改善する
-時間とともに具体的で詳細になっていく要求を、時間とともにコードに反映する
-時間とともに変化する要求を、時間とともにコードに反映する

**ドメインモデルを表現する要素 [#ef43c0f0]
***エンティティ (参照オブジェクト) [#b9c07b00]
ドメインモデル内のオブジェクトであり、その属性によってではなく、連続性と識別性によって定義される。
***値オブジェクト [#z0a6ec42]
事物の特性を記述するオブジェクトである。特に識別する情報はなく、通例、読み出し専用のオブジェクトであり、Flyweight パターンを用いて共有できる。
***サービス [#v09ec342]
操作がオブジェクトに属さない場合に、問題の自然な解決策として、操作をサービスとして実現することができる。サービスの概念は、GRASPにおいて"純粋人工物"と呼ばれるものである。
***リポジトリ [#i2e3e583]
ドメインオブジェクトを取得するメソッドは、記憶域の実装を簡単に切り替えられるようにするため、専門のリポジトリオブジェクトに処理を委譲するべきである。
***ファクトリー [#e0841620]
ドメインオブジェクトを生成するメソッドは、実装を簡単に切り替えられるようにするため、専門のファクトリーオブジェクトに処理を委譲するべきである。

*アーキテクチャ [#d69929a5]
-[[[DDD]ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か:https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752]]
-[[[DDD]ドメイン駆動 + オニオンアーキテクチャ概略:https://qiita.com/little_hand_s/items/2040fba15d90b93fc124]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS