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時代の『ドメイン駆動設計をはじめよう』
Search
増田 亨
PRO
July 10, 2025
11
3.4k
AI時代の『ドメイン駆動設計をはじめよう』
#forkwell_library #100 での発表資料。
① AI技術とソフトウェア設計
② 『ドメイン駆動設計をはじめよう』のすすめ
③ ソフトウェア設計三つの基本スキル
増田 亨
PRO
July 10, 2025
Tweet
Share
More Decks by 増田 亨
See All by 増田 亨
事業戦略を理解してソフトウェアを設計する
masuda220
PRO
25
6.5k
これだけは知っておきたいクラス設計の基礎知識 version 2
masuda220
PRO
26
7.7k
ビジネスモデリング道場 目的と背景
masuda220
PRO
11
1.8k
ソフトウェアエンジニアの成長
masuda220
PRO
13
2.5k
分散型アーキテクチャとドメイン駆動設計
masuda220
PRO
9
3.7k
ソフトウェア開発の複雑さに立ち向かう
masuda220
PRO
13
16k
『ドメイン駆動設計をはじめよう』のモデリングアプローチ
masuda220
PRO
9
1.2k
現場で役立つモデリング 超入門
masuda220
PRO
16
4.4k
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
9
3.1k
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
We Have a Design System, Now What?
morganepeng
53
7.7k
Building an army of robots
kneath
306
45k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Become a Pro
speakerdeck
PRO
29
5.4k
Fireside Chat
paigeccino
37
3.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Done Done
chrislema
184
16k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Transcript
『ドメイン駆動設計をはじめよう』 2025年7月10日 有限会社システム設計 増田 亨 #Forkwell_Library FL#100 AI時代の
自己紹介 専門領域 • 業務系アプリケーションの開発 最近の仕事 • 大きな泥団子退治のアドバイザ • エンジニアの成長支援 2
増田 亨(masuda220) 著書(2017) 訳書(2024)
話すこと ①AI技術とソフトウェア設計 ②『ドメイン駆動設計をはじめよう』のすすめ ③ソフトウェア設計 三つの基本スキル 3
4 ①AI技術とソフトウェア設計
どちらのエンジニアがAI技術を活用できるか 5 ソフトウェア設計の 知識と経験が豊富 ソフトウェア設計の 知識と経験が貧弱
AI技術について私のとらえ方 • ソフトウェア設計の考え方とやり方を学び、経験を通 じて設計技能を磨くことは、今まで以上に効果的 • これまで大きな泥団子を作ってきた組織は、AI技術を 使って大きな泥団子を作る 6
AI技術について私のとらえ方(つづき) • AI技術、AI技術を使ったサービス、AI技術を使った サービス活用のノウハウは、まだ発展途上で不安定 • 現段階のAI技術に習熟するより、ソフトウェア設計の 基本に習熟するほうが投資対効果が高いだろう 7
AI技術 私の最近の使い方 ⇒ 下調べ/要約の代行 → どこを深掘りするか判断材料 ⇒ 一般論の生成 → 自分の解釈と比較
→ 気づき ⇒ 進化したコード補完ツール やっていないこと • 生成結果の質をあげるための試行錯誤(使い方の探索) • 生成結果を、なにもせず、そのままアウトプット 8
9 ②『ドメイン駆動設計をはじめよう』
何が書いて あるか?
書いてあることは基本的には一つ 事業活動とソフトウェアを 一緒に発展させていくための方法 11 この本の主題であり、最初から最後まで一貫している
もう少し解像度をあげると 12 第1部 基本となる考え方 第Ⅱ部 実装方法の選択 第Ⅲ部、付録A 現場での取り組み方 第Ⅳ部 分散型システムへの挑戦
事業活動とソフトウェアを一緒に発展させていく
設計 判断 さらに解像度をあげると 13 開発者が事業活動を理解して設計判断と技術選択に活かす 事業活動 課題 課題 仕組み 仕組み
関係者 開発者が理解 トランザクション スクリプト アクティブ レコード ドメイン モデル イベント履歴式 ドメインモデル 値オブジェクト 集約 業務サービス レイヤード ポートと アダプター CQRS Web API メッセージング 送信箱 サーガ プロセス マネージャー イベント駆動型 アーキテクチャ マイクロ サービス データメッシュ トランザクション ロールバック 排他制御 テスト戦略 イベント ストーミング 大きな リファクタリング (第1章~第4章) 技術手段(第5章~第16章) (第10章、付録A) 技術 選択
この本の 核心
ソフトウェアの設計方針 15 競合他社との差別化 中核の 業務領域 業務ロジック の複雑さ 優先的に 取り組む 補完
一般 簡略に済ませる 模倣、流用、購入
事業戦略とソフトウェアをつなげて考える 16 差別化戦略 ビジネス ルール 業務 ロジック 高業績を持続 させるための 基本方針
差別化を 実現するための さまざまな決め事 ビジネスルールに 基づく計算判断 (コード表現) 具体化 実装
17 ③ソフトウェア設計の基本スキル
ソフトウェア設計 三つの基本スキル 18 モジュール化 事業戦略 の理解 学習と成長 複雑さの 分解 優先順位
見極め 状況変化に 適応
モジュール化のエッセンス 19 混在 断片化 分離 集約 重複 一元化 いろいろ同時に考える 異なる関心事は
別モジュールに あちこちを同時に考える 関連が強い関心事は モジュールに集める あちこちで同じことを考える 同じ関心事は ただ一つのモジュールで
事業戦略を理解してソフトウェアを設計する デジタル化の進展により、事業活動のあらゆる領域でソフトウェ アが使われる。その結果、 ソフトウェアエンジニアが事業戦略を理解して判断し行動する ことが直接的に事業価値を生み出す ソフトウェアエンジニアが事業戦略を理解せずに判断し行動す ることが直接的に事業の損失になる 20
エンジニアの学習と成長 最初は、誰もが初学者 • 最初は、わけがわからないことだらけ • どんなに学んでも、状況は変化し続ける だから学び続ける • 基本をたいせつに •
視野の広さ、視点の多さをたいせつに 異なる知見を持ち寄って、協働して共創する 21
何を学ぶと成長できるか(何が足りないか) 基礎 • プログラミング(手続き抽象、データ抽象、契約プログラミング) • OS、ネットワーク、データベース 設計原則 • モジュール化、関心の分離、抽象化、構造化 全体像のつかみ方
• システム全体、開発プロセス全体、事業活動全体 探求スキル • 観察、実験、文献調査、現地調査 協働スキル • 意図の伝達、他者の視点と感情の理解、課題の認識合わせ、解決策の提案 22