Slide 1

Slide 1 text

© DMM © DMM AI時代のドメイン駆動設計 DDD実践における AI活用のあり方 2025/08/19(火) 合同会社DMM.com ミノ駆動

Slide 2

Slide 2 text

© DMM 自己紹介 ミノ駆動 ( @MinoDriven ) 合同会社DMM.com プラットフォーム開発本部 第3開発部 DeveloperProductivityGroup DMMプラットフォームの設計を改善し 開発生産性向上を図るのがミッション 2

Slide 3

Slide 3 text

© DMM 著書紹介 『改訂新版 良いコード/悪いコードで学ぶ設計入門』 変更容易性の高い設計を学ぶ、 初級〜中級向け入門書 初版は12刷重版 ITエンジニア本大賞2023技術書部門大賞受賞 台湾版、韓国語版でも翻訳出版 3

Slide 4

Slide 4 text

© DMM 本LTではDDDとAIとの関係について解説します まず「DDDとはなんぞや」を目線合わせした上で AIとの関わりを解説します

Slide 5

Slide 5 text

© DMM おしながき ● ドメイン駆動設計は何のため? ● 戦略的DDD とは ● 戦術的DDD とは ● 戦略的DDDとAI ● 戦術的DDDとAI 5

Slide 6

Slide 6 text

© DMM ドメイン駆動設計は何のため?

Slide 7

Slide 7 text

© DMM 技術は何らかの問題を解決するためにあります

Slide 8

Slide 8 text

© DMM たとえば Webフレームワークは Webサービスの開発効率化のためにあります

Slide 9

Slide 9 text

© DMM Dockerは 環境依存を解消し どこでも一貫した実行環境を提供するためにあります

Slide 10

Slide 10 text

© DMM では ドメイン駆動設計は何のためにある?

Slide 11

Slide 11 text

© DMM ドメイン駆動設計は 事業の持続的成長のための 設計戦略&戦術の考え方です

Slide 12

Slide 12 text

© DMM 戦略的DDD とは

Slide 13

Slide 13 text

© DMM どれを開発すべきですか? チームの予算もエンジニアも限られています。 この状況下で顧客がより多くのお金を落としてくれるような機能を 開発する必要があります。 以下のうち、どれを開発すべきですか? ● コモディティ化した機能 ● オプション機能 ● 他社が真似できない魅力的な機能 ● わからないからとにかく当てずっぽうで機能開発 13

Slide 14

Slide 14 text

© DMM コアドメイン(DDDの最重要概念) ● ドメイン : ソフトウェアが解決する業務領域 ● コアドメイン : 差別化が図られ、競争優位性を発揮する領域 ● サブドメイン : 必要ではあるがコアではない領域 ● 選択と集中:コアに対して集中的に(設計も含む)開発コストを投じよ、 というのがDDDの教え ● 逆にコアではない部分にまでコストかけて 重厚に設計する必要はないヨ、とも述べている 14 サブドメイン1 サブドメイン2 コアドメイン

Slide 15

Slide 15 text

© DMM コアドメインの例 みんなも考えてみよう 「ここがウリだ!」「他が真似できない!」と言えるものです 15 商品/サービス コアドメインと思わしきもの ハッピーターン ハッピーパウダー スターバックス スターバックス体験 (内装の雰囲気など) SmartHR 快適な労務管理 スプラトゥーン インクならではの多彩な戦術 Claude Code CLIならではの高い応用性

Slide 16

Slide 16 text

© DMM 16 『AI時代の『ドメイン駆動設計をはじめよう』』より引用 https://speakerdeck.com/masuda220/forkwell_library_fl_100?slide=15

Slide 17

Slide 17 text

© DMM 隔離されたコア コア用のロジックとサブ用のロジック が複雑に絡み合っていると、コアの 機能を改善しようにも変更が難しく なってしまう。 従ってコアとサブでシステムを 分離隔離する。 コアにサブの要素が入り込まないよ う徹底的に純化し、コアに特化したシ ステムにする。 17 コアドメイン サブドメインA サブドメインB コアシステム サブシステム A サブシステム B

Slide 18

Slide 18 text

© DMM 開発リソース(人、金、時間)は有限ですから 戦略(費用対効果、選択と集中)を考えて 設計方針を策定しましょう、 とするのが戦略的DDDです まずこの土台がなければDDDは始まりません

