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
ざっくりわかるDDD (戦術的のみ)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ミツバEX
September 04, 2018
Technology
1.7k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ざっくりわかるDDD (戦術的のみ)
部活の制作合宿で発表したスライドです.
ミツバEX
September 04, 2018
More Decks by ミツバEX
See All by ミツバEX
20180903制作合宿
mitubaex
0
420
20160514 逆求人イベント
mitubaex
0
200
20171001 逆求人イベント
mitubaex
0
240
Gitハンズオン勉強会の資料
mitubaex
0
2.7k
YouをTubeする男
mitubaex
0
770
Other Decks in Technology
See All in Technology
え、こんなに早く改修できるの?──新人エンジニアとスクラムマスターの2人が語る、AI×アジャイル開発の現場
ysasago
2
640
時うどん〜Socket.getifaddrsで学ぶネットワーク編 / Tokiudon: The Socket.getifaddrs Edition
coe401_
4
210
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
270
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
170
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
310
Minecraft JavaのMODをSwiftで作る
1mash0
0
200
Genieを崇めよ
kameitomohiro
0
170
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
500
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
3
2k
AIは推し活である。
kurazuuuuuu
1
940
ScotSecure West 2026 - Glasgow
raybugg
0
150
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
580
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Claude Code のすすめ
schroneko
67
230k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
Google's AI Overviews - The New Search
badams
0
1.6k
WENDY [Excerpt]
tessaabrams
14
39k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
WCS-LA-2024
lcolladotor
0
830
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
500
Writing Fast Ruby
sferik
630
63k
How GitHub (no longer) Works
holman
316
150k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Transcript
ͬ͘͟ΓΘ͔ΔDDD (ઓज़తͷΈ) ϛπό
ࣗݾհ • ϛπόʢM2ʣ • @EX46900521 • य़͔Β౦ژ • Haskell, Go
ࠓ͢͜ͱ • υϝΠϯۦಈઃܭͷงғؾ • Α͘ΘΕΔΞʔΩςΫνϟʢઓज़తDDDʣ • υϝΠϯۦಈઃܭͰɼؾΛ͚ͭΔ͜ͱ
ࠓ͞ͳ͍͜ͱ • υϝΠϯۦಈઃܭΛશʹཧղ͢Δ • ओʹϞσϦϯάͷ͠ͳ͍ʢઃܭͰ͕͜͜ॏཁʣ • ϞσϦϯάʹؔͯ͜͠ͷεϥΠυ͕Θ͔Γ͘͢ ͯΑ͞Έʹ͋;Ε͍ͯ·͢ɽ • https://speakerdeck.com/smdmts/ddd-for-
engineer-newbie
υϝΠϯۦಈઃܭͷඞཁੑ • มߋʹڧ͍ίʔυΛॻ͖͍ͨ • ϩδοΫΛͲ͜ʹஔ͔͘ʹରͯ͠ਅʹ ઓ͍ͬͯ͘
υϝΠϯ = ۀͷؔ৺ࣄ
υϝΠϯۦಈઃܭ = ۀͷؔ৺ࣄʹணͨ͠ ઃܭख๏
ۀͷؔ৺ࣄ • ྫɿ • ਓ͕͓ۚΛࣗͷޱ࠲ʹৼΓࠐΉ
ਓ͕ۚΛ͏
ਓ͕ۚΛࣗͷޱ࠲ʹৼΓࠐΉ 8IP 8IBU 8IBU 8IFSF
γεςϜ֎෦ͷಈ͖ ৼΓࠐΉ ৼࠐऴྃ ௨
γεςϜ෦ͷಈ͖
γεςϜ෦ͷಈ͖ γεςϜ σʔλϕʔε ৼࠐॲཧɼϢʔβใ֬ೝɼ ߴ֬ೝɽɽɽFUD
Q: ͜Εྑ͍ίʔυͰ͔͢ʁ
A: ͋·Γྑ͘ͳ͍ίʔυͰ͢
Կ͕ྑ͘ͳ͍ͷʁ
Α͘ͳ͍ • Ұͭͷϝιου͕ͨ͘͞Μͷ͜ͱΛ͗͢͠ • ςετ͕ॻ͖ͮΒ͍ • ͺͬͱݟͲ͕͜Ͳ͏ಈ͍͍ͯΔͷ͔Θ͔Γ ͮΒ͍
ͨ͘͞Μ͋ΔॲཧΛ͚Δ
ओͳϩδοΫ • ೝূ֬ೝ • ֹ͕ۚෆਖ਼Ͱͳ͍͔֬ೝʢҎ֎Ͱͳ͍ ͔ʣ • ৼࠐॲཧ • ߴ֬ೝ
ׂɿྑ͍ ݟ௨͠ɿѱ͍
ݟ௨͠ΛΑ͘͢ΔͨΊͷ ϨΠϠʔͷߟ͑ํ
σʔλͷྲྀΕ Ұํ
֤ϨΠϠʔͷׂ
Ϣʔβೖྗ σʔλͷ ܭࢉɼՃ σʔλͷӬଓԽ ͭͳ͗
ϨΠϠʔΛ͚ΔϝϦοτ • ίʔυͷஔ͖ॴΛ໌֬ʹܾΊΒΕΔ • ϩδοΫΛҰՕॴʹूதͯ͠ɼཧͰ͖Δ • ֤ϨΠϠʔͷؔΛૄ݁߹ʹอͯΔ
ઌ΄ͲͷίʔυΛϨΠϠʔ͚
ϑΝΠϧߏ
domain/MoneyΫϥε • ֹ͕ۚෆਖ਼Ͱͳ͍͔ͷఆΛMoneyΫϥε ʹҠ͢
domain/AuthenticationService • AuthΛߦ͏ॲཧΛAuthenticationServiceʹҠ ͨ͠
infra/MoneyRepository
application/TransferService
มߋޙ (TransferHandler)
ͪΐ͍εοΩϦͨ͠
͓͞Β͍
Ϣʔβೖྗ σʔλͷ ܭࢉɼՃ σʔλͷӬଓԽ ͭͳ͗
͏গ͠ϨΠϠʔ ͚ʹ͍ͭͯ
ૄ݁߹
ར༻ଆ͕ΠϯλʔϑΣʔεͷΈ Λ༻͍ɼ࣮ͱ͢Δ
Javaͷinterface
CatDogͷதΛΔඞཁ ͳ͘ɼશͯAnimalͰOK
RepositoryपΓͷ࣮ફతͳ
֤σʔλιʔεͷΓସ͑Λ ༰қʹͰ͖Δ
લͷ·ͱΊ • ϨΠϠʔߏʹͯ͠ɼॲཧΛׂ͠Α͏ • ΠϯλʔϑΣʔεͷΈΛఏڙ͠ɼϨΠϠʔؒ Λૄ݁߹ʹ
গ͠Λͯ͠
ਓ͕ۚΛࣗͷޱ࠲ʹৼΓࠐΉ 8IP 8IBU 8IBU 8IFSF
Ϟϊ • User • E-mail • UserName • ۚ •
੫ֹ
EntityͱValue Object • Entity • idΛ࣋ͪɼΦϒδΣΫτ͝ͱʹ۠ผ͞Ε͏Δ Ϟϊ • Value Object
• ͷΈΛ࣋ͪɼෆมͳΦϒδΣΫτ
Ϟϊ • User (Entity) • E-mail (Value Object) • UserName
(Value Object) • ۚ (Value Object) • ੫ֹ
ΈཱͯΔ (User)
ϑΝΠϧߏʢUserʣ
ϙΠϯτ • શͯͷมΛԿ͔͠ΒͷΫϥεͰϥοϓ͢Δ • IntegerܕStringܕͩͱԿΛҙຯ͍ͯ͠Δ ͔Θ͔ΓͮΒ͍
ूʢAggregateʣ
ू • Root EntityΛ࣋ͪɼͦͷԼʹෳͷEntity, Value ObjectΛ࣋ͭͰ͔͍υϝΠϯΦϒδΣ Ϋτ • ࠓճUser͕ू
ूͷϧʔϧ • ूҎԼͷΛࢀর͢Δͱ͖ඞͣRoot Entityʹ͍߹ΘͤΔ • Root Entity͕ͷීวੑΛอূ͢Δ
ͨ͘͞ΜͷΛҰͭͷ ΦϒδΣΫτʹԡ͠ࠐΊͯ ؔ৺͝ͱΛ෦ʹ
ΦϒδΣΫτࢦΤΫααΠζ
https://gist.github.com/ sambatriste/ 5535b1f0f6a73e9b37239d 86edf61c70
ϧʔϧ • 1ͭͷϝιουʹ͖ͭΠϯσϯτ̍ஈམ • else۟ېࢭ • ϓϦϛςΟϒܕͱจࣈྻܕϥοϓ͢Δ • Ұߦʹ͖ͭυοτҰͭ •
໊લলུ͠ͳ͍ • શͯͷΤϯςΟςΟΛখ͘͞ • 1ͭͷΫϥεʹ͖ͭɼΠϯελϯεมೋͭ·Ͱ • ϑΝʔετΫϥείϨΫγϣϯΛ༻͢Δ • Getter, Setter, ϓϩύςΟΛ༻͠ͳ͍͜ͱ
શͯͷΤϯςΟςΟΛখ͘͞ • 1ϑΝΠϧ50ߦ • 1ύοέʔδ10ϑΝΠϧ
ϑΝʔετΫϥείϨΫγϣϯ Λ༻͢Δ • ίϨΫγϣϯΛΫϥεͰϥοϓ͢Δ • ίϨΫγϣϯʹର͢ΔॲཧΛϝιουͰఆٛ Ͱ͖Δར͕͋Δ
Getter, SetterΛར༻͠ͳ͍ • ϩδοΫΛݺͿͷͰ͋ͬͯɼΛ͍߹ ΘͤΔཧ༝Λ࡞Βͳ͍Α͏ʹ͢Δ • ϩδοΫΛҙࣝతʹϞσϧʹ࣮͢ΔΑ͏ʹ ͳΔ
ΦϒδΣΫτࢦ ΤΫααΠζ
ޙͷ·ͱΊ • ϞϊΛҙࣝͯ͠ɼϞσϧΛ࡞͍ͯ͘͠ • ΦϒδΣΫτࢦΤΫααΠζͷ࣮ફʹΑΔ ΑΓׂ͞Εͨίʔυ
DDDͰؾΛ͚ͭΔ͜ͱ • υϝΠϯͷϩδοΫ͕ଞͷʹ࿙ΕΔՄೳ ੑ͕͋ΔͷͰҙ • υϝΠϯϞσϧҰேҰ༦ͷͰͳ͘ɼΏͬ ͘Γۛຯ͠ͳ͕Β։ൃΛ͢Δ͜ͱ͕େࣄ
·ͱΊ • ϨΠϠʔΛҙࣝ͠ɼॲཧΛׂ • ϩδοΫΛҙࣝͯ͠ɼҰՕॴʹूதͤ͞Δ • ΦϒδΣΫτࢦΤΫααΠζΛҙࣝ͢Δ
͓·͚
ϑϩϯτͷΞʔΩςΫνϟ • MVP • MVVM • Flux
MVP
MVVM
Flux https://www.google.co.jp/url?sa=i...
ϨΠϠʔʹ͚ͯؔ৺͝ͱͷ Λߦͳ͍ͬͯΔ
Atomic Design • UI ComponentsΛ5ͭͷϨϕϧʹ͚Δ • Atoms • Molecules •
Organisms • templates • Pages
Atomic Design https://cdn-images-1.medium.com/max/...
ࡉ͔͘UIΛ͚ͯɼσβΠφʔ ͷਓͱڞಉͰ࡞ۀ͘͢͢͠Δ
ؾ͕͍ͨΒʹ͚ͯ ։ൃͯ͠Έ͍ͯͩ͘͞