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
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
Search
増田 亨
PRO
August 05, 2026
Technology
520
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
①ソフトウェア開発の基本課題
②AI技術をソフトウェア開発に活用するアプローチ
③これからのソフトウェア開発にどう取り組むか
④ドメイン駆動設計 再入門
増田 亨
PRO
August 05, 2026
More Decks by 増田 亨
See All by 増田 亨
データエンジニアリングとドメイン駆動設計
masuda220
PRO
15
2.8k
AI 時代のソフトウェア設計の学び方
masuda220
PRO
30
14k
SCSD:事業価値を生み出すソフトウェア開発の実践技法
masuda220
PRO
4
240
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
8
1.5k
競争優位を生み出す戦略的内製開発の実践技法
masuda220
PRO
4
750
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
30
24k
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
38
18k
ドメイン駆動設計のエッセンス
masuda220
PRO
20
8.8k
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
13
2.8k
Other Decks in Technology
See All in Technology
Swift&Xcodeのバージョンアップにまつわる怖かった思い出 / Scary Memories of Swift and Xcode Updates
bitkey
PRO
0
140
plamo-3-translateの開発
pfn
PRO
0
260
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
1
290
ガバメントクラウドでのランサムウェア対策
techniczna
1
640
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
AIが自社のTableauを操作する世界へ:Tableau MCP超入門
tbtykk
0
110
Cursor Meetup Sapporo - Cursor物語 続編
cocacola917
0
100
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
7
3.2k
MIRU 2026 チュートリアル
keisuke198619
0
720
実践が先生だった— 新卒サーバーエンジニア1年目のリアル
mixi_engineers
PRO
0
240
初めてのGitHub Actions / GitHub Actions at First
tooppoo
0
130
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
3
270
Featured
See All Featured
A better future with KSS
kneath
240
18k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Rails Girls Zürich Keynote
gr2m
96
14k
KATA
mclloyd
PRO
35
15k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
340
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
450
Visualization
eitanlees
152
17k
Why Our Code Smells
bkeepers
PRO
340
58k
Transcript
#今こそ設計_Findy 第1回 ドメイン駆動設計 再入門 2026年8月5日 有限会社システム設計 増田 亨
自己紹介 著書(2017) *1 増田 亨(masuda220) 専門領域 訳書(2024) • 業務系アプリケーションの開発 *2
最近の仕事 • 技術的負債を返済するお手伝い • エンジニアの設計スキル向上のお手伝い *1 増田 亨(2017) 『現場で役立つシステム設計の原則』技術評論社 *2 Vlad Khononov(著) 増田 亨、綿引 琢磨(訳) 2024 『ドメイン駆動設計をはじめよう』オライリージャパン 2
はじめに • これからお話する内容は、私が経験から学んできた、 私の捉え方です • ソフトウェア設計を学ぶことに興味がある人たちの参 考になれば幸いです 3
お話しする内容 ① ソフトウェア開発の基本課題 ② AI技術をソフトウェア開発に活用するアプローチ ③ これからのソフトウェア開発にどう取り組むか ④ ドメイン駆動設計 再入門
4
①ソフトウェア開発の基本課題 5
事業活動のデジタル化の進展 6
私たちの専門領域 ソフトウェア 開発 7
事業活動のデジタル化の進展 事業開発 ソフトウェア 開発 8
事業活動のデジタル化の進展 事業開発 組織開発 ソフトウェア 開発 9
事業活動のデジタル化の進展 事業開発 組織開発 ソフトウェア 開発 事業開発・組織開発・ソフトウェア開発が、広く、深く、連動する時代 10
事業開発・組織開発・ソフトウェア開発の 連動が意味すること 11
事業活動は本質的に不確実で複雑 不確実さ 複雑さ 事業開発・組織開発・ソフトウェア開発は、 すべての関係者がお互いの知識を技能を持ち寄って 不確実さと複雑さに取り組む創発的な活動 12
不確実さと複雑さにどう取り組むか? • ソフトウェアエンジニアが、事業活動の当事者として、 判断し行動する • 事業価値を生み出すソフトウェアを他の分野の専門家 と協働しながら創発していていく 事業側と技術側という分断モデルでは、事業価値を生み出すソフ トウェア開発はできない 13
継続的に学習し成長する • 不確実だからこそ、何かを仮決めして進むしかない • 事業の複雑さは、事前にすべてを調査分析して整理は できない(変化を続ける複雑さ) • 開発とは、観察-評価-設計-実装サイクルを何度も回 しながら、学習し成長する活動 事業・組織・ソフトウェアを開発(観察-評価-設計-実装)する
14
ソフトウェア開発の根底原則 事業目的適合性 発展性 15
事業目的適合性 • 事業目的に適合させることが大きな事業価値を生む 事業目的からはずれたソフトウェアは事業に損失を生む • 事業活動のデジタル化の進展により、事業開発・組織 開発・ソフトウェア開発が一体となったことで、事業 目的適合性は、ソフトウェアエンジニアが当事者とし て取り組むべき課題となった 16
発展性 • 事業は発展を続ける • 事業活動と一体化したソフトウェアの発展性が大きな 事業価値となる • 発展性に欠ける、変更がやっかいで危険なソフトウェ アは、事業発展の足かせであり、事業リスクである 17
②AI技術をソフトウェア開発に活用する 18
AI技術をどう活用するか? 設計スタイルの選択 大きな事前設計 vs. 小さな設計の反復 AI技術で何を目指すか 自動化(無人化) vs. 人の活動支援 19
設計スタイルの選択 BUDF: Big Design Up Front 大きな事前設計 建築や量産型製造業では一般的 ウォーターフォール的なソフトウェア開発 IterativeでIncrementalな設計
小さな設計の反復 最初に小さな設計を行い(Enough Design Up Front) その結果を観察し、小さな設計改善を行う これを繰り返す 20
AI技術で何を目指すか 自動化(無人化) AI技術を使って、できるだけ人を介在させない ことで、コストダウン、スピードアップ、 一定品質を達成する 人の活動支援 人の判断と行動が主体で、AI技術を使って 人の能力を増強することで、コストダウン、 スピードアップ、一定品質を達成する 21
小さな設計の反復 自動化 (無人化) 人の活動 支援 大きな事前設計 22
小さな設計の反復 自動化 (無人化) 人の活動 支援 大きな事前設計 23
小さな設計の反復 協働創発 学習と成長 観察-評価-設計-実装 自動化 (無人化) 人の活動 支援 大きな事前設計 24
小さな設計の反復をAIで支援 • 不確実さに対応する工夫 • 複雑さに対応する工夫 • 学習しながら成長する • 観察-評価-設計-実装のサイクルを回すほど、学びが 進み、よいソフトウェアに発展させることができる
25
③これからのソフトウェア開発に どう取り組むか? 26
AI時代にどんな知識と技能が役に立つか? 一般論として • 事業理解や業務知識は役に立つ • ソフトウェアの設計原則やパターンの知識は役に立つ 27
しかし • 事業理解や業務知識が役に立つと言われてもピンとこ ない • 設計原則やパターンをある程度は知っているが、実践 で役に立つ実感が少ない • 何を、どう学べば、どんな効果があるか、具体的にわ からない
• 日々の仕事の中で、学習の時間は確保できない 28
そこで耳よりな話 • 効率的かつ効果的に学ぶ方法がある • ソフトウェアの事業目的適合性を判断し改善し、同時 に、ソフトウェアの発展性を判断し改善するための知 識と技能を学ぶための実践的な考え方とやり方がある 29
30
④ドメイン駆動設計 再入門 31
ドメイン駆動設計の目指すところ • 事業活動のモデルと設計に焦点を合わせる • 知識豊富な設計、深いモデルの探求 • 人と人との相互作用 コミュニケーション • モデルと実装を一致させる
参考:エリックエヴァンス『ドメイン駆動設計』まえがき、1章、2章、3章 事業目的適合性と発展性を向上するための基本原則 32
ドメイン駆動設計に取り組むために 土台となる知識と技能 33
ドメイン駆動設計の土台となる知識と技能 • 業務ロジックと入出力を分離する • • ビジネスルールの表現することに特化したクラスを作る 画面、データベース、通信に依存した構造から切り離す • ビジネスルールをプログラミング言語で記述する •
• アプリケーション特化のデータ型を定義して組み合わせる 区分、日付、期間、金額、数量、比率、… • モデルとコードの継続的なリファクタリング • • 事業活動を学び理解したことを、モデルと実装に反映 ソフトウェアの事業目的適合性と発展性を向上する 34
土台となる知識と技能を効率的に学ぶ 1章と2章の基本技法を 完全に理解する +3章の考え方 1章リファクタリングの例 switch文のリファクタリングを 徹底的に練習する 35
『ドメイン駆動設計をはじめよう』 36
何が書いてあるか? 37
ソフトウェアの実装と 事業戦略を結びつける さまざまな経験則 38
具体的には 1. 中核の業務領域に焦点を合わせる 2. 同じ言葉を使う 3. 事業の成長と連動したソフトウェアの成長 4. 現実世界のドメイン駆動設計への取り組み 5.
事例研究(失敗からの学びと成長) 39
中核の業務領域に焦点を合わせる 40
事業戦略とソフトウェアを結びつける方法 ソフトウェア開発の対象業務を2つの軸で4分類して、 カテゴリーごとに適切な設計方針を選ぶ 横軸:競合他社との差別化への影響度 縦軸:業務ロジックの複雑さ(開発の難易度) 41
他社と同じ 自社独自 一般の 業務領域 中核の 業務領域 一般 または 補完 補完的な
業務領域 業務ロジック の複雑さ 競合他社との差別化 42
他社と同じ 自社独自 一般の 業務領域 中核の 業務領域 一般 または 補完 補完的な
業務領域 変更容易性の 改善に継続的に 取り組む 業務ロジック の複雑さ 競合他社との差別化 43
模倣または 購入を検討 他社と同じ 自社独自 一般の 業務領域 中核の 業務領域 一般 または
補完 補完的な 業務領域 業務ロジック の複雑さ 簡略に 済ませる 競合他社との差別化 44
同じ言葉を使って開発する 使う 協働創発 学習と成長 同じ言葉 (業務の言葉) 45
事業の成長とソフトウェアの成長(11章) 事業が成長すれば、業務領域の カテゴリーは変化する 業務領域のカテゴリーが変化すれば 設計方針が変化する 46
現実世界のドメイン駆動設計(13章) こういうことはありえないし、必要もない(第13章) • • • • チーム全員がドメイン駆動設計を熟知している 最初から全員が役に立つモデルの探求に全力をつくす 全ての関係者が同じ言葉を忠実に使う 既存システムや外部サービスを考慮しなくてよい制約の少ない新規案件
➢ドメイン駆動設計のすべての技法を使う必要はない ➢ドメイン駆動設計が組織として受け入れられていない状況でも実践は可能 ✓ 適切な道具を必要に応じて選択的に使う ✓ それぞれのやり方の背景にある考え方と原則を意識して使う ✓ 組織の変化とソフトウェアの成長に忍耐強く取り組む 47
事例研究(付録A) • 原著者の経験談(失敗談) • ドメイン駆動設計の浅い理解から出発して、いろいろ な失敗を繰り返しながら、学び成長した物語 • この本の内容のリアルな元ネタ • 他の情報ソースでは手に入らない貴重な内容
48
事業目的適合性と発展性をさらに学ぶために 【エッセンシャル版】 差別化戦略を実行するため の考え方とやり方を学ぶ 事業活動のざっくりした全体像を 財務の視点から学ぶ (財務会計の専門家ではない人向け) 49