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

イベントストーミングから始めるドメイン駆動設計

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

 イベントストーミングから始めるドメイン駆動設計

概念モデリングと生成AIで加速するシステム開発
2025.6.7 JJUG CCC 2025 Spring

Avatar for おだかとしゆき

おだかとしゆき

June 07, 2025

More Decks by おだかとしゆき

Other Decks in Programming

Transcript

  1. 自己紹介 おだかとしゆき 株式会社MonotaRO シニアアーキテクト as JGEEM(@EM4326168385309) 事業(J)会社(G)の元(Ex)EM / 53才 現職はアーキテクチャと格闘

    定年までできることしたいことを探る日々 定年後もキャリアは続く/ AIIT 科目等履修生 / 貢献てなんだろう see also scrapbox,speakerdeck 2
  2. 本日の資料 • 各種モデル: Miro • 生成AI: Gemini, DeepResearch, GoogleAIStudio •

    レポート: ◦ ファストリ戦略分析とマップ骨子, ◦ 有明プロジェクト業務プロセス詳細調査 ◦ 業務プロセス責務と関心事の整理 3
  3. 今日、お伝えしたいこと • 各モデルの 目的は何か? • それらのモデルを糸口に 事業をどう捉える か? 13 モデリングの本質的な価値:

    • 多角的な視点(具体/抽象、動的/静的)で ドメイン (事業領域) を捉え、理解を深め、 より良いソフトウェア設計に繋げる
  4. 今日、お伝えしたいこと • 各モデルの 目的は何か? • それらのモデルを糸口に 事業をどう捉える か? 14 モデリングの本質的な価値:

    • 多角的な視点(具体/抽象、動的/静的)で ドメイン (事業領域) を捉え、理解を深め、 より良いソフトウェア設計に繋げる
  5. • エンジニアの シニア・ジュニア間にも フラクタル構造が • 業務知識を獲得済みのチームに新規参戦したジュニアが 他のメンバと同じ視点を得るには オンボーディングが重要 ◦ 「ドキュメント読んどいて」では不十分

    (そもそもドキュメント揃ってます?) ▪ シニアエンジニアは忙しい • メンタリングコストを捻出しにくい ◦ じゃあ OJT で! ▪ 個人メモ止まり・曖昧な認識 • 永遠にドキュメント化されない ちなみに 25
  6. ちなみにちなみに • ジュニアを AI に置き換えても同じ 構造が • AI を超上流工程 でも使いたい

    ◦ 1shotじゃ 一般論しか 出てこない ▪ 当社の事業領域や業務ルールなど、 文脈知識をインプットしたい • ドキュメント化されていない ◦ AI もまだまだだな??? 26
  7. オンボーディングにおいて • 「OJTでキャッチアップするしかないっしょ」は甘え ◦ 新規参入者に(人にもAIにも) フレンドリーな体裁のインプットが不可欠 ◦ 文脈知識を得た AI は最強のメンターに?

    ご参考: AI-Agent開発における文脈知識の獲得とモデリングの活用 さらに補足: • モデリングと論理的推論(あるいはエンジニアリングを進歩させるナレッジとは) • 帰納法・演繹法・アブダクションについてモデリングと抽象化の観点から考えを深める 27
  8. 公開情報を収集/分析する (してもらう) • 生成AIに情報収集をお願いする( https://g.co/gemini/share/f965f6350d98 ) ◦ どんな資料を分析したらいい?進め方は? ▪ ファーストリテイリング社発行のIR資料(内容と確認ポイント)

    • 統合報告書 / アニュアルレポート • 決算説明会資料 / ファクトブック • 有価証券報告書 ▪ 第三者による分析レポート・記事(内容と確認ポイントと備考) • 証券会社のアナリストレポート • 業界レポート / 市場調査レポート • ビジネス系メディアの記事 / 書籍 ▪ 深い洞察を得るための進め方 ←これ重要 34
  9. 公開情報を収集/分析する (してもらう) • 得られた回答の分析をお願いします ( https://g.co/gemini/share/fa452c3d8e6d ) ▪ 収集フェーズで得たアウトプットを そのままDeepResearchへのリクエストに流用します

    ▪ レポート: ファストリ戦略分析とマップ骨子 • DeepReserchの仕事はまだ続きますが、一旦はここまで • しっかり読み込みましょう 35
  10. 概念モデリングによる事業活動の可視化 • ざっくりと流れを紹介 ◦ 活動システムマップ で事業活動全体を俯瞰し、 競争優位性の源泉となる要素を特定する ◦ 対象の要素について、 ビッグピクチャー

    を描いて大まかな流れをつかみ、 フォーカスすべき業務領域(区切られた文脈)を特定する ◦ 選定した業務領域を構成する業務間の係わりを コンテキストマップ で示し、最も重要な業務を特定する ◦ 業務を代表するユースケースのプロセスを プロセスモデル で示し、 そのプロセスを構成する要素を発見する ◦ 得られた要素を 構造化 し、新たな洞察を得る起点にする 37
  11. 【再掲】モデリングの流れ • 活動システムマップで事業活動全体を俯瞰し、 競争優位性の源泉となる要素を特定 する • 対象の要素について、ビッグピクチャーを描いて大まかな流れをつかみ、 フォーカスすべき業務領域(区切られた文脈)を特定 する •

    選定した業務領域を構成する業務間の係わりを コンテキストマップで示し、最も重要な業務を特定 する • 業務を代表するユースケースのプロセスをプロセスモデルで示し、 その プロセスを構成する要素を発見 する • 得られた 要素を構造化し、新たな洞察を得る起点にする 40
  12. 【再掲】モデリングの流れ • 活動システムマップで事業活動全体を俯瞰し、 競争優位性の源泉となる要素を特定 する • 対象の要素について、ビッグピクチャーを描いて大まかな流れをつかみ、 フォーカスすべき業務領域(区切られた文脈)を特定 する •

    選定した業務領域を構成する業務間の係わりを コンテキストマップで示し、最も重要な業務を特定 する • 業務を代表するユースケースのプロセスを プロセスモデル で示し、 その プロセスを構成する要素を発見 する • 得られた 要素を構造化し、新たな洞察を得る起点にする 41
  13. ビッグピクチャー • as イベントストーミング です • 有明プロジェクトとは何者かをざっくり把握します • 目的: ◦

    大まかな流れをつかみ、フォーカスすべき 業務領域(区切られた文脈)を特定する 46
  14. イベントストーミング • 時間の都合でイベストの詳細は割愛します 🙇 • さらに深く知りたい方のために ◦ 実践!モノリスからマイクロサービス!Event Stormingによる ドメイン駆動設計から実装まで

    | AWS Dev Day 2023 Tokyo [speakerdeck] [youtube] ◦ AWS Summit Japan 2024 での福井さんのセッションも 素晴らしかったが公式の動画も資料も見つけられなかった [セッションレポート] 49
  15. コンテキストマップ • 違和感のある記述を訂正しつつ、 各業務の 責務 と 必要な情報 を整理します ◦ さらにDeepReserchです(chatは前出の続き

    ▪ https://g.co/gemini/share/fa452c3d8e6d ◦ レポート: 業務プロセス責務と関心事の整理 ▪ こちらもしっかり読み込みましょう 55
  16. コンテキストマップ • ポイント: ◦ 「必要な量だけ、つくり・運び・販売する」という文脈において、 重要と目されるのは 需要予測 と 生産計画 だろう

    ◦ 販売データやトレンドだけに依らず、VoCなども取り入れて予測す るプロセスは、まさに 情報製造小売業の中核 に相応しいだろう ▪ ファストリ社は分かりやすい戦略により判断できた ▪ 分かりやすい判断根拠がない場合は、 他社事例と比較して「際立って特色のあるプロセス」を 見極めるのが良いでしょう 59
  17. プロセスモデリング • 今度は推論モデルに業務プロセスを分析してもらう ◦ GoogleAIStudio(トークン消費が激しそうなので ◦ prompt概要: ▪ 需要予測プロセスの詳細分析 ▪

    DeepReserchによるレポート3種を添付 ▪ OOPに精通した熟練エンジニアとしてイベスト手法で分析 ▪ 画像の代わりに<アクター><コマンド>のようにタグで表現 61
  18. プロセスモデリング • BPM レイヤ一覧(青字は言い換え、()内は粒度の個人的な感覚) ◦ FL0: 事業単位 ◦ FL1: 事業機能

    ◦ FL2: 詳細事業機能 ◦ FL3: 業務機能 業務領域(コンテキストマップ: 生産計画) ◦ FL4: 詳細業務機能 業務(プロセスモデル: 日次生産計画を調整した) ◦ FL5: 単位作業 作業(詳細プロセスモデル: SKUごと反復処理) ◦ FL6: 要素作業 手順(詳細プロセスモデル: 仮所要量を再計算する) ◦ FL7: 単位操作 操作(あれ?) ◦ FL8: 要素操作 63
  19. 【再掲】  今日、お伝えしたいこと • 各モデルの 目的は何か? • それらのモデルを糸口に 事業をどう捉える か? 79

    モデリングの本質的な価値: • 多角的な視点(具体/抽象、動的/静的)で ドメイン (事業領域) を捉え、理解を深め、 より良いソフトウェア設計に繋げる
  20. モデル別 目的まとめ 85 モデル 目的 抽象度 動的 / 静的 戦略マップ

    競争優位性を特定する 事業 静的 (構造) ビッグピクチャー 重要業務領域を特定する 事業 動的 (流れ) コンテキストマップ 最重要業務を特定する 業務領域 静的 (構造) プロセスモデル プロセスを分析し、 構成要素を発見する 業務~  操作 動的 (流れ) 概念構成図 新たな洞察を得る 操作 静的 (構造)
  21. 【再掲】 なぜモデリングなんて面倒なことを!? • 競争優位性を獲得したい!!! ◦ 競争優位性を獲得・維持するためには、 重要なプロセスを繰り返し改善する 必要がある ◦ 対象のプロセスを構造的に捉え、高い保守性を得ることは

    迅速性(→適時性)を高め・コスト効率を高める ◦ 業務フローやイベントストーミングのような動的なモデルを 構造化し、静的なモデルを得て、深い洞察に至ることは 設計プロセスそのもの 86