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
ざっくりわかるDDD (戦術的のみ)
Search
ミツバ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
400
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
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
3
7.4k
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9k
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.5k
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
240
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.2k
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
550
Model Studio CLI × Token Plan
maigo999
0
170
【AG-UI × A2UI × MCP Apps】Generative UIをやさしく解説する
nrinetcom
PRO
1
120
システム思考で問題に対処する
yussak
0
260
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
4.9k
【CEDEC2026】グラフィックスエンジニアのためのニューラルシェーディング入門
cygames
PRO
0
140
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.6k
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1033
470k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Believing is Seeing
oripsolob
1
190
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
590
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
sira's awesome portfolio website redesign presentation
elsirapls
0
320
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Λ͚ͯɼσβΠφʔ ͷਓͱڞಉͰ࡞ۀ͘͢͢͠Δ
ؾ͕͍ͨΒʹ͚ͯ ։ൃͯ͠Έ͍ͯͩ͘͞