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
120
ドメイン駆動設計 勉強会 〜 エンティティ編 〜 / 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
100
スナックミーの開発はワクワクだらけ! / 2024-04-05
tamago3keran
0
180
アウトプットのハードルを下げた! / 2024-03-25
tamago3keran
0
400
ドメイン駆動設計 勉強会 〜 ドメインサービス編 〜 / 2024-03-05
tamago3keran
0
110
ドメイン駆動設計 勉強会 〜 値オブジェクト編 〜 / 2024-02-06
tamago3keran
1
1.8k
スカウト返信率を倍にするためにやったこと / 2024-01-29
tamago3keran
3
1.1k
Rails 経験者が FastAPI 本を読んで感じたこと / 2023-11-28
tamago3keran
0
1.8k
アウトプットのモチベーションはみんな違ってみんな良い! / 2023-10-06
tamago3keran
0
1.4k
PC が変わっても使い慣れた Neovim で すぐに開発を始める仕組み / 2023-07-25
tamago3keran
1
1.2k
Other Decks in Programming
See All in Programming
CSC509 Lecture 07
javiergs
PRO
0
240
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
190
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
400
Go言語はstack overflowの夢を見るか?
logica0419
0
510
Range on Rails ―「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ
rizap_tech
0
6.7k
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
11
7k
CSC305 Lecture 08
javiergs
PRO
0
270
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
450
Cursorハンズオン実践!
eltociear
2
1.2k
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
360
NixOS + Kubernetesで構築する自宅サーバーのすべて
ichi_h3
0
1.1k
理論と実務のギャップを超える
eycjur
0
170
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
56
14k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
The Invisible Side of Design
smashingmag
302
51k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.9k
How GitHub (no longer) Works
holman
315
140k
Done Done
chrislema
185
16k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Writing Fast Ruby
sferik
629
62k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
880
Designing for humans not robots
tammielis
254
26k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
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 εφοΫϛʔ࠾༻