ざっくりわかるDDD (戦術的のみ)
by
ミツバEX
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ͬ͘͟ΓΘ͔ΔDDD (ઓज़తͷΈ) ϛπό
Slide 2
Slide 2 text
ࣗݾհ • ϛπόʢM2ʣ • @EX46900521 • य़͔Β౦ژ • Haskell, Go
Slide 3
Slide 3 text
ࠓ͢͜ͱ • υϝΠϯۦಈઃܭͷงғؾ • Α͘ΘΕΔΞʔΩςΫνϟʢઓज़తDDDʣ • υϝΠϯۦಈઃܭͰɼؾΛ͚ͭΔ͜ͱ
Slide 4
Slide 4 text
ࠓ͞ͳ͍͜ͱ • υϝΠϯۦಈઃܭΛશʹཧղ͢Δ • ओʹϞσϦϯάͷ͠ͳ͍ʢઃܭͰ͕͜͜ॏཁʣ • ϞσϦϯάʹؔͯ͜͠ͷεϥΠυ͕Θ͔Γ͘͢ ͯΑ͞Έʹ͋;Ε͍ͯ·͢ɽ • https://speakerdeck.com/smdmts/ddd-for- engineer-newbie
Slide 5
Slide 5 text
υϝΠϯۦಈઃܭͷඞཁੑ • มߋʹڧ͍ίʔυΛॻ͖͍ͨ • ϩδοΫΛͲ͜ʹஔ͔͘ʹରͯ͠ਅʹ ઓ͍ͬͯ͘
Slide 6
Slide 6 text
υϝΠϯ = ۀͷؔ৺ࣄ
Slide 7
Slide 7 text
υϝΠϯۦಈઃܭ = ۀͷؔ৺ࣄʹணͨ͠ ઃܭख๏
Slide 8
Slide 8 text
ۀͷؔ৺ࣄ • ྫɿ • ਓ͕͓ۚΛࣗͷޱ࠲ʹৼΓࠐΉ
Slide 9
Slide 9 text
ਓ͕ۚΛ͏
Slide 10
Slide 10 text
ਓ͕ۚΛࣗͷޱ࠲ʹৼΓࠐΉ 8IP 8IBU 8IBU 8IFSF
Slide 11
Slide 11 text
γεςϜ֎෦ͷಈ͖ ৼΓࠐΉ ৼࠐऴྃ ௨
Slide 12
Slide 12 text
γεςϜ෦ͷಈ͖
Slide 13
Slide 13 text
γεςϜ෦ͷಈ͖ γεςϜ σʔλϕʔε ৼࠐॲཧɼϢʔβใ֬ೝɼ ߴ֬ೝɽɽɽFUD
Slide 14
Slide 14 text
Slide 15
Slide 15 text
Q: ͜Εྑ͍ίʔυͰ͔͢ʁ
Slide 16
Slide 16 text
A: ͋·Γྑ͘ͳ͍ίʔυͰ͢
Slide 17
Slide 17 text
Կ͕ྑ͘ͳ͍ͷʁ
Slide 18
Slide 18 text
Α͘ͳ͍ • Ұͭͷϝιου͕ͨ͘͞Μͷ͜ͱΛ͗͢͠ • ςετ͕ॻ͖ͮΒ͍ • ͺͬͱݟͲ͕͜Ͳ͏ಈ͍͍ͯΔͷ͔Θ͔Γ ͮΒ͍
Slide 19
Slide 19 text
ͨ͘͞Μ͋ΔॲཧΛ͚Δ
Slide 20
Slide 20 text
ओͳϩδοΫ • ೝূ֬ೝ • ֹ͕ۚෆਖ਼Ͱͳ͍͔֬ೝʢҎ֎Ͱͳ͍ ͔ʣ • ৼࠐॲཧ • ߴ֬ೝ
Slide 21
Slide 21 text
Slide 22
Slide 22 text
ׂɿྑ͍ ݟ௨͠ɿѱ͍
Slide 23
Slide 23 text
ݟ௨͠ΛΑ͘͢ΔͨΊͷ ϨΠϠʔͷߟ͑ํ σʔλͷྲྀΕ Ұํ
Slide 24
Slide 24 text
֤ϨΠϠʔͷׂ Ϣʔβೖྗ σʔλͷ ܭࢉɼՃ σʔλͷӬଓԽ ͭͳ͗
Slide 25
Slide 25 text
ϨΠϠʔΛ͚ΔϝϦοτ • ίʔυͷஔ͖ॴΛ໌֬ʹܾΊΒΕΔ • ϩδοΫΛҰՕॴʹूதͯ͠ɼཧͰ͖Δ • ֤ϨΠϠʔͷؔΛૄ݁߹ʹอͯΔ
Slide 26
Slide 26 text
ઌ΄ͲͷίʔυΛϨΠϠʔ͚
Slide 27
Slide 27 text
ϑΝΠϧߏ
Slide 28
Slide 28 text
domain/MoneyΫϥε • ֹ͕ۚෆਖ਼Ͱͳ͍͔ͷఆΛMoneyΫϥε ʹҠ͢
Slide 29
Slide 29 text
domain/AuthenticationService • AuthΛߦ͏ॲཧΛAuthenticationServiceʹҠ ͨ͠
Slide 30
Slide 30 text
infra/MoneyRepository
Slide 31
Slide 31 text
application/TransferService
Slide 32
Slide 32 text
มߋޙ (TransferHandler)
Slide 33
Slide 33 text
ͪΐ͍εοΩϦͨ͠
Slide 34
Slide 34 text
͓͞Β͍ Ϣʔβೖྗ σʔλͷ ܭࢉɼՃ σʔλͷӬଓԽ ͭͳ͗
Slide 35
Slide 35 text
͏গ͠ϨΠϠʔ ͚ʹ͍ͭͯ
Slide 36
Slide 36 text
ૄ݁߹
Slide 37
Slide 37 text
ར༻ଆ͕ΠϯλʔϑΣʔεͷΈ Λ༻͍ɼ࣮ͱ͢Δ
Slide 38
Slide 38 text
Javaͷinterface
Slide 39
Slide 39 text
CatDogͷதΛΔඞཁ ͳ͘ɼશͯAnimalͰOK
Slide 40
Slide 40 text
Slide 41
Slide 41 text
RepositoryपΓͷ࣮ફతͳ
Slide 42
Slide 42 text
֤σʔλιʔεͷΓସ͑Λ ༰қʹͰ͖Δ
Slide 43
Slide 43 text
લͷ·ͱΊ • ϨΠϠʔߏʹͯ͠ɼॲཧΛׂ͠Α͏ • ΠϯλʔϑΣʔεͷΈΛఏڙ͠ɼϨΠϠʔؒ Λૄ݁߹ʹ
Slide 44
Slide 44 text
গ͠Λͯ͠
Slide 45
Slide 45 text
ਓ͕ۚΛࣗͷޱ࠲ʹৼΓࠐΉ 8IP 8IBU 8IBU 8IFSF
Slide 46
Slide 46 text
Ϟϊ • User • E-mail • UserName • ۚ • ੫ֹ
Slide 47
Slide 47 text
EntityͱValue Object • Entity • idΛ࣋ͪɼΦϒδΣΫτ͝ͱʹ۠ผ͞Ε͏Δ Ϟϊ • Value Object • ͷΈΛ࣋ͪɼෆมͳΦϒδΣΫτ
Slide 48
Slide 48 text
Ϟϊ • User (Entity) • E-mail (Value Object) • UserName (Value Object) • ۚ (Value Object) • ੫ֹ
Slide 49
Slide 49 text
ΈཱͯΔ (User)
Slide 50
Slide 50 text
ϑΝΠϧߏʢUserʣ
Slide 51
Slide 51 text
ϙΠϯτ • શͯͷมΛԿ͔͠ΒͷΫϥεͰϥοϓ͢Δ • IntegerܕStringܕͩͱԿΛҙຯ͍ͯ͠Δ ͔Θ͔ΓͮΒ͍
Slide 52
Slide 52 text
ूʢAggregateʣ
Slide 53
Slide 53 text
ू • Root EntityΛ࣋ͪɼͦͷԼʹෳͷEntity, Value ObjectΛ࣋ͭͰ͔͍υϝΠϯΦϒδΣ Ϋτ • ࠓճUser͕ू
Slide 54
Slide 54 text
ूͷϧʔϧ • ूҎԼͷΛࢀর͢Δͱ͖ඞͣRoot Entityʹ͍߹ΘͤΔ • Root Entity͕ͷීวੑΛอূ͢Δ
Slide 55
Slide 55 text
ͨ͘͞ΜͷΛҰͭͷ ΦϒδΣΫτʹԡ͠ࠐΊͯ ؔ৺͝ͱΛ෦ʹ
Slide 56
Slide 56 text
ΦϒδΣΫτࢦΤΫααΠζ
Slide 57
Slide 57 text
https://gist.github.com/ sambatriste/ 5535b1f0f6a73e9b37239d 86edf61c70
Slide 58
Slide 58 text
ϧʔϧ • 1ͭͷϝιουʹ͖ͭΠϯσϯτ̍ஈམ • else۟ېࢭ • ϓϦϛςΟϒܕͱจࣈྻܕϥοϓ͢Δ • Ұߦʹ͖ͭυοτҰͭ • ໊લলུ͠ͳ͍ • શͯͷΤϯςΟςΟΛখ͘͞ • 1ͭͷΫϥεʹ͖ͭɼΠϯελϯεมೋͭ·Ͱ • ϑΝʔετΫϥείϨΫγϣϯΛ༻͢Δ • Getter, Setter, ϓϩύςΟΛ༻͠ͳ͍͜ͱ
Slide 59
Slide 59 text
શͯͷΤϯςΟςΟΛখ͘͞ • 1ϑΝΠϧ50ߦ • 1ύοέʔδ10ϑΝΠϧ
Slide 60
Slide 60 text
ϑΝʔετΫϥείϨΫγϣϯ Λ༻͢Δ • ίϨΫγϣϯΛΫϥεͰϥοϓ͢Δ • ίϨΫγϣϯʹର͢ΔॲཧΛϝιουͰఆٛ Ͱ͖Δར͕͋Δ
Slide 61
Slide 61 text
Getter, SetterΛར༻͠ͳ͍ • ϩδοΫΛݺͿͷͰ͋ͬͯɼΛ͍߹ ΘͤΔཧ༝Λ࡞Βͳ͍Α͏ʹ͢Δ • ϩδοΫΛҙࣝతʹϞσϧʹ࣮͢ΔΑ͏ʹ ͳΔ
Slide 62
Slide 62 text
ΦϒδΣΫτࢦ ΤΫααΠζ
Slide 63
Slide 63 text
ޙͷ·ͱΊ • ϞϊΛҙࣝͯ͠ɼϞσϧΛ࡞͍ͯ͘͠ • ΦϒδΣΫτࢦΤΫααΠζͷ࣮ફʹΑΔ ΑΓׂ͞Εͨίʔυ
Slide 64
Slide 64 text
DDDͰؾΛ͚ͭΔ͜ͱ • υϝΠϯͷϩδοΫ͕ଞͷʹ࿙ΕΔՄೳ ੑ͕͋ΔͷͰҙ • υϝΠϯϞσϧҰேҰ༦ͷͰͳ͘ɼΏͬ ͘Γۛຯ͠ͳ͕Β։ൃΛ͢Δ͜ͱ͕େࣄ
Slide 65
Slide 65 text
·ͱΊ • ϨΠϠʔΛҙࣝ͠ɼॲཧΛׂ • ϩδοΫΛҙࣝͯ͠ɼҰՕॴʹूதͤ͞Δ • ΦϒδΣΫτࢦΤΫααΠζΛҙࣝ͢Δ
Slide 66
Slide 66 text
͓·͚
Slide 67
Slide 67 text
ϑϩϯτͷΞʔΩςΫνϟ • MVP • MVVM • Flux
Slide 68
Slide 68 text
MVP
Slide 69
Slide 69 text
MVVM
Slide 70
Slide 70 text
Flux https://www.google.co.jp/url?sa=i...
Slide 71
Slide 71 text
ϨΠϠʔʹ͚ͯؔ৺͝ͱͷ Λߦͳ͍ͬͯΔ
Slide 72
Slide 72 text
Atomic Design • UI ComponentsΛ5ͭͷϨϕϧʹ͚Δ • Atoms • Molecules • Organisms • templates • Pages
Slide 73
Slide 73 text
Atomic Design https://cdn-images-1.medium.com/max/...
Slide 74
Slide 74 text
ࡉ͔͘UIΛ͚ͯɼσβΠφʔ ͷਓͱڞಉͰ࡞ۀ͘͢͢͠Δ
Slide 75
Slide 75 text
ؾ͕͍ͨΒʹ͚ͯ ։ൃͯ͠Έ͍ͯͩ͘͞