# ドメイン駆動設計入門 輪読会 vol.01
2021/11/04 [@kdnakt](https://twitter.com/kdnakt)
---
## ドメイン駆動設計
- エリック・エヴァンスのドメイン駆動設計(2011年)
- https://www.amazon.co.jp/dp/4798121967
- 原著:Domain-Driven Design:
Tackling Complexity in the Heart of Software
- https://www.amazon.co.jp/dp/0321125215
---
### 今日の範囲
- Chapter 1 ドメイン駆動設計とは
- 1.1 ドメイン駆動設計とは何か
- 1.2 ドメインの知識に焦点をあてた
設計手法
- 1.3 本書解説事項と目指すゴール
- 1.4 本書で解説するパターンについて
---
### 今日の概要
1. 変化に強い、長期的安定運用可能なDDD
2. 本書のゴール:DDDの本質に立ち向かう準備
3. DDD=ドメイン知識とコードをつなぐ
反復的開発手法
---
#### 1. 変化に強い、長期的安定運用可能なDDD
----
- なぜいま、ドメイン駆動設計(DDD)か
- 提唱は2003年頃、本書は2020年出版
- ひと昔前:素早いリリース重視
- DDD:開発初期コストから敬遠される
----
- サービスの素早いリリース重視
- 最初期の局所的開発速度を優先
- システムの生存競争には最良の戦略
- 片道ロケット、帰ってこれない
- つぎはぎだらけの修正、複雑怪奇な進化
- DDD
- 開発初期はモデリングに時間かかる
- 柔軟性があり、変化を吸収できる
- 長期的な安定運用
----
- プログラムは動かすだけなら簡単
- 動かし続けることは難しい
- 長期的、安定的な運用を願うならDDDを学ぶべき
---
#### 2. 本書のゴール:DDDの本質に立ち向かう準備
----
- DDDを理解するのは難しい
- 多くの概念や用語が登場
- 前提知識が必要
- 実践の難しいプラクティスも
(環境が必要)
- 本書:理解・実践しやすい、実装に関する
パターンに集中
----
- 本書のゴール
- 少しずつDDDの理解を広げる
- DDDの本質に立ち向かう準備を完了する
---
#### 3. ドメイン知識とコードをつなぐ反復的開発手法
----
- ドメイン:プログラムを適用する対象領域
- ドメインに何が含まれるか、が重要
- 物流:倉庫、積載量、トラックの語源
- 会計:金銭、帳票、複式簿記の歴史
----
- 利用者に役立つソフトウェアを開発する
- 利用者の直面する問題を正確に理解する
- ドメインの知識を取捨選択する
- その結果をコードに落とし込む
----
- ドメインモデル
- 現実の事象・概念を抽象化した概念
- 開発者とドメイン専門家が協力して作る
- ドメインに応じて取捨選択
- 例)ペン
- 小説家にとって:文字を書く
- 文房具店にとって:商品、値段
----
- ドメインモデルはただの知識
- 問題を直接解決しない
- 媒体(コード)で表現されて
初めて問題を解決する
- ドメインオブジェクト
- ドメインモデルをソフトウェアモジュールとして表現
- ドメインモデル(知識)を取捨選択する必要
- モデルに忠実だと変化吸収しやすい
----
- 概念・モデル・オブジェクトの相互作用
- ドメインオブジェクトはプログラム
- 複雑な人の営みの曖昧さを
受け入れられない
- ときにドメインモデル、概念を
見直す必要がある
- 実装時にもドメインへの洞察が深まる
---
### 今日の概要
1. 変化に強い、長期的安定運用可能なDDD
2. 本書のゴール:DDDの本質に立ち向かう準備
3. DDD=ドメイン知識とコードをつなぐ
反復的開発手法
---
### おまけ:本書で解説するパターン
- 知識を表現するパターン:
- 値オブジェクト(第2章)
- エンティティ(第3章)
- ドメインサービス(第4章)
- アプリケーションを実現するためのパターン
- リポジトリ(第5章)
- アプリケーションサービス(第6章)
- ファクトリ(第9章)
- 知識を表現する、より発展的なパターン
- 集約(第12章)
- 仕様(第13章)
---
### COLUMN ドメイン駆動設計の実践を
### 難しくするもの
- ソフトウェア開発:関係者が複数存在する
- DDD:関係者とのコミュニケーション、
チームビルディングとも関係
- 例:ドメインモデル構築には
ドメインの実践者の視点が不可欠
- DDDある種の理想:妥協することもある
---
### マイクロサービスとDDD
- 『モノリスからマイクロサービスへ』
- https://www.amazon.co.jp/dp/4873119316
- DDDで作ったモデルをもとに
マイクロサービス化
----

{"metaMigratedAt":"2023-06-16T13:46:33.495Z","metaMigratedFrom":"YAML","title":"ドメイン駆動設計入門 輪読会 vol.01","breaks":true,"slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"df36d0f0-b67e-41ac-96b3-f3988326d230\",\"add\":3295,\"del\":727}]"}