Slide 1

Slide 1 text

モデリングアプローチ 2024年10月31日 有限会社システム設計 増田 亨 1 UMTP モデリングセミナー 『ドメイン駆動設計をはじめよう』の

Slide 2

Slide 2 text

自己紹介 業務系アプリケーションソフトウェアの開発者 モデル駆動設計 Java/Spring Boot/IntelliJ IDEA/JIG 有限会社システム設計 代表 since 2003 コミューン株式会社 技術アドバイザ since 2023 2 増田 亨(ますだ とおる) 著書(2017) 訳書(2024)

Slide 3

Slide 3 text

『ドメイン駆動設計をはじめよう』 Amazon.comで高評価(★4.6, 308review) “Learning Domain-Driven Design” の全訳 「ドメイン駆動設計を実践するために 最初に手にするべき1冊!」 by 出版社 ドメイン駆動設計抜きにしても、よいことが書いてある by 綿引さん(もう一人の訳者) 3 ソフトウェアの実装と事業戦略を結びつける実践技法

Slide 4

Slide 4 text

この本のドメインモデリング 4つの特徴 4

Slide 5

Slide 5 text

この本のドメインモデリング 4つの特徴 ①競争優位性に焦点を合わせる ②区切ってつなぐ(境界を探す、境界を超える) ③モデルの進化 ④認識合わせ(同じ言葉、イベントストーミング) 5 エヴァンス本とは強調する点に違いがある どちらかと言えばヴァーノン本に近い

Slide 6

Slide 6 text

競争優位性に焦点を合わせる 6

Slide 7

Slide 7 text

「はじめに」 この本で学んでほしいことは、 ソフトウェア設計と事業方針を密接に関係づける ことの効果です。 7 事業方針の中心課題は競争優位性 そことソフトウェア設計を整合させる

Slide 8

Slide 8 text

競争優位性の観点から業務領域を三分類 中核の業務領域 • 競争優位の源泉 • 競合他社が簡単にまねができない独自のやり方 • 業務ロジックは必然的に複雑になる • 進化し続ける(競争優位を維持し続ける)ことが必要 一般的な業務領域 • 他社と同じやり方でよい • 業務ロジックは複雑だが進化させる必要ない • この領域を独自に開発すべきではない 補完的な業務領域 • 自社独自のやり方が必要 • 業務ロジックは単純(CRUDやETL) 8 事業活動を「業務領域」に細分化 三つのカテゴリーへの分類が 設計判断の基本枠組みとなる

Slide 9

Slide 9 text

業務領域のカテゴリー 分類方法 9 競合他社との差別化 中核に重点的に取り組む(事業価値が最も高い) 一般はパッケージやクラウドサービスを検討 補完はできるだけ手間をかけずにすませる 中核 業務ロジックの複雑さ 二軸で分類

Slide 10

Slide 10 text

業務領域のカテゴリーの比較 中核 一般 補完 競争優位 ◎ × × 複雑さ 〇 〇 × 変化 〇 × × 実装 内製 購入 外注 10

Slide 11

Slide 11 text

業務領域のカテゴリーとモデリング • 中核(競争優位の源泉) ⇒ 状態更新型のドメインモデリング ⇒ イベント中心型のドメインモデリング • 一般(他社と同じ、ロジックは複雑) 既存モデルを流用(独自にモデリングしない) • 補完(自社独自、ロジックは単純、CRUD/ETL) ⇒フラットなレコード型のデータモデリング(トランザクションスクリプト) ⇒ データ構造が入り組んだデータモデリング(アクティブレコード) 11

Slide 12

Slide 12 text

業務領域の分類の具体例(第1章) 12 中核(競争優位) • 推薦エンジン • データの匿名化 • モバイルアプリ 一般 • 暗号化 • 会計 • 決済 • 認証と認可 補完 • 音楽ストリーミングサービスとの連係 • SNSとの連携 • ライブ参加履歴の管理 中核(競争優位) • 運行経路の選択 • 利用者の行動分析 • モバイルアプリ • 車両の管理 一般 • 交通状況 • 会計 • 請求 • 認証と認可 補完 • クーポン発行 • クーポンの有効性チェック ライブチケットのオンライン販売事業 相乗りタクシー型ミニバスサービス こういう事業分析や業務知識の具体例が多いのがこの本の価値

Slide 13

Slide 13 text

区切ってつなぐ 13

Slide 14

Slide 14 text

区切ってつなぐ • この本の一貫したモデリングスタイル • 境界を探す ⇒ 境界の確立 ⇒ 境界の超え方の定義 事業活動の構成単位の境界 ⇒ 業務領域 モデルの境界 ⇒ 区切られた文脈 ロジック(不変条件)の境界 ⇒ 値オブジェクト ロジックの一貫性の境界 ⇒ 集約 サービス実装の境界 ⇒ マイクロサービス 分析系データ管理の境界 ⇒ データメッシュ 14

Slide 15

Slide 15 text

区切られた文脈(モデルの境界) 15 • 同じ言葉の通用する範囲 • 開発単位の境界 • チームの責任範囲の境界 複雑さを扱うために 文脈を区切る (第3章)

Slide 16

Slide 16 text

文脈の境界を超える(異なるモデル間の連係) 16 この地図からわかること ・顧客管理が中核の業務領域 ・それ以外は一般または補完 中核モデルの独自性を保護する

Slide 17

Slide 17 text

分散型アーキテクチャとドメインモデリング 17 マイクロサービスアーキテクチャ (第14章) イベント駆動型アーキテクチャ (第15章) データメッシュ (第16章) 区切られた文脈の考え方で取り組む

Slide 18

Slide 18 text

モデルの進化 18

Slide 19

Slide 19 text

モデルの進化が必要な状況 •事業活動の変化 •設計の基本方針の再検討 •業務ロジックの実装方法の見直し •組織の変更 •業務知識の習得 •システムの成長 19

Slide 20

Slide 20 text

業務領域のカテゴリーは変化する 20 事業が成長すれば、業務領域の カテゴリーは変化する (競争優位性の源泉が変わる) 業務領域のカテゴリーが変われば モデリングと設計の方針が変わる

Slide 21

Slide 21 text

業務領域のカテゴリーに合わせたモデリング 21 (第1章) (第5章) (第6章) (第7章) 中核の 業務領域

Slide 22

Slide 22 text

認識の合わせ方 22

Slide 23

Slide 23 text

「同じ言葉」を使う 23 業務知識が欠落するソフトウェア開発 業務知識が豊富なソフトウェア開発 同じ言葉 (業務の言葉) (第2章)

Slide 24

Slide 24 text

イベントストーミング 24 ①イベントを洗い出す ②時系列に並べる ③業務フローモデル 立場の異なる関係者の間で 認識を合わせるための モデリングワークショップ この後、リードモデル、ポリシー、 外部システムに注目してさらに精緻化

Slide 25

Slide 25 text

この本のドメインモデリング 4つの特徴 ①競争優位性に焦点を合わせる ②区切ってつなぐ(境界を探す、境界を超える) ③モデルの進化 ④認識合わせ(同じ言葉、イベントストーミング) 25