Slide 19

Slide 19 text

© DMM 戦術的DDD とは

Slide 20

Slide 20 text

© DMM 戦術的DDD 競争優位性を発揮するコアドメインは、 常に競合他社との競争にさらされます。 そのため、より優位にするための仕組みは複雑になります。 当然内部のコードもどんどん複雑化します。 複雑なコードは変更が困難になり、開発生産性が低下してしまいます。 こうした問題を解決するのが戦術的DDDです。 ドメイン層を中心としたアーキテクチャ、ドメインモデルなどを設計し、 変更容易性の向上を図ります。 20

Slide 21

Slide 21 text

© DMM レイヤードアーキテクチャ 21 ドメイン ルール解決 ユースケース 解決 入出力変換 外界 ドメイン層 ユースケース層 コントローラ層 インフラ層 View データベース 下図はレイヤードアーキテクチャの一例(いろいろバリエーションあり)。 ドメイン関心事や技術関心事単位で関心を分離することで 変更容易性の向上を図る

Slide 22

Slide 22 text

© DMM ドメイン層 22 Repository interface Aggregate Entity ValueObject 以下、代表的な設計パターン(このパターンには限らない)を用いて ドメイン概念を整理することにより変更容易性が向上する

Slide 23

Slide 23 text

© DMM DDDとAIの関係

Slide 24

Slide 24 text

© DMM 戦略的DDDとAI ● AIがあってもなくても、 利益を得る上で競争優位を考え続けることは必須。 ● コアドメイン即ち競争優位の検討には、 競合他社の動向やビジネスモデル、社会情勢経済情勢など、 さまざまな変数の考慮が必要であり、不確実性がとても高い。 ● 生成AIは学習内容の平均に収斂する性質がある。 つまり、競争優位の検討をAIにマルナゲしても 凡庸な答えしか返ってこない可能性大。 ● 壁打ちやアイデア出しといった、一部サポートや併走に AIが使えるものと考える。 24

Slide 25

Slide 25 text

© DMM 戦術的DDDとAI ● 品質について何ら指示なくAIにコードを書かせると、 変更容易性に問題のあるコードを平気で書いてくる。 ● AIの高速な実装により、負債があっという間に蓄積する。 ● したがってAIにコードを書かせる場合、 設計品質をコントロールできるようにしなければならない。 いくつか例を紹介する。 25

Slide 26

Slide 26 text

© DMM 契約による設計に基づく高品質テストコード実装 26 # 役割 あなたは以下の専門家である - テストコード - 契約による設計(事前条件、事後条件、不変条件) # 目的 テストコード実装 # 制約 - メソッドの事前条件、事後条件、不変条件を検証するテストであること - Given-When-Thenパターンに基づいて実装すること # テスト対象 (ここにテスト対象のメソッドを指定する)

Slide 27

Slide 27 text

© DMM 負債分析プロンプト「バグサーチャー」 ミノ駆動が開発した、高精度で負債を分析するAI用プロンプト。 コードの意図を理解した判断が可能であり、その上で変更容易性に問題の あるコードを検出する。負債のスコアリング機能や、どうリファクタリングす ればいいか設計提案する機能も備えている。 27

Slide 28

Slide 28 text

© DMM 変更容易性の高いコードをAIに書かせる 前述のバグサーチャーには、変更容易性に関するノウハウを プロンプトとして実装している。 そのため、新規にコードを書かせるのにも応用可能。 実際、機能要件のテキストとバグサーチャーのプロンプトを渡して 「この要件を満たすコードを書いて」 とAIに指示すると、変更容易性の高いコードを書いてくれる。 DDDの考え方もプロンプトとして実装済みなので、 DDD流儀のコードを高速で書かせることができる。 28

Slide 29

Slide 29 text

© DMM 以上、DDDの考え方、要点を理解することで DDDにAIをどのように活用すべきかが見えてくる そしてそれは「DDDがAIに置き換わる」というものではなく、 プロダクトの持続的成長のために 「AIの力でDDDを推進しやすくする」 というのが今後の在り方だと考える

Slide 30

Slide 30 text

© DMM ご清聴ありがとうございました