Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
Search
imkaoru
October 07, 2025
Programming
5
1.4k
Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地
imkaoru
October 07, 2025
Tweet
Share
More Decks by imkaoru
See All by imkaoru
Goで作成したコンテナ形式のLambdaに New Relicを導入する際の備忘録
imkaoru
0
19
Other Decks in Programming
See All in Programming
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
130
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
380
20 years of Symfony, what's next?
fabpot
2
350
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
130
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
800
TestingOsaka6_Ozono
o3
0
140
Integrating WordPress and Symfony
alexandresalome
0
150
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
130
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
310
Microservices rules: What good looks like
cer
PRO
0
1.3k
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.8k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.1k
Docker and Python
trallard
47
3.7k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Embracing the Ebb and Flow
colly
88
4.9k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
720
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Code Review Best Practice
trishagee
74
19k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
Building Applications with DynamoDB
mza
96
6.8k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
How to Ace a Technical Interview
jacobian
280
24k
Transcript
© dip Corporation. Goで実践するドメイン駆動開発 AIと歩み始めた新規プロダクト開発の現在地 バックエンドGo開発の裏側 直面する課題と今後の展望とは? 日付:2025/10/07(火) 12:00 〜
13:00 佐藤 薫 (Kaoru Sato)
© dip Corporation. このLTで伝えたいこと 2 • AIにより素早い仮説検証が可能となった今だからこそ、ドメ インを基にした “本質的な設計 ”の重要性が高まっている
• そして、その思想を自然に表現できる言語として Go × DDD の相性の良さ
© dip Corporation. このLTで伝えたいこと 3 現在進行形の試行錯誤を共有します!!
© dip Corporation.. Agenda 1. ⾃⼰紹介 2. 会社概要 3. 前提:所属チーム‧⽬的‧開発体制
4. ドメイン駆動設計について 5. GoとDDDの相性 6. ドメインモデルの実装 7. 開発課題と取り組み事例
© dip Corporation. 佐藤 薫 2023年4⽉ 新卒⼊社 プロダクト開発統括部 / バイトルエンジニアリング部
Go歴:⼊社とともに DDD歴:5⽉〜 福岡歴:⼤学から。就職を機に⼀度東京へ⾏き、昨年9⽉に戻る 最近楽しかったこと:スクラム祭り!!
VISION Labor force solution company ⼈材サービスとDXサービスの提供を通して、 労働市場における諸課題を解決し、 誰もが働く喜びと幸せを感じられる社会の実現を⽬指します。 Copyright ©
dip Corporation, All rights reserved.
× Human work force solution ユーザーファーストな独⾃機能を搭載した、 求⼈情報‧⼈材紹介サービスの提供を通じて、 ユーザーの就業課題を解決しています。 ⼈材サービス事業 Digital
labor force solution バイトコミュニケーションアプリ『バイトル トーク』や、機能を絞ったシンプルなSaaS型の 『コボット』を通じて、職場環境やコミュニ ケーション課題を解決しています。 DX事業
© dip Corporation.. 前提:所属チーム‧⽬的‧開発体制
© dip Corporation. 前提:所属チーム・役割・開発体制 9 • 所属チーム :新規プロダクトのAPIプラットフォームチーム • チームの役割
:変更容易性の高いAPIを作成し、素早い仮説検証 サイクルを回せるものづくり体制を実現すること
© dip Corporation. 前提:所属チーム・役割・開発体制 10 開発体制 ◦ 関係チームとしては、複数のフロントチーム ◦ スクラム:PO,
SM, 開発者(TL含め4人) ◦ モノレポ
© dip Corporation. 前提:所属チーム・役割・開発体制 11 Goを採用した理由 ◦ 弊社では「標準化」「省力化」「最新化」という3つの基本方針に基 づいて、バックエンドではGoを推奨言語としている ◦
純粋なパフォーマンスと安定性が求められるバックエンドAPIなど で採用実績がある
© dip Corporation.. ドメイン駆動設計について
© dip Corporation. ドメイン駆動設計について 13 ドメインとは、事業領域のこと
© dip Corporation. ドメイン駆動設計について 14 ドメイン駆動設計 (DDD) ◦ 意図の伝達を円滑にし、事業戦略とソフトウェアの実装を結びつける設計手 法
◦ アジャイルとの相性もよく、市場や戦略の変化に柔軟に適応していけるパ ワーを秘めている
© dip Corporation. ドメイン駆動設計について 15 重要な概念 • 戦略的設計と戦術的設計 ◦ Why・WhatとHowの関係性
• 業務領域(サブドメイン ) ◦ 事業目標を達成するために、事業活動を分析することを目的にドメイン を細分化したもの ◦ 建設的に手を抜いて、中核領域に集中できるように業務領域を分類す る • 境界付けられたコンテキスト (BC) ◦ ソフトウェア設計の視点から事業活動モデルを扱いやすい単位にするた めに、ドメインを分解したもの
© dip Corporation. ドメイン駆動設計について 16 ドメインモデルとは ◦ 中核の業務領域を対象に、複雑な業務ロジックを扱うための設計手法 業務ロジックとは ◦
業務領域におけるルールや前提条件、制約 ◦ 値オブジェクト、集約、業務サービスで扱うドメインに関するロジックの総称
© dip Corporation.. Go と DDD の相性
© dip Corporation. Go と DDD の相性 18 Goの事例があまりないのはなぜか?
© dip Corporation. Go と DDD の相性 19 • シンプルで明示的な言語仕様
◦ 暗黙的な魔法が少なく、意図をコードにそのまま表現できる • 後方互換性の高 さと豊富な標準ライブラリ ◦ ドメインロジックの継続的な改善に集中できる ◦ ドメインモデルのような単純なオブジェクト中心の設計と本質的に相性が良い • 設計の自由度と制御性 ◦ フレームワークに縛られず、アーキテクチャを自分たちのドメインに合わせて構築でき る
© dip Corporation. 20 Go と DDD の相性 依存関係逆転の原則 ◦
Goのinterfaceは、ポートとアダプターの分離を自然に表現できる 実装ではなく抽象に依存する構造(依存の整合性)を型システム自体で保証できる
© dip Corporation.. ドメインモデルの実装
© dip Corporation. ドメインモデルの実装 22 実装例のテーマ • 「AIを使用し、ユーザーの悩み解決におすすめの書籍をピックアップする」機能を 提供するケースを例に、複数BC連携が必要な場合の実装を想定 •
「Recommendation (レコメンド) 」を中核の業務領域とし、そのために別BCである 「お気に入りリスト」「ユーザープロファイル」の情報を扱う
© dip Corporation. ドメインモデルの実装 23
© dip Corporation. 実行結果例 24
© dip Corporation. ディレクトリ構成 25
© dip Corporation. 処理の流れ 26
© dip Corporation. 値オブジェクト 27
© dip Corporation. 集約 28
© dip Corporation. 集約 29
© dip Corporation. 補足 30 • 粒度が大きいとパフォーマンス悪化につながる • 粒度が小さいと結果整合の制御が増え、設計コストが高くなる •
物理的な境界はBC(1BCに対しスキーマ群)・1集約1リポジトリ(永続化の単位 は集約) • BCに対してマイクロサービスを適用 ◦ モノレポでBCごとにモジュール化
© dip Corporation. 業務サービス 31
© dip Corporation. ドメインモデルの実装 32 実践ポイント ◦ フィールド非公開と、慣習的なファクトリメソッドを使用する ◦ スライスやマップを扱う場合は外部へ渡す前に必ずコピーするなど不変性を意識
する ◦ アプリケーションサービスは薄くし、業務ロジックはドメイン層で
© dip Corporation.. 開発課題と取り組み事例
© dip Corporation. 開発課題と取り組み事例 34 ドメイン駆動設計の難しさは ....?
© dip Corporation. 先日のスクラム祭りにて 35
© dip Corporation. 開発課題と取り組み事例 36 ドメイン駆動設計 ◦ プロジェクトの価値や目的を自分の言葉で再定義し、所属チームレベルに ブレイクダウンした ◦
企画職の方と日次15分間、理解を深める枠を設けた ◦ 「ドメイン駆動設計をはじめよう」をチーム全員で読むことにし、用語自体の 勉強会を実施 ◦ AWSワークショップ & 社内でのイベントストーミング実施
© dip Corporation. 開発課題と取り組み事例 37 AI活用 ◦ Claude Code での開発
◦ 速さを落とさず、基盤的内容変更の共通認識を最短ループで回すことを目的と して以下を構想中 ▪ CLAUDE.md に人もAIも認識しておきたい内容を記載 ▪ Claude Code Actions を使用し、PR作成時に「CLAUDE.mdのルール準 拠チェック」「追記要否判定」を
© dip Corporation.. まとめ
© dip Corporation. まとめ 39 • AIにより素早い仮説検証が可能となった今だからこそ、ドメインを基にした “本 質的な設計 ”の重要性が高まっている
• そして、その思想を自然に表現できる言語として Go × DDD の相性の良さ
© dip Corporation. まとめ 40 • AIにより素早い仮説検証が可能となった今だからこそ、ドメインを基にした “本 質的な設計 ”の重要性が高まっている
▶ 「共通言語となるモデル」「変更容易性の高いシステム」 • そして、その思想を自然に表現できる言語として Go × DDD の相性の良さ
© dip Corporation. まとめ 41 • AIにより素早い仮説検証が可能となった今だからこそ、ドメインを基にした “本 質的な設計 ”の重要性が高まっている
▶ 「共通言語となるモデル」「変更容易性の高いシステム」 • そして、その思想を自然に表現できる言語として Go × DDD の相性の良さ ▶ 「後方互換性の高い言語仕様」「設計の自由度」
「挑戦し、変化し、リードする仲間」を募集中! 📎採用情報 📎インタビュー記事 📎テックブログ
© dip Corporation.. ご清聴ありがとうございました