Slide 1

Slide 1 text

意外と難しいドメイン駆動設計の話 After JJUG CCC 2025 Fall 株式会社ZOZO
 ブランドソリューション開発本部 ZOZOMO部 OMOブロック
 ブロック長
 木目沢 康廣 Copyright © ZOZO, Inc. 1

Slide 2

Slide 2 text

© ZOZO, Inc. 株式会社ZOZO ブランドソリューション開発本部 ZOZOMO部 OMOブロック ブロック長 木目沢 康廣 
 
 Qiita: @YasuhiroKimesawa
 X(旧Twitter): pilgrim_reds
 Blog: https://pilgrim-lifestyle.jp/ 2

Slide 3

Slide 3 text

© ZOZO, Inc. https://zozo.jp/ 3 ● ファッションEC ● 1,600以上のショップ、9,000以上のブランドの取り扱い ● 常時107万点以上の商品アイテム数と毎日平均2,700点以上の新着 商品を掲載(2025年9月末時点) ● ブランド古着のファッションゾーン「ZOZOUSED」や コスメ専門モール「ZOZOCOSME」、シューズ専門ゾーン 「ZOZOSHOES」、ラグジュアリー&デザイナーズゾーン 「ZOZOVILLA」を展開 ● 即日配送サービス ● ギフトラッピングサービス ● ツケ払い など

Slide 4

Slide 4 text

© ZOZO, Inc. 【ご注意】 当資料の設計・実装例は ZOZOTOWNの仕様ではなく、 あくまでドメイン駆動設計の例を 示すために私が考えたもので す。 4

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

© ZOZO, Inc. 設計の話ですが、 設計には正解がないと 思っているので、 今回の話はご参考まで 6

Slide 7

Slide 7 text

© ZOZO, Inc. 7 ※LTV=顧客生涯価値 企業との取引開始から終了までに 企業にもたらす純利益 ※ZOZOTOWNの仕様ではありません

Slide 8

Slide 8 text

© ZOZO, Inc. 8

Slide 9

Slide 9 text

© ZOZO, Inc. 9

Slide 10

Slide 10 text

© ZOZO, Inc. 10 ※LTV=顧客生涯価値 企業との取引開始から終了までに 企業にもたらす純利益 ※ZOZOTOWNの仕様ではありません

Slide 11

Slide 11 text

© ZOZO, Inc. どう設計(Application層・Domain層・Repository層)しますか? ※今回は簡略化のためトランザクション内で複数集約を更新しています。 11

Slide 12

Slide 12 text

© ZOZO, Inc. 実装 パターン ① 12

Slide 13

Slide 13 text

© ZOZO, Inc. 実装パターン① ※今回は簡略化のためトランザクション内で複数集約を更新しています。 13

Slide 14

Slide 14 text

© ZOZO, Inc. 14 実装パターン①

Slide 15

Slide 15 text

© ZOZO, Inc. ※ 本質的な箇所を強調&紙面の都合上、ValueObjectでないなど、ツッコミどころが多いコードになっています。ご 了承ください。 15 実装パターン①

Slide 16

Slide 16 text

© ZOZO, Inc. 実装 パターン ② 16

Slide 17

Slide 17 text

© ZOZO, Inc. ※今回は簡略化のためトランザクション内で複数集約を更新しています。 17 実装パターン②

Slide 18

Slide 18 text

© ZOZO, Inc. 実装パターン② 18

Slide 19

Slide 19 text

© ZOZO, Inc. 実装パターン② ※ 本質的な箇所を強調&紙面の都合上、ValueObjectでないなど、ツッコミどころが多いコードになっています。ご 了承ください。 19

Slide 20

Slide 20 text

© ZOZO, Inc. ドメイン駆動設計で設 計するように指示した 生成AIが実装したの はパターン②でした 20

Slide 21

Slide 21 text

© ZOZO, Inc. ドメインロジック もあって良さそう に見える 21

Slide 22

Slide 22 text

© ZOZO, Inc. “中核の業務領域は頻繁に変更さ れます。 1回の開発で簡単に解決 できる課題なら、おそらく競争優位 の源泉にはなりません。そういう解 決策では、競合他社がすぐに追い つくでしょう。” 22 ドメイン駆動設計をはじめよう(Vlad Khononov著 増田亨 訳) 1章より

