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
71
ドメイン駆動設計 勉強会 〜 エンティティ編 〜 / 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
52
スナックミーの開発はワクワクだらけ! / 2024-04-05
tamago3keran
0
130
アウトプットのハードルを下げた! / 2024-03-25
tamago3keran
0
360
ドメイン駆動設計 勉強会 〜 ドメインサービス編 〜 / 2024-03-05
tamago3keran
0
65
ドメイン駆動設計 勉強会 〜 値オブジェクト編 〜 / 2024-02-06
tamago3keran
1
1.3k
スカウト返信率を倍にするためにやったこと / 2024-01-29
tamago3keran
2
950
Rails 経験者が FastAPI 本を読んで感じたこと / 2023-11-28
tamago3keran
0
1.2k
アウトプットのモチベーションはみんな違ってみんな良い! / 2023-10-06
tamago3keran
0
1.1k
PC が変わっても使い慣れた Neovim で すぐに開発を始める仕組み / 2023-07-25
tamago3keran
1
1k
Other Decks in Programming
See All in Programming
Click-free releases & the making of a CLI app
oheyadam
2
110
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
最新TCAキャッチアップ
0si43
0
140
Realtime API 入門
riofujimon
0
150
OnlineTestConf: Test Automation Friend or Foe
maaretp
0
110
よくできたテンプレート言語として TypeScript + JSX を利用する試み / Using TypeScript + JSX outside of Web Frontend #TSKaigiKansai
izumin5210
6
1.7k
受け取る人から提供する人になるということ
little_rubyist
0
230
Hotwire or React? ~アフタートーク・本編に含めなかった話~ / Hotwire or React? after talk
harunatsujita
1
120
どうして僕の作ったクラスが手続き型と言われなきゃいけないんですか
akikogoto
1
120
Jakarta Concurrencyによる並行処理プログラミングの始め方 (JJUG CCC 2024 Fall)
tnagao7
1
290
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
Jakarta EE meets AI
ivargrimstad
0
590
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
For a Future-Friendly Web
brad_frost
175
9.4k
Fireside Chat
paigeccino
34
3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Ruby is Unlike a Banana
tanoku
97
11k
Become a Pro
speakerdeck
PRO
25
5k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
410
GraphQLとの向き合い方2022年版
quramy
43
13k
Gamification - CAS2011
davidbonilla
80
5k
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 εφοΫϛʔ࠾༻