#Book
## 9-1 [[🗃️オブジェクト]]の分類
### [[🗃️Entity(DDD)]]
- 実世界に存在するものに対応する[[🗃️オブジェクト]]が[[🗃️Entity(DDD)]]
- 予約や参加と言った形のない情報も含む
- [[🗃️Entity(DDD)]]のプロパティは状態
- [[🗃️インスタンス]]の一意性がある
### [[🗃️Value Object(DDD)]]
- 一意性と無関係な[[🗃️オブジェクト]]
- 整数や真偽値と言った値
- [[🗃️イミュータブル]]
### [[🗃️Service(DDD)]]
- 擬似的なシングルトン
- 状態を持たない
- 可変部分は、コンストラクタ引数のみ
### [[🗃️Factory(DDD)]]
- [[🗃️オブジェクト]]を生成する[[🗃️オブジェクト]]
### [[🗃️Repositry(DDD)]]
- [[🗃️Entity(DDD)]]の提供に特化したもの
- [[🗃️Factory(DDD)]]が行うのが、「生成」に対し[[🗃️Repositry(DDD)]]が行うのは「取り出し」
## 9-2 [[🗃️ドメイン駆動設計(DDD)]]
- 問題について知っているのは、ユーザー
- どのように解決するの正しいのかを知っているのは開発者
### [[🗃️モデル駆動設計(MDD)]]
- ドメインのモデリングだけしてみる
- 実機能がない抽象、[[🗃️クリーンアーキテクチャ]]の中心に近い部分から書き出してみる
- モデルコードでリードするのを[[🗃️ドメイン駆動設計(DDD)]]では、[[🗃️モデル駆動設計(MDD)]]という
### [[🗃️実践的モデラー]]
- [[🗃️モデル駆動設計(MDD)]]を進める人
### [[🗃️ユビキタス言語]]
- ユーザーと開発者の間に設ける共通の語彙
[[🗃️ドメイン駆動設計(DDD)]]とは、[[🗃️モデル駆動設計(MDD)]]が[[🗃️ユビキタス言語]]を通じて要求の洗練のフィードバックを受けて育つプロセスのこと。
## 9-3 [[🗃️アジャイル]]
- [[🗃️アジャイルソフトウェア開発宣言]]
- [[🗃️デザインパターン]]も、[[🗃️オブジェクト指向]]も所詮は道具。
- 円滑にコミュニケーションする道具として重要
- ユーザーの目的に合った[[🗃️ソフトウェア]]を作るために有用
- 与えられた使用を決まった言語で書く作業は楽だけど、うまくいかない。
- 大事なのは個人との対話
- 「アジャイルとは何をすることなのか」と考えると難しいが、「何をすることではないか」は明確
- 多人数体制の開発に潜みがちな不道徳さこそ、アジャイルが避けようとしたことの本質
- 健全に変化を受け入れるために、結果として何度もプログラムに手をいれる反復プロセスが必然だった