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
ドメイン駆動設計 勉強会 〜 エンティティ編 〜 / 2024-02-20
Search
Takuma Yamamoto
February 20, 2024
Programming
0
43
ドメイン駆動設計 勉強会 〜 エンティティ編 〜 / 2024-02-20
Takuma Yamamoto
February 20, 2024
Tweet
Share
More Decks by Takuma Yamamoto
See All by Takuma Yamamoto
ドメイン駆動設計 勉強会 〜 リポジトリ編 〜 / 2024-04-23
tamago3keran
0
20
スナックミーの開発はワクワクだらけ! / 2024-04-05
tamago3keran
0
69
アウトプットのハードルを下げた! / 2024-03-25
tamago3keran
0
250
ドメイン駆動設計 勉強会 〜 ドメインサービス編 〜 / 2024-03-05
tamago3keran
0
32
ドメイン駆動設計 勉強会 〜 値オブジェクト編 〜 / 2024-02-06
tamago3keran
1
580
スカウト返信率を倍にするためにやったこと / 2024-01-29
tamago3keran
2
770
Rails 経験者が FastAPI 本を読んで感じたこと / 2023-11-28
tamago3keran
0
580
アウトプットのモチベーションはみんな違ってみんな良い! / 2023-10-06
tamago3keran
0
870
PC が変わっても使い慣れた Neovim で すぐに開発を始める仕組み / 2023-07-25
tamago3keran
1
910
Other Decks in Programming
See All in Programming
Snowflakeで眠ったデータを起こそう!
estie
0
130
GitHub Copilotのススメ
marcy731
1
210
Java 22 Overview
kishida
1
190
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
390
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
420
見た目から始める生産性向上
ikumatadokoro
9
1.3k
雑に思考を整理する技術と効能
konifar
61
30k
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
210
Try creating your own orderedmap
kazamori
1
150
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
170
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
140
Ruby Function Composition
bkuhlmann
1
340
Featured
See All Featured
Building Applications with DynamoDB
mza
88
5.6k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Building an army of robots
kneath
300
41k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
222
21k
Designing for humans not robots
tammielis
248
25k
How GitHub (no longer) Works
holman
305
140k
GraphQLの誤解/rethinking-graphql
sonatard
55
9.3k
Product Roadmaps are Hard
iamctodd
45
9.7k
KATA
mclloyd
16
12k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
Embracing the Ebb and Flow
colly
80
4.2k
Designing for Performance
lara
602
67k
Transcript
υϝΠϯۦಈઃܭ ษڧձ Takuma Yamamoto ʙ ΤϯςΟςΟฤ ʙ
BIOGRAPHY ͋ͳͨ୭Ͱ͔͢ʁ 5BLVNB:BNBNPUP 8PSLBUTOBQNF 'SPN.JZB[BLJ 4/4 झຯ ɾɹɹIUUQTHJUIVCDPNUBNBHPLFSBO ɾɹɹIUUQTUXJUUFSDPNZBNBUBLV ɾɹɹIUUQTRJJUBDPNUBNBHPLFSBO
ɾɹɹIUUQT[FOOEFWUBNBHPLFSBO ɾ͓ͭ ɾαφ ɾΞχϝ ɾɹɹIUUQTOPUFDPNUBNBHPLFSBO ࠷͍ۙͬͯΔ͜ͱ ɾΤϯδχΞ࠾༻શൠ ɾ-BNCEBΛͬͨ$3.ͷ࣮
INTRODUCTION Ҿ͖ଓ͖͜ͷຊΛࢀߟʹ͍ͯ͠·͢ ࠳ંͨ͠%%%Λࠓ͔ͦͬ͜͠ΓֶͿͨΊɺ։ൃऀʹͱͬͯ༏͍͠ೖॻͰ͋ΔʮυϝΠϯۦಈ ઃܭೖʯΛҾ͖ଓ͖ࢀߟʹ͍ͯ͠·͢ɻ
INTRODUCTION υϝΠϯϞσϧ͔Β࣮ʹམͱ͠ࠐΉ෦ʹϑΥʔΧε վΊͯͷઆ໌ʹͳΓ·͕͢ɺ͜ͷษڧձͰ։ൃऀʹͱͬͯཧղ͍͢͠lϞσϦϯάͨ֓͠೦Λ࣮ ʹམͱ͠ࠐΉͨΊͷύλʔϯzʹϑΥʔΧε͍ͯ͠·͢ɻ αϯϓϧίʔυͳͲҰॹʹڞ༗͠ͳ͕ΒਐΊΔͷͰɺͥͻΠϝʔδΛΒ·ͤͯɺۀʹ׆͔ͤͦ͏ ͳ෦Λ୳͍͚ͯͨͩ͠Εͱࢥ͍·͢ʂ υϝΠϯͷ֓೦ υϝΠϯϞσϧ υϝΠϯ ΦϒδΣΫτ
͜͜ʹूத
Previous Review લճͷৼΓฦΓ
REVIEW “” ͕࣋ͭੑ࣭ ΦϒδΣΫτͦͷ໊ͷ௨Γɺzzͱͯ͠ͷੑ࣭Λ࣋ͭΦϒδΣΫτͰͨ͠ɻͦͯ͠ɺzz͕࣋ͬ ͍ͯΔੑ࣭ͱͯ͠ɺҎԼͷΑ͏ͳͷ͕ڍ͛ΒΕ͍ͯ·ͨ͠ɻ ɾෆมͰ͋Δ ɾަ͕ՄೳͰ͋Δ ɾՁੑʹΑͬͯൺֱ͞ΕΔ
REVIEW ΦϒδΣΫτΛ༻͢ΔϝϦοτ ϓϦϛςΟϒͳ͚ͩͰγεςϜΛߏங͢ΔͷͰͳ͘ɺదͳՕॴͰΦϒδΣΫτΛར༻࣮ͯ͠ ͢Δ͜ͱͷϝϦοτʹ͍ͭͯɺҎԼͷΑ͏ͳઆ໌Λ͞Ε͍ͯ·ͨ͠ɻ ɾදݱྗΛ૿͢ ɾෆਖ਼ͳΛଘࡏͤ͞ͳ͍ ɾޡͬͨೖΛ͙ ɾϩδοΫͷࢄࡏΛ͙
INTRODUCTION ࠓͷࡐ “ΤϯςΟςΟ” Ͱ͢ ࠓΦϒδΣΫτͱਅٯͷΑ͏ͳੑ࣭Λ࣋ͭlΤϯςΟςΟzͱ͍͏υϝΠϯΦϒδΣΫτʹͭ ͍ͯ͠·͢ɻ ΦϒδΣΫτ ΤϯςΟςΟ ˞&3ਤΦϒδΣΫτؔϚοϐϯάͰग़ͯ͘ΔΤϯςΟςΟͱҟͳΔ֓೦ͳͷͰҙ⚠
What are the properties of “Entity”? ͦͦ “ΤϯςΟςΟ” ͕࣋ͭੑ࣭ͱԿ͔
LESSON “” ͱਅٯͷΑ͏ͳੑ࣭Λ࣋ͭ લճհͨ͠ΦϒδΣΫτͱҧ͍ɺΤϯςΟςΟҎԼͷΑ͏ͳੑ࣭Λ࣋ͭͱ͞Ε͍ͯ·͢ɻ ͔͜͜Β্هͷੑ࣭ʹ͍ͭͯɺͻͱͭͣͭ۷ΓԼ͛ɺΤϯςΟςΟʹֶ͍ͭͯΜͰ͍͖·͢ɻ ɾՄมͰ͋Δ ɾಉ͡ଐੑͰ͋ͬͯ۠ผ͞ΕΔ ɾಉҰੑΛͭ
How are the properties represented in Entity? ͦͷੑ࣭ΛΤϯςΟςΟͰͲ͏දݱ͢Δ͔
LESSON ΤϯςΟςΟͷੑ࣭ “ՄมͰ͋Δ” ࢲͨͪਓؒͷlzlମॏzͱ͍ͬͨଐੑ͕มԽ͢Δͷͱಉ͡Α͏ʹɺΤϯςΟςΟͷଐੑมԽ ͢Δ͜ͱ͕ڐ༰͞Ε͍ͯ·͢ɻ ˞ՄมͳΦϒδΣΫτجຊతʹհͳଘࡏͰ͋ΔͨΊɺෆมͷ··ͰΑ͍ͷෆมʹ͖͢⚠ ͷมԽ ମॏͷมԽ
LESSON ΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠ʁ Ϣʔβʔ໊Λมߋ͍ͨ͠߹ɺzΤϯςΟςΟzͱͯ͠ਖ਼͍࣮͠ͲͪΒͰ͠ΐ͏͔ʁ B A
LESSON ΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠ʁ ΦϒδΣΫτ͕࣋ͭଐੑΛϝιουΛ௨ͯ͡มߋ͢Δ"͕ɺΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠Ͱ͢ɻ B A ΤϯςΟςΟͰͷ࣮ྫ ΦϒδΣΫτͰͷ࣮ྫ
LESSON ΤϯςΟςΟͷੑ࣭ “ಉ͡ଐੑͰ͋ͬͯ۠ผ͞ΕΔ” ΦϒδΣΫτଐੑ͕ಉ͡Ͱ͋Εಉ͡ͷͱͯ͠ѻΘΕ·͕ͨ͠ɺΤϯςΟςΟଐੑ͕ಉ͡Ͱ ͋ͬͯ۠ผ͞Ε·͢ɻਓؒͰ͍͏ಉಉ໊ΛΠϝʔδͯ͠Β͑Δͱཧղ͍͢͠ͱࢥ͍·͢ɻ ٿք ΞΠυϧք lUBLV̋̋LJNV̋̋z lUBLV̋̋LJNV̋̋z
LESSON ΤϯςΟςΟͷੑ࣭ ”ಉҰੑΛͭ” ͰγεςϜ্ಉ͡ଐੑͰ͋ΔΦϒδΣΫτΛͲͷΑ͏ʹͯ۠͠ผ͢Δͷ͔ʁͦ͜Ͱ༻͞ΕΔͷ͕ ࣝผࢠͰ͢ɻ ࣝผࢠΛར༻͢Δ͜ͱͰɺϢʔβʔ໊Λมߋͨ͠ͱͯ͠ɺมߋલޙͷϢʔβʔ͕ಉҰͰ͋Δͱ͍͏ ͜ͱΛࣝผ͢Δ͜ͱ͕Ͱ͖·͢ɻ lUBLVNBZBNBNPUPz lUBNBHPLFSBOz
LESSON ΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠ʁ ՁੑͰͳ͘ɺಉҰੑͰ۠ผ͞ΕΔΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠ͲΕͰ͠ΐ͏ʁ B A
LESSON ΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠ʁ ࢯ໊ଐੑͰͳ͘ɺࣝผࢠͰൺֱΛ͍ͯ͠Δ#͕ɺΤϯςΟςΟͱͯ͠ਖ਼͍࣮͠Ͱ͢ɻ B A
The bene fi ts of using Domain Objects υϝΠϯΦϒδΣΫτΛ༻͢ΔϝϦοτͱ
LESSON υϝΠϯΦϒδΣΫτΛ༻͢ΔϝϦοτʹ͍ͭͯ ͓ޓ͍ʹҟͳΔੑ࣭Λ࣋ͭlΦϒδΣΫτzͱlΤϯςΟςΟzɺ͍ͣΕυϝΠϯΦϒδΣΫτ ͰɺҎԼͷΑ͏ͳϝϦοτΛ࣋ͪ·͢ɻ ͔͜͜Β্هͷϝϦοτʹ͍ͭͯհ͠·͢ɻదͳ໘ʹग़͘Θͨ͠ͱ͖ɺlΦϒδΣΫτz lΤϯςΟςΟzͰ࣮͍ͨ͠ͱࢥͬͯΒ͑Δͱخ͍͠Ͱ͢ɻ ɾίʔυͷυΩϡϝϯτੑ͕ߴ·Δ ɾυϝΠϯʹ͓͚ΔมߋΛίʔυʹ͑͘͢͢Δ
LESSON ϝϦοτ “ίʔυͷυΩϡϝϯτੑ͕ߴ·Δ” લճհ͠·͕ͨ͠ɺࡏݿཧʹ͓͍ͯίʔυΛҎԼͷΑ͏ʹϓϦϛςΟϒͳͰཧ͍ͯ͠ Δͱɺίʔυ͕ͲͷΑ͏ͳϩδοΫͰઃܭ͞Ε͍ͯΔ͔ಡΈऔΕ·ͤΜɻ ҰํͰҎԼͷΑ͏ʹ࣮͢Δͱɺ࣮ʮΧςΰϦɾ࿈൪ɾϨϏδϣϯʯͱ͍͏ߏͰίʔυ͕ઃ ܭ͞Ε͍ͯΔ͜ͱ͕໌֬ʹͳΓɺυΩϡϝϯτੑ͕ߴ·Γ·͢ɻ
LESSON ϝϦοτ “υϝΠϯʹ͓͚ΔมߋΛίʔυʹ͑͘͢͢Δ” ίʔυʹlΧςΰϦʔͷ෦͕จࣈͰߏ͞ΕΔzͱ͍͏ϧʔϧ͕͋Δͱ͠·͢ɻͦͷϧʔϧ ΛνΣοΫ͢ΔॲཧΛυϝΠϯΦϒδΣΫτΛ༻ͤͣɺҎԼͷΑ͏ʹ࣮͍ͯͨ͠ͱ͠·͢ɻ γεςϜΛ։ൃ্͍ͯ͘͠Ͱɺίʔυ͕ೖྗ͞ΕΔՕॴ͕૿͑ΔͱɺͦΕʹ্͍هͷॲཧ૿ ͑·͢ɻͦͷঢ়گͰΧςΰϦʔͷจࣈΛzจࣈzͰߏ͢ΔΑ͏มߋͨ͠ΒͲ͏ͳΔͰ͠ΐ͏ʁ ϧʔϧมߋΛదԠ͢ΔՕॴΛ୳͠ग़͢ͷ͕ͱͯେมͳͷ໌നͩͱࢥ͍·͢ɻ
LESSON ͦͷॲཧΛlΦϒδΣΫτzͱͯ͠Ϋϥεͷதʹด͡ࠐΊɺඞͣlΦϒδΣΫτzΛ௨ͯ͠ॲཧ͠ ͯ͠·͑ɺϧʔϧมߋ͕͋ͬͨͱ͖ʹ͙͢ʹίʔυʹద༻͢Δ͜ͱ͕Ͱ͖·͢ɻ ϝϦοτ “υϝΠϯʹ͓͚ΔมߋΛίʔυʹ͑͘͢͢Δ”
How do we set the criteria? ΤϯςΟςΟͱ࣮͖ͯ͢͠ج४ʁ
LESSON ΦϒδΣΫτͱΤϯςΟςΟͰ໎ͬͨΒ lΦϒδΣΫτzͱlΤϯςΟςΟzʹࣅ௨ͬͨ෦͕͋ΔͨΊɺͲͪΒͰ࣮͢Δ͖͔ج४͕ ͋Δͱخ͍͠Ͱ͢ΑͶɻ͜ͷຊͰҎԼͷج४͕հ͞Ε͍ͯ·͢ɻ ϥΠϑαΠΫϧ࿈ଓੑΛ͔࣋ͭ ྫ ϢʔβʔΞΧϯτొͰ࡞͞Εɺར༻͍ͯ͘͠͏ͪʹঃʑʹΞΫηε͕ݮ͍ͬͯ ͖ɺϢʔβʔ͕আ͞ΕΔɻ·͞ʹϥΠϑϥΠΫϧΛ࣋ͪɺ࿈ଓੑͷ͋Δ֓೦ɻ
LESSON γεςϜͷίϯςΩετ࣍ୈͰมΘΔ ಉ͡ରͰ͋ͬͨͱͯ͠ɺϥΠϑαΠΫϧΛ࣋ͨͤΔ͖͔Ͳ͏͔ɺγεςϜͷίϯςΩετ ʹΑͬͯҟͳΓ·͢ɻ εφοΫϛʔ ϨγϐαʔϏε ࡐྉ ϨγϐΛߏ͢ΔϥΠϑαΠΫϧ࣋ͨͳ͍ύʔπ ͞Εɺʹಧ͖ɺظݶ·Ͱʹ༻͢Δ ΦϒδΣΫτͰͷ࣮͕ద
ΤϯςΟςΟͰͷ࣮͕ద ͱ͍ͬͨϥΠϑϥΠΫϧΛ࣋ͭ
Where could we potentially use Entity? εφοΫϛʔͩͱɺͲ͜ΛΤϯςΟςΟͰ࣮Ͱ͖ͦ͏͔ʁ
GitHub Ͱ୳ͯ͠Έ·͠ΐ͏ʂ
Summary ΤϯςΟςΟʹ͍ͭͯ·ͱΊΔͱ…
SUMMARY ΤϯςΟςΟʹֶ͍ͭͯΜͰΈͯ… ɾΤϯςΟςΟɺҎԼʹࣔ͢Α͏ͳzzͷੑ࣭Λ࣋ͭ ɹɾՄมͰ͋Δɺಉ͡ଐੑͰ͋ͬͯ۠ผ͞ΕΔɺಉҰੑΛͭ ɾυϝΠϯΦϒδΣΫτΛͬͨγεςϜ։ൃɺҎԼʹࣔ͢Α͏ͳϝϦοτΛ࣋ͭ ɹɾίʔυͷυΩϡϝϯτੑ͕ߴ·ΔɺυϝΠϯʹ͓͚ΔมߋΛίʔυʹ͑͘͢͢Δ ɾΦϒδΣΫτͰͳ͘ɺΤϯςΟςΟͰ࣮͢Δج४ ɹɾϥΠϑαΠΫϧ࿈ଓੑΛ͔࣋ͭͲ͏͔
Recruitment ΤϯδχΞืूதͰ͢ʂ
RECRUITMENT We are Hiring! εφοΫϛʔͰɺʮ͓ͭͱɺੈքΛ໘ന ͘ʯ͍ͯ͘͠ɺͦΜͳ׆ಈΛࣄͱͯ͠औΓ Έ͍ͨΤϯδχΞΛืू͍ͯ͠·͢ɻ IUUQTUFBNTOBRNFDPN εφοΫϛʔ࠾༻