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

ソフトウェアの実装と事業戦略を結びつける

 ソフトウェアの実装と事業戦略を結びつける

『ドメイン駆動設計をはじめよう』の概要説明

①この本で学んでほしいこと(原著者の思い)
②原著者のドメイン駆動設計のとらえ方
③この本の特徴
④ソフトウェア実装と事業戦略を結びつける方法
⑤事業の成長とソフトウェアの成長
⑥開発チームの学習と成長

増田 亨

August 20, 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, 302review) “Learning Domain-Driven Design” の全訳 「ドメイン駆動設計を実践するために 最初に手にするべき1冊!」 by

    出版社 ドメイン駆動設計抜きにしても、よいことが書いてある by もう一人の訳者綿引さん 3 ソフトウェアの実装と事業戦略を結びつける実践技法
  3. 設計 判断 事業活動とソフトウェア設計を結びつける 7 事業活動 課題 課題 仕組み 仕組み 関係者

    開発者が理解 トランザクション スクリプト アクティブ レコード ドメイン モデル イベント履歴式 ドメインモデル 値オブジェクト 集約 業務サービス レイヤード ポートと アダプター CQRS Web API メッセージング 送信箱 サーガ プロセス マネージャー イベント駆動型 アーキテクチャ マイクロ サービス データメッシュ トランザクション ロールバック 排他制御 テスト戦略 イベント ストーミング 大きな リファクタリング (第1章~第4章) 設計の選択肢(第5章~第16章) (第10章、付録A) この本の全体像 実践知
  4. この本の意図をわかりやすく伝えるために 原語 従来の訳語 本書の訳語 domain ドメイン 事業活動 subdomain サブドメイン 業務領域

    domain logic ドメインロジック 業務ロジック core domain コアドメイン 中核の業務領域 ubiquitous language ユビキタス言語 同じ言葉 bounded context 境界づけられたコンテキスト 区切られた文脈 context map コンテキストマップ 文脈の地図 16
  5. 事業活動を業務領域に分解する 事業活動(ドメイン) • 顧客にどんな価値を提供しているか • どうやってその価値を提供しているか • 競合他社とどうやって差別化し競争優位を生み出し維持するか 業務領域(サブドメイン) •

    事業活動の領域全体を細分化したもの • すべての業務領域が一体となって顧客に価値を提供する • 販売促進、販売、顧客サービス、出荷、在庫、会計、財務、人事、… 20
  6. 事業戦略の視点から業務領域を分類 中核の業務領域 • 競争優位の源泉 • 業務ロジックが複雑 • 変化を繰り返す 一般的な業務領域 •

    他社と同じやり方でよい • 業務ロジックは複雑 • あまり変化しない 補完的な業務領域 • 自社独自のやり方が必要 • 業務ロジックは単純 • あまり変化しない 21 業務領域の細分化と 三つのカテゴリーへの分類が 設計判断の基本枠組みとなる
  7. 業務領域の分類の具体例(第1章) 25 中核(競争優位) • 推薦エンジン • データの匿名化 • モバイルアプリ 一般

    • 暗号化 • 会計 • 決済 • 認証と認可 補完 • 音楽ストリーミングサービスとの連係 • SNSとの連携 • ライブ参加履歴の管理 中核(競争優位) • 運行経路の選択 • 利用者の行動分析 • モバイルアプリ • 車両の管理 一般 • 交通状況 • 会計 • 請求 • 認証と認可 補完 • クーポン発行 • クーポンの有効性チェック ライブチケットのオンライン販売事業 相乗りタクシー型ミニバスサービス こういう事業分析や業務知識の具体例が多いのがこの本の価値
  8. 現実世界のドメイン駆動設計 こういうことはありえないし、必要もない(第13章) • チーム全員がドメイン駆動設計を熟知している • 最初から全員が役に立つモデルの探求に全力をつくす • 全ての関係者が同じ言葉を忠実に使う • 既存システムや外部サービスを考慮しなくてよい制約の少ない新規案件

    ドメイン駆動設計のすべての技法を使う必要はない ドメイン駆動設計が組織として受け入れられていない状況でも実践は可能  適切な道具を必要に応じて選択的に使う  それぞれのやり方の背景にある考え方と原則を意識して使う  組織の変化とソフトウェアの成長に忍耐強く取り組む 30
  9. 設計 判断 事業活動とソフトウェア設計を結びつける 39 事業活動 課題 課題 仕組み 仕組み 関係者

    開発者が理解 トランザクション スクリプト アクティブ レコード ドメイン モデル イベント履歴式 ドメインモデル 値オブジェクト 集約 業務サービス レイヤード ポートと アダプター CQRS Web API メッセージング 送信箱 サーガ プロセス マネージャー イベント駆動型 アーキテクチャ マイクロ サービス データメッシュ トランザクション ロールバック 排他制御 テスト戦略 イベント ストーミング 大きな リファクタリング (第1章~第4章) 設計の選択肢(第5章~第16章) (第10章、付録A) この本の全体構成 実践知