# ドメイン駆動設計入門 輪読会 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で作ったモデルをもとに マイクロサービス化 ---- ![](https://i.imgur.com/R1aWk4c.png)
{"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}]"}
    481 views