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
ベンチャーでドメイン駆動設計をやるとどうなるか? #genbadeDDD
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Tsuyoshi Yasunishi
May 11, 2019
Programming
2.3k
3
Share
ベンチャーでドメイン駆動設計をやるとどうなるか? #genbadeDDD
Tsuyoshi Yasunishi
May 11, 2019
More Decks by Tsuyoshi Yasunishi
See All by Tsuyoshi Yasunishi
2024-12-05 本当に大事なこと(骨)を見出すための構造化という方法
tsuyok
0
230
「ソリューションの重力」を抗い「ビジネスの構造」に目を向けるマネジメント
tsuyok
0
240
2024-07-19 「変化の前に立ちはだかる "見えない構造" を取り扱うには」
tsuyok
0
250
2023-12-12 目標設定の効能と盲点の処方箋
tsuyok
3
1.3k
モデリングツールとモデリングの可能性を考える
tsuyok
3
1.2k
VPoEになって最初にやったこと
tsuyok
9
4k
増田亨さんによる 「設計の考え方とやり方」勉強会オープニング
tsuyok
0
1.3k
2019-09-21-growth
tsuyok
0
930
2019-08-31 DDD
tsuyok
2
3.9k
Other Decks in Programming
See All in Programming
New "Type" system on PicoRuby
pocke
1
380
Inspired By RubyKaigi (EN)
atzzcokek
0
440
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
290
Inside Stream API
skrb
1
400
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
240
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
400
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
520
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
180
関係性から理解する"同一性"の型用語たち
pvcresin
2
620
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
980
OCRを使ってゲームのアイテムをデータ化する
kishikawakatsumi
0
120
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
11k
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
180
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
210
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
590
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Chasing Engaging Ingredients in Design
codingconduct
0
200
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
WCS-LA-2024
lcolladotor
0
610
ラッコキーワード サービス紹介資料
rakko
1
3.5M
Transcript
ϕϯνϟʔͰ υϝΠϯۦಈઃܭΛΔͱ Ͳ͏ͳΔ͔ʁ ʙ1ZUIPOͰܕʹશʹͯ͠Έͨʙ 2019.05.11 גࣜձࣾνʔϜϘοΫε ҆ ߶
νʔϜϘοΫεͬͯʁ
None
None
৽αʔϏεͱػցֶशʹΑΔੳγεςϜ։ൃத
ձࣾͷ࣌എܠ
ˠ࣌ ʢۀʣ
ࣾһਓ
ҰਓͰ࡞ͬͨ
͘͞Β714্ʹ1ZUIPO
ࣄۀ͕͏·͘ߦ͖ͩͨ͠
ˠ࣌ ʢʣ
ೖࣾ
1ZUIPO͔ ͣͬͱଓ͘ αʔϏεʹ͍ͨ͠ͳ͊
Ϣʔβཧ͕྆ํʹ͋Δ͜ͱʹؾͮ͘
ϢʔβཧΛ͠Α͏
4QSJOH#PPU ,PUMJOͰ࡞ͬ ͨ
͜ΕʹՃ͑ͯ৽αʔϏεΛ࡞Ζ͏ʂ
1ZUIPOͬͨ͜ͱແ͍͠ ڷʹೖΕڷʹै͑ ·ͣͬͯΈΑ͏
͕͢͞ʹ.7$͚͖͍ͩͭ ·ͣϨΠϠʔυΞʔΩςΫνϟ ʢͱ͍͏໊ͷ͚͚ͨͩʣ
6*ʢ1SFTFOUBUJPOʣ "QQMJDBUJPO %PNBJO *OGSBTUSVDUVSF ˔ ϞσϦϯά͋·Γ͍ͯ͠ͳ͍ ˔ υϝΠϯಠཱ͍ͯ͠ͳ͍ʢଞͷʹґ ଘ͍ͯ͠Δʣ
ϨΠϠʔΛ͚Έͯ (PPEʂ %#"1*ΞΫηεͷॲཧΛͲ͜ʹॻ͚͍͍͔͕Θ͔Δ B ଞͷਓ͕ॻ͍ͨίʔυͰͲ͜ʹॻ͍ͯ͋Δ͔Θ͔Δ 03ϚούʔͷϞσϧ͔ΒϏδωεϩδοΫഉআͰ͖ͨ #BEʂ
ϏδωεϩδοΫͷډॴ͕ᐆດɻॻ͖ํਓػೳʹΑͬͯมΘΔɻ B υϝΠϯϞσϧශ݂ঢ়ଶ ͦ͏ͳΔͱ݁Ռతʹ$POUSPMMFS͕ଠΓɺ4FSWJDFͱ͍͏ಾͷDMBTT͕Ͱ͖࢝Ί Δ
த్͋·ΓޮՌ͕ͳ͍ ʢ࣮ײʣ
υϝΠϯϞσϦϯάΛ͍ͨ͠ ΔͳΒܕ͕΄͍͠ͳ͊ʜ
("&ͷ1ZUIPOΛ ʹ্͛ͨΑʂ $50߱ྟ
͜Ε5ZQF)JOU͕ ͑Δ͡Όͳ͍͔ʜ
1ZUIPOͰܕʹ ࣮͢ݧͯ͠ΈΑ͏Αʂ ͓લͦΕͩͬͨΒ +BWBͰ͑͑Μʂ https://www.irasutoya.com/2017/08/blog-post_54.html
؟ͷલʹ͋Δͷ1ZUIPOͰ͋Δ 1ZUIPOͰܕʹͯ͠ΈΑ͏ʂ ʢ࣮ڵຯຊҐʣ
جຊܗ
引数の型指定 戻り値の型指定 コメントで型指定
جຊతʹ5ZQF)JOU ͜Ε͚ͩͰ0, ʢ(FOFSJDTͱ͔ඞཁແ͠ʣ
*%&
1ZDIBSNʢ*OUFMMJK*%&"ʣ ͜ͷิ͕ͳ͍ͱແཧ
NZQZ ܕΛνΣοΫͯ͘͠Ε·͢ 1ZDIBSNʹઃఆ͢ΔͱΑΓྑ͍
little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 υϝΠϯΛ ಠཱͤ͞Δ ʲج४ʳ υϝΠϯʹ ଞͷͷJNQPSUจ͕ແ͍
little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 "QQMJDBUJPO4FSWJDF͔ Β *OGSBTUSVDUVSF ʢ%#ΞΫηεʣ Λݺͼ͍ͨ Ͱҹ͕ٯʹͳΔ
ͦ͜Ͱ%*
*OUFSGBDF͕ແ͍ͷͰɺܧঝͰදݱ
ɾܕΛCJOE͢Δ ɾ%*Ͱ"QQMJDBUJPO4FSWJDFΛJOKFDU͢Δ ɾ"QQMJDBUJPO4FSWJDFͰ*OUFSGBDFͷܕͰݺͼग़͢
little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 ͍͑ʔ͍ ґଘ͕ؔ ٯ͍ͨʂ
ઃܭͯ͠ΈΑ͏
खॱ ᶃॳظͷυϝΠϯϞσϧΛ࡞Δ ໊લͱৼΔ͍Λநग़ ίʔυʹམͱͯ͠ΈΔ ϦϑΝΫλϦϯά͍ͯ͘͠ ᶄυϝΠϯҎ֎Λ࡞͍ͬͯ͘
ᶃॳظͷυϝΠϯϞσϧΛ࡞Δ
Ϣʔεέʔε༷Λ༻ҙͯ͠
None
ᝦͰग़͢ ˞ΠϝʔδͰ͢
ॳظͷυϝΠϯϞσϧΛ࣮ͯ͠ΈΔ 7BMVF0CKFDUΛ࡞ͬͯΈΔ ͔͜͜Β࣮։࢝ ˞ύοέʔδҠಈΛߟྀͯ͠DMBTT͝ͱʹϑΝ ΠϧΛ͚ͯΈͨɻ͕ɺ͜Εࣦഊɻ
"QQMJDBUJPO *OGSBTUSVDUVSF σʔλϞσϧઃܭ Λ࡞͍ͬͯ͘
6*ʢ1SFTFOUBUJPOʣ "QQMJDBUJPO %PNBJO *OGSBTUSVDUVSF
little_hand_s さんのqiitaより引用 https://qiita.com/little_hand_s/items/ebb4284afeea0e8cc752 υϝΠϯΛ ಠཱͤ͞Δ ʲج४ʳ υϝΠϯʹ ଞͷͷJNQPSUจ͕ແ͍
ϙΠϯτ
ᶃݱ࣮ͷݴ༿Λͦͷ·· ίʔυʹམͱ͢ ʢϢϏΩλεݴޠʣ
༷ॻ͚ͩͰͳ͘ɺ ීஈ͍ͬͯΔݴ༿ʹײΛߴΊΔ
ᶄσʔλϞσϧ υϝΠϯϞσϧͷޙʹઃܭ ʢυϝΠϯϞσϧ͕σʔλϞσϧʹӨڹ͞ΕΔͷ Ͱʣ
ᶅϞσϧΛҭͯΔ
いったり来たり 俯瞰 詳細
Ϟσϧʹ͑ͳ͍ɻ
ͬͯΈͯ Ͳ͏͔ͩͬͨʁ
ͳ͔ͥͱ͍͏ͱɺߏΛઌʹ࡞ΔͷͰ ϩδοΫʹͨͲΓண͘ͷ͕࠷ޙͷํͰ Ͳ͔͠͞Λײͨ͡ͷͰͳ͔Ζ͏͔ ᶃ࠷ॳগ͠ख͕͔͔ؒΔ ײ͕͢͡Δ ࣾൺ
ᶄͲ͜ʹԿ͕͋Δ͔͕ Θ͔Γ͍͢ ଞਓɺաڈͷ͕ࣗॻ͍ͨίʔυɺͲͪΒͰ ߏͱ໊લ͕໌֬ͳͷͰɺͨͲΓ͍͢
ᶅมߋ͕҆৺ ࠷ߴʹؾ͕͍͍࣋ͪɻ ݁ߏେ͖ͳमਖ਼҆৺ײ͕͋Δ
ᶆ5ZQF)JOUͰͦͦ͜͜େৎ ܕ͕͋Δݴޠ͑Αɺͱ͍͏͕ͩɺ ʢͩͬͯͷલʹ1ZUIPO͕͋ͬͨΜͩͷʣ 1ZUIPOͰ*%&͕ิͯ͘͠ΕΔͷͰॆͰ͖Δ 1)1Ͱ͍͚ΔͷͰͳ͍ͩΖ͏͔
ᶇ։ൃʹ౷Ұੑ͕ੜ·ΕΔ υϝΠϯϞσϧΛআ͘ͱ͋ΔఔɺܗͰ͖Δ ϞσϧͷձΛଓ͚Ε ίϛϡχέʔγϣϯίετ͕গͳ͍
ᶈDMBTT͝ͱͳͲ ࡉ͔͍ςετ͕ඞཁͳͦ͞͏ ܕ͕୲อͯ͘͠ΕΔ ઃܭ͕͔ͬ͠Γ͍ͯ͠Εɺෳࡶͳܭࢉ "QQMJDBUJPO4FSWJDF$POUSPMMFS͝ͱͰ୲อ͍͢͠
ࠓޙͷ՝
ᶃͦ͜·ͰϞσϧ͕ҭͬͯͳ͍ ͬͱϦϑΝΫλϦϯά͠ͳ͚Ε
ᶄΓ͗ͨ͢ͱ͜Ζʁ DMBTT͝ͱʹϑΝΠϧΛ͚ͨͷࣦഊɻ͍͔ͭ͢ ʢ*OUFMMJK*%&"Ͱมߋ͕͘ͳͬͨʜʣ ͋Εɺଞʹແ͍ͳʁʁʁ
ᶅ1ZUIPOΤϯδχΞ͕ೖͬͨ Β ࠔ͢ΔͷͰͳ͔Ζ͏͔ ͤΘ͔Δͱ৴͍ͯ͡Δ
ࢥͬͨ͜ͱ
ˠˠˠˠ㱣
ˠˠˠˠ㱣 探そう 探しつつ 伸ばそう もっと 伸ばそう もっともっと 伸ばそう
複雑度(変更コスト)が指数関数的に上がっていく ˠˠˠˠ㱣 サクッと 作って検証 人が増えてきた なんか開発が 遅い感じがする あぁ辛い 作り直したい 厳しい
辛すぎる もう無理だ…
ˠˠˠˠ㱣 ここに不可逆な 境界線が????
ˠˠˠˠ㱣 ここで 大幅に設計をしなおすことが 大事なのではないか
͜Ε͕ͦͷޙͷมߋίετΛ େ෯ʹԼ͛Δ
ここが最も価値がある
None
৽͍͠ͷΛՃͭͭ͠ ෳࡶͳͷΛཧ͠ଓ͚Δ
ෳࡶͳͷΛෳࡶͳ··ѻ͏ ෳࡶͳͷ͕୯७ʹͳΔຐ๏ ͳ͍
ͦͷͱ͖ʹυϝΠϯۦಈઃܭΛ બ͢Δͱྑ͍ͱࢥ͏
ؒΛେେืूதͰ͢ʂ ˔ ෭ۀɾϑϦʔϥϯεΤϯδχΞืूʂ ˓ ࣌ؒॴࣄ༰ࣗ༝ ˓ ݁Ռతʹࣄ͠ͳ͍͍ͯ͘ͷͰɺҰ୴4MBDLʹೖΖ͏ʂ ˓ 1ZUIPOɺ7VFKTɺ,PUMJOɺJ04ͳͲ ˔
ΤϯδχΞࣾһืूʂ ˓ ਓͷʹڵຯ͕͋Δํ ˓ ಇ͘ॴɺ࣌ؒࣗ༝ ˓ ձٞใΦʔϓϯ ˓ ෭ۀࣗ༝ ͓ؾܰʹ͝࿈བྷ͍ͩ͘͞ʂ IUUQTXXXXBOUFEMZDPNQSPKFDUT