Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ドメインに没頭しよう
Search
siro33950
March 01, 2025
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドメインに没頭しよう
siro33950
March 01, 2025
Other Decks in Programming
See All in Programming
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
0
210
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
480
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
170
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.6k
ActionController meets Protocol Buffers
sorah
0
530
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.2k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
GraphQLとの向き合い方2022年版
quramy
50
15k
Un-Boring Meetings
codingconduct
0
460
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
ラッコキーワード サービス紹介資料
rakko
1
5.3M
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
KATA
mclloyd
PRO
35
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Transcript
ドメインに没頭しよう 糟谷尚史 / siro33950 2025年03月01日
2 2 Name: 糟谷尚史 Account: siro33950 Job: ひとり開発組織 → 開発室
室長 Skill: Java / Go / Rust / Angular / Next.js Like: DDD / BDD / gRPC / Rust
3 「良いシステム」作りたいよね?
4 良いとはなんだろう? どうやったら出来る?
5 技術的な良さ
6 1. 大量のアクセスを捌ける設計 2. 最新の技術の採用 3. 可読性、保守性の高いコード
7 それだけだと足りない
8 使われないけど技術的に完璧なシステムは 「良いシステム」ではない
9 業務的な良さも重要
10 1. 効率的になる 2. 質が上がる 3. 体験が良くなる
11 良いシステム = 技術と業務双方の最適解
12 技術的良さを追求するのは素晴らしい
13 技術と業務双方の良さを追求すると より「良いシステム」を作れるはず
14 ”開発者は、ビジネスの知識を積み重ねるべく、 ドメインに没頭しなければならない。” 『エリック・エヴァンスのドメイン駆動設計』第一部 序章
15 ということで
16 ドメインに没頭することは 本当に「良いシステム」につながるのか?
17 ”ソフトウェアの核心は、ドメインに関係した問題をユーザのために解決する 能力である。 それ以外の特徴はいずれも、どれほど重要だとしても、この基本的な目的 を支えるにすぎない。 〜〜中略〜〜 ソフトウェアの核心にある複雑さには、真正面から立ち向かわなければな らない。 そうしなければ、的外れなソフトウェアを作ってしまう危険があるのだ。” 『エリック・エヴァンスのドメイン駆動設計』第一部
序章
18 「的外れなソフトウェアを作ってしまう危険」 を回避するためにドメインに没頭すべき
19 リスク回避もあるが
20 「良いシステム」にするため ドメインに没頭する必要がある
21 1. 技術的理由 2. 組織的理由
22 技術的理由: システムも業務もシンプルになる
23 システムの複雑さの源泉は ソフトウェアの核心にある複雑さ = 業務の複雑さ
24 シンプルなシステムを構築するには 業務をシンプルに表現する必要がある
25 どうやって?
26 リファクタリング
27 リファクタリング ≠ 技術的改善
28 業務とシステムを往復し 双方を改善する試み
29 - 暗黙知の形式知化 - ルールの明確化と整理 - ドメインの本質の理解
30 これらをコード上で表現出来るようにする
31 ”ドメインエキスパートは、自分の知っていることを蒸留して本質を抽出する ように強いられることによって、しばしば自分の理解を精緻にし、ソフトウェ アプロジェクトが必要とする概念の正確さを理解するようになる。” 『エリック・エヴァンスのドメイン駆動設計』第一部 序章
32 リファクタリング ≒ ドメイン知識の蒸留
33 より本質的を表現したコードにリファクタリング ↓ 業務自体の整理/抽象化 ↓ より本質的な概念/知識の発見 ↓ 業務の改善
34 システムの複雑さ = 業務の複雑さ
35 システムをシンプルにしたいなら 業務をシンプルにするべき
36 業務をシンプルにするためには 業務を知らなければいけない
37 ドメインに没頭しよう
38 組織的理由: ドメインエキスパートはいなくなる
39 ドメインエキスパート = 業務知識を深く理解している専門家
40 ”優秀なプログラマは、当然、抽象化することから始め、より多くの処理を行 うことので きるモデルを開発する。 ただし、その背景にあるのが技術だけで、ドメインエキスパートとの共同作 業がない場合、その概念は素朴なものにしかならない。 そのように知識が浅薄 でも、基本的な処理を実行するソフトウェアを作り出 すことはできるが、そのように作ら れたソフトウェアが、ドメインエキスパー
トの考え方と深く結びつくことはない。” 『エリック・エヴァンスのドメイン駆動設計』第一部 序章
41 エンジニアは ドメインエキスパートと共同作業すべき
42 しかし
43 1. ドメインエキスパートと協業し業務をシステム化
44 2. ドメインエキスパートはシステム利用者となり、 業務でドメイン知識を扱わなくなる
45 3. ドメインエキスパートは業務で扱わないので ドメイン知識を失ってしまう
46 4. 組織内で最もドメイン知識に精通しているのは エンジニアになる
47 5. エンジニアにドメイン知識がないので システムがブラックボックス化
48 結果 システムの改修が不可能になる
49 ドメインエキスパートはいなくなる
50 システムを継続的に改善するには
51 エンジニア自身が ドメインエキスパートになる
52 ドメインに没頭しよう
53 まとめ
54 - 「良いシステム」のためには技術的良さと同じくらい業務的良さが必要 - 業務的良さのためにドメインに没頭しよう - ドメインに没頭すると良いことがある 1. 「的外れなソフトウェアを作ってしまう危険」を回避出来る 2.
システムも業務も双方を改善出来る 3. ドメイン知識の流出を防止し、継続的改善が可能になる
55 ドメインに没頭するにはどうすればいいのか
56 『エリック・エヴァンスのドメイン駆動設計』 を読もう
57 おまけ: AIによってエンジニアが代替されて仕事がなくなる等言われている - コードを書くことは今後大部分AIに代替される可能性が高い - 業務から必要なシステムは何かを考えることがエンジニアの重要な価値になる のでは ドメインに没頭したエンジニアこそAI時代に生き残れるかもね とはいえ、
コードを書くという一番面白いところを機械がやるのは納得いかない