Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AI時代 DDDやってて良かったこと
Search
Suzu Ito
August 19, 2026
730
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AI時代 DDDやってて良かったこと
Suzu Ito
August 19, 2026
More Decks by Suzu Ito
See All by Suzu Ito
lt_ai.pdf
suzuito
0
550
monorepo.pdf
suzuito
1
520
GoのASTを用いて フィルター機能を作ろうとした話
suzuito
1
190
Python on Google Cloud Functions で作るバッチ処理
suzuito
0
3.8k
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
9
930
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
So, you think you're a good person
axbom
PRO
2
2.1k
Test your architecture with Archunit
thirion
1
2.3k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Designing Powerful Visuals for Engaging Learning
tmiket
1
500
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
800
Transcript
AI時代 DDDやってて良かったこと taito / 株式会社カウシェ
⾃⼰紹介 バックエンドエンジニア(テックリード) 最近の趣味は「息⼦と電⾞に乗る」 好きな⾔語はGo
サービス概要 カウシェ SNSのように 毎⽇開きたくなるECアプリ ダウンロード 累 計 700万 突 破
※2026年7⽉時点 GMV DAU 35 倍 81 倍 ※FY23.8⽉→FY26.5⽉⽐較 ※FY23.8⽉→FY26.5⽉⽐較 売上総利益 売上総利益/⼈ 411 倍 1.6 億 ※FY23.8⽉→FY26.5⽉⽐較 ※FY26.5⽉速報値を年換算
お品書き • • カウシェで実践しているDDD AI時代、DDDをやってて良かったこと
カウシェで実践しているDDD
実はDDDやってます カウシェファームチームのバックエンド開発 ファーム開発初期から続いている 機能追加開発において、主に、1つの機能を作る時に実践してる (カウシェファームというドメイン境界の中だけ) カウシェファームでは頻繁に機能追加、変更が発⽣し、かつ複雑なため DDDの恩恵を受けている
DDDをどのように実践しているか 開発の流れ • • • • • • • •
• • PRD(1つの機能、施策)が共有される(開発スタート!) 簡易版イベントストーミング ドメインモデル構築 ドメインモデル実装(Goのソースコード) Design Docの作成 実装計画の作成(AIにコードを書かせるための⼿順書) AIがコードを書く AIがレビューする QA リリース
簡易版イベントストーミング イベントを並べるだけ それ以外(コマンド、ポリシー、etc…) は省略してます 1~2時間で完了 開発スピードとのトレードオフ
ドメインモデル構築
ドメインモデル実装 モデルを表現する構造体 モデルの振る舞いを表現する関数 ルール レポジトリインターフェース もドメイン層 ドメインモデル実装は ⼈間が⼿厚くレビュー // ユーザーのレベルと経験値
type UserLevel struct { UserID string // ユーザーID Level Level // レベル Exp Exp // 経験値 } // 経験値を獲得、場合によってはレベルアップ、経験値獲得の履歴を返す func(s *UserLevel) GainExp(exp Exp, rule LevelUpRule) History // レベルアップのルール type LevelUpRule struct { Steps []LevelUpStep } type LevelUpStep struct { Level Level // レベル RequiredTotal Exp // 必要累計経験値 } // 永続化を担うレポジトリー type Repository interface { GetUserLevel(uid string) (UserLevel, error) PutUserLevel(uid string, lv UserLevel) error PutHistory(hist History) error }
上位レイヤーではCQRS(‧‧‧を⽬指してる) domain/ farmlevel/*.go plants/*.go … CommandとQueryを完全に分離 (‧‧‧を⽬指しています) command/*.go なぜこうする? readmodel/
farmlevel/*.go plants/*.go … query/*.go ドメインモデルはCommand側 (Queryから参照されない) データ読み取り(Query)要件によって ドメインモデルの実装が汚染されることを防⽌したい 読み(⾼トラフィック、低レイテンシー) 書き(⼀貫性、ソースコードのシンプルさ) それぞれで最適化したい 上位レイヤーはドメインモデルを⽤いたトランザクションスクリプト レポジトリへのデータ読み書き、トランザクション管理 ハンドラーへのデータ返却
AIがコードを書く時代 DDDをやるメリットが何か? 難しい問‧‧‧
弊チームで 「AI時代にDDDやっててよかったこと」 は存在する
(弊チームで)AI時代にDDDやっててよかったこと AIが書いたソースコードに対するコスパ良い認知負荷軽減になる ⼈間が詳しく把握しているのは「ドメインモデル実装」 それだけで ドメインモデル以外の箇所がどのように書かれているのか? なんとなく想像できる 必要最低限を把握するだけで、全体が把握できる
(弊チームで)AI時代にDDDやっててよかったこと 抜け漏れ防⽌になる 「後から気づいた」がなくなる 複数⼈でイベントストーミングしてるので誰かが気づく ドメインモデル実装のコードレビューしてる効果 ⼈間同⼠の認識の共有はAI時代でも必要
(弊チームで)AI時代にDDDやっててよかったこと DDDによる設計はAIのガードレールとなる ロジックをドメインモデル実装へ寄せることができていると 結果として 上位レイヤーをシンプルなトランザクションスクリプトで記述できる 誰が書いても同じようなソースコード 上位レイヤーで AIが暴⾛する余地を排除できている
(まとめ)AIがコードを書く時代、なぜDDDをやるか? 弊チームではDDDをやった結果として 「⼈間に対する認知負荷の軽減」 「⼈間に対する抜け漏れの防⽌」 「AIに対するガードレール」 という効果はありそう AIと⼈の間で「共通認識を作る」ための開発⼿法の1つにはなる(はず)
ご清聴ありがとうございました! エンジニアMeetUpイベント。9⽉も開催予定! https://app.notion.com/p/kauche/KAUCHE-MeetUp-party-2026-8-3a7dd1d8ae6 c802d8eeee1296fa67fad 参加者を募集しています! もしご興味があれば!
(Appendix) Command/Queryにおける共通処理 (⼯夫1) ビジネスルールをCSV、YAMLとして記述する。これがSSoT。 CSV、YAMLを⼊⼒としてCommand/Query両⽅の構造体やメソッドを⾃動⽣成 (⼯夫2) 共通処理をsharedというパッケージ配下に書く