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

DDD×仕様駆動で回す高品質開発のプロセス設計

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

 DDD×仕様駆動で回す高品質開発のプロセス設計

AI駆動開発で品質を上げるために、
・4つの図で整理する「sudoモデリング」
・draw.io × AIでモデルを壁打ち・可視化
・受入基準をAIで磨き込み、手戻りを減らす
DDDと仕様駆動を一本のプロセスとして繋げる方法について話しました。

Avatar for Koichiro Matsuoka

Koichiro Matsuoka

March 22, 2026
Tweet

More Decks by Koichiro Matsuoka

Other Decks in Technology

Transcript

  1. 今日のゴール DDD × 仕様駆動で、AI駆動開発の品質を上げるプロセスを持ち帰ってもら う 持ち帰ってもらえると良いこと: sudo モデリング ── 4つの図のフレームワーク

    draw.io × AI ── 図を使ったAIとの協働 仕様駆動との接続 ── AIに「何を作るか」を正確に伝えるプロセス その他の品質向上のためのプラクティス 3
  2. アジェンダ 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 4
  3. アジェンダ 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 9
  4. アジェンダ 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 18
  5. sudo モデリングとは sudoモデリング は、ハードルが低く効果が出しやすいモデリング手法 図 やること S: システム関連図 システムに関わるアクターと外部システムを明示する U:

    ユースケース図 ユーザーがシステムでどのような操作を行うか明示する D: ドメインモデル図 概念と概念の関係を抽象的に描く O: オブジェクト図 具体的なデータ例で理解を深め、モデルを検証する このラインナップは「どんな時にもやると良い最低限の4つ」 他にも以下のものは併用するとよい 業務フロー図 状態遷移図 シーケンス図 24
  6. ドメインモデル図のモデリングのコツ オブジェクト図から抽象化し、ルール・制約を書き出す オブジェクト図(具体例)から、ドメインモデルに抽象化していく ルール/制約(ドメイン知識) を吹き出しに書き出す モデリング中に疑問が出たものをその場で議論してメモしていく 検討メモ も積極的に記述する 生じた疑問の結論や疑問点もOK。発見を誘発し、関係者の認識を残す 多重度

    を定義する 「採用選考から採用ポジションの紐付けは必須か?」など、ルール/制約として重要な意思 決定 実装前に主にエンジニアで決めること: 集約の範囲: リポジトリの範囲を決める 日本語名の対訳としての英語名: ユビキタス言語のマスタ。表記揺れを防ぐ 32
  7. フェーズ①:モデリング 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 33
  8. draw.io × AI を実現するSkill AIがdraw.ioファイルを直接操作できるSkillを作成 claude-drawio-skill: https://github.com/little-hands/claude-drawio-skill 「この処理をシーケンス図で整理して」などと指示するだけで .drawio ファイルが完成

    Claude CodeのSkillとして動作し、プロジェクトに導入するだけで使える と思ったら直前に公式のskillがあるという情報が入ってきました https://github.com/jgraph/drawio-mcp/tree/main/skill-cli モデリングで活用できるが、仕様設計・技術設計など幅広く活用できるので紹介します 34
  9. アジェンダ 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 38
  10. 受入基準のアプローチ(3/4) 具体例で仕様を書くと、人もAIも迷わない Specification by Example(SBE): 抽象的な記述ではなく、具体的な実例で仕様を定義する手法 抽象的な受入基準: 「ユーザーは検索結果を並べ替えることができる」 → 人によって解釈が違うことや、コーナーケースが見えないことがある

    実例を用いた受入基準(Given/When/Then) : Given: 商品A(1000円) 、商品B(500円)が存在する When: 「価格: 安い順」で並べ替え Then: 商品B → 商品Aの順で表示される 具体例を書こうとすると、自然にコーナーケースが洗い出される AIにとっても:具体例 = 入出力が明確 → 意図通りの実装になる sudo モデリングのオブジェクト図がまさにこの「具体例」 。モデリングの成果がそのまま活 用できる 42
  11. アジェンダ 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 44
  12. DDDの保守性アプローチ × AIガードレール ドメインモデルをコードで表現するルールを、AIに守らせる セクション2で紹介した「モデル=コード」のアプローチを実践する CLAUDE.md / .claude/rules/ にドメインモデルの構造をそのままコードで表現するルールを 定義

    エンティティ・値オブジェクト・リポジトリ等のパターンを明文化 設計原則・アーキテクチャ制約・コーディング規約も事前定義 AIはルールがあれば従ってくれる。毎回同じことを言わなくていい状態を作るのがゴール 「モデルを守ったコード」が自動的に生成される状態を作る 47
  13. テスト分析設計フェーズ テストを明示的に検討させ、情報をきちんと渡す テストを明示的に検討させる: 実装計画と同じタイミングでテスト設計も依頼 ClaudeCodeの /plan は実装の計画はするが、 テストをあまり詳細に考慮しない(現時点では) 実装前にテストを考えることで、仕様の抜け漏れ・矛盾に気づける テスト設計・レビューSkill:

    テスト観点をSkillとして言語化 受入基準・技術設計と同じように、Skillにすることで毎回確実に同じ観点でレビューでき る このSkillのレビュー観点をチームで育てることで、QAの観点・過去の不具合パターンが蓄 積されていく 49
  14. アジェンダ 1. 全体像:DDD × 仕様駆動 × 開発フロー 2. DDDのアプローチ 3.

    フェーズ①:モデリング DDDにおけるモデリング モデリングで活用できるAI 4. フェーズ②:受入基準 5. フェーズ③④⑤:技術設計・テスト・実装 6. まとめ 53
  15. Q&A / もっと知りたい方へ ご質問があればお気軽にどうぞ! X(匿名質問OK) https://x.com/little_hand_s 過去の勉強会動画: sudo モデリングの4つの図をじっくり解説 https://www.youtube.com/watch?v=HgtCKlOzRiQ&list=PLXMIJq1G-

    _66F9woQpidJfe4HHCFxdXaA&index=1 書籍: 「## ドメイン駆動設計 モデリング/実装ガイド」 https://little-hands.booth.pm/items/1835632 書籍: 「ドメイン駆動設計 サンプルコード&FAQ」 https://little-hands.booth.pm/items/3363104 一緒にモデリングする勉強会: 現場のテーマでモデリングを実践する勉強会 https://little-hand-s.notion.site/DDD-22429f7110574439a4c3e126c20fa9a2?pvs=74 56