Slide 23

Slide 23 text

© ZOZO, Inc. ※ZOZOTOWNの仕様ではありません 23

Slide 24

Slide 24 text

© ZOZO, Inc. 実装 パターン ① 24

Slide 25

Slide 25 text

© ZOZO, Inc. 実装パターン① 25

Slide 26

Slide 26 text

© ZOZO, Inc. 実装パターン① - ビジネス上重要な変更にも関 わらずリポジトリ層の修正のみ でモデルが更新されない - SQLも2箇所修正が必要で修 正漏れのリスクがある 26

Slide 27

Slide 27 text

© ZOZO, Inc. 実装 パターン ② 27

Slide 28

Slide 28 text

© ZOZO, Inc. 実装パターン② 28

Slide 29

Slide 29 text

© ZOZO, Inc. 実装パターン② 29 ※ 本質的な箇所を強調&紙面の都合上、ValueObjectでないなど、ツッコミどころが多いコードになっています。ご 了承ください。

Slide 30

Slide 30 text

© ZOZO, Inc. 実装パターン② - リポジトリとモデル の両方の修正が必 要になる 30

Slide 31

Slide 31 text

© ZOZO, Inc. 実装 パターン ③(提案) 31

Slide 32

Slide 32 text

© ZOZO, Inc. 実装パターン③ ※今回は簡略化のためトランザクション内で複数集約を更新しています。 32

Slide 33

Slide 33 text

© ZOZO, Inc. 実装パターン③ ※ 本質的な箇所を強調&紙面の都合上、ValueObjectでないなど、ツッコミどころが多いコードになっています。ご 了承ください。 33

Slide 34

Slide 34 text

© ZOZO, Inc. 実装パターン③ - 3回になった場合も修正がモデ ルの1箇所に - DBアクセスも減りレイテンシの 向上も見込める 34

Slide 35

Slide 35 text

© ZOZO, Inc. ドメインの 発見 35

Slide 36

Slide 36 text

© ZOZO, Inc. ドメイン駆動設計で設 計するように指示した 生成AIが実装したのも パターン②でした 36

Slide 37

Slide 37 text

© ZOZO, Inc. ドメイン駆動設計をはじめよう(Vlad Khononov著 増田亨 訳) 1章より だからこそ差別化 できる 37 (今のところ)生成 AIだけでは複雑なドメインの発見は難しい

Slide 38

Slide 38 text

© ZOZO, Inc. - WHERE句・LIMIT句に注目 - 不自然なDBアクセス - 戦略的な変更があってもドメイン モデルが変わらない 連続発送回数 を発見するには 38

Slide 39

Slide 39 text

© ZOZO, Inc. ブレイク スルー 39

Slide 40

Slide 40 text

© ZOZO, Inc. “ある週になって突然、何が悪かったのか 理解できた 。我々のモデルは、このビジネ スにはふさわしくない方法で、ファシリティの 分担率とローンの分担率を結びつけていた のである。この驚くべき新事実は、広範囲 に影響を与えた 。” ブレイクスルー エリック・エヴァンスのドメイン駆動設計(Eric Evans著 和智右桂 他訳) より 40

Slide 41

Slide 41 text

© ZOZO, Inc. 生成AIでソースコードを書くようになった時 代にサービスのアウトカム・インパクトに直 結する領域のドメインをどう捉えるか? そのヒントになっていただけたら幸いです。 まとめ:中核のドメイン 41

Slide 42

Slide 42 text

© ZOZO, Inc. 時間があればさらに・・・ 42

Slide 43

Slide 43 text

© ZOZO, Inc. 時間があれば・・・ 43

Slide 44

Slide 44 text

© ZOZO, Inc. 実装パターン③ならこの大きな変更もモデルの変更だけで済む ※ 本質的な箇所を強調&紙面の都合上、ツッコミどころ満載のコードになっています。ご了承ください。 44

Slide 45

Slide 45 text

© ZOZO, Inc. 設計の話ですが、 設計には正解がないと 思っているので、 今回の話はご参考まで 45

Slide 46

Slide 46 text

46