Upgrade to Pro — share decks privately, control downloads, hide ads and more …

『ドメイン駆動設計をはじめよう』のモデリングアプローチ

 『ドメイン駆動設計をはじめよう』のモデリングアプローチ

- 『ドメイン駆動設計をはじめよう』の概要紹介
- この本のドメインモデリングの4つの特徴
- 競争優位性に焦点を合わせる
- 区切ってつなぐ(境界を探す、境界を超える)
- モデルの進化
- 認識合わせ(同じ言葉、イベントストーミング)

増田 亨

October 29, 2024
Tweet

More Decks by 増田 亨

Other Decks in Programming

Transcript

  1. 自己紹介 業務系アプリケーションソフトウェアの開発者 モデル駆動設計 Java/Spring Boot/IntelliJ IDEA/JIG 有限会社システム設計 代表 since 2003

    コミューン株式会社 技術アドバイザ since 2023 2 増田 亨(ますだ とおる) 著書(2017) 訳書(2024)
  2. 『ドメイン駆動設計をはじめよう』 Amazon.comで高評価(★4.6, 308review) “Learning Domain-Driven Design” の全訳 「ドメイン駆動設計を実践するために 最初に手にするべき1冊!」 by

    出版社 ドメイン駆動設計抜きにしても、よいことが書いてある by 綿引さん(もう一人の訳者) 3 ソフトウェアの実装と事業戦略を結びつける実践技法
  3. 競争優位性の観点から業務領域を三分類 中核の業務領域 • 競争優位の源泉 • 競合他社が簡単にまねができない独自のやり方 • 業務ロジックは必然的に複雑になる • 進化し続ける(競争優位を維持し続ける)ことが必要

    一般的な業務領域 • 他社と同じやり方でよい • 業務ロジックは複雑だが進化させる必要ない • この領域を独自に開発すべきではない 補完的な業務領域 • 自社独自のやり方が必要 • 業務ロジックは単純(CRUDやETL) 8 事業活動を「業務領域」に細分化 三つのカテゴリーへの分類が 設計判断の基本枠組みとなる
  4. 業務領域のカテゴリーとモデリング • 中核(競争優位の源泉) ⇒ 状態更新型のドメインモデリング ⇒ イベント中心型のドメインモデリング • 一般(他社と同じ、ロジックは複雑) 既存モデルを流用(独自にモデリングしない)

    • 補完(自社独自、ロジックは単純、CRUD/ETL) ⇒フラットなレコード型のデータモデリング(トランザクションスクリプト) ⇒ データ構造が入り組んだデータモデリング(アクティブレコード) 11
  5. 業務領域の分類の具体例(第1章) 12 中核(競争優位) • 推薦エンジン • データの匿名化 • モバイルアプリ 一般

    • 暗号化 • 会計 • 決済 • 認証と認可 補完 • 音楽ストリーミングサービスとの連係 • SNSとの連携 • ライブ参加履歴の管理 中核(競争優位) • 運行経路の選択 • 利用者の行動分析 • モバイルアプリ • 車両の管理 一般 • 交通状況 • 会計 • 請求 • 認証と認可 補完 • クーポン発行 • クーポンの有効性チェック ライブチケットのオンライン販売事業 相乗りタクシー型ミニバスサービス こういう事業分析や業務知識の具体例が多いのがこの本の価値
  6. 区切ってつなぐ • この本の一貫したモデリングスタイル • 境界を探す ⇒ 境界の確立 ⇒ 境界の超え方の定義 事業活動の構成単位の境界

    ⇒ 業務領域 モデルの境界 ⇒ 区切られた文脈 ロジック(不変条件)の境界 ⇒ 値オブジェクト ロジックの一貫性の境界 ⇒ 集約 サービス実装の境界 ⇒ マイクロサービス 分析系データ管理の境界 ⇒ データメッシュ 14