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
Eloquentに別れを告げるタイミングについて考えた
Search
y_ahiru
May 22, 2019
Programming
2
2k
Eloquentに別れを告げるタイミングについて考えた
考えました。
y_ahiru
May 22, 2019
Tweet
Share
More Decks by y_ahiru
See All by y_ahiru
恣意性から考える、変更に強いモデルの作り方
yahiru
1
760
責務と認知負荷を整える! 抽象レベルを意識した関心の分離
yahiru
10
2.1k
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
930
フロントエンドエンジニアも知っておきたい HTTP/3 で変わること
yahiru
16
13k
ゆるふわCQRS入門
yahiru
2
660
設計におけるソリューションドメイン
yahiru
3
1.7k
PHPで始めるGitHub Actions
yahiru
1
770
5ヶ月でカバレッジを20%から90%にあげた話
yahiru
2
6.7k
入門ミューテーションテスト/ A bigginer's guide to Mutation testing
yahiru
0
1.5k
Other Decks in Programming
See All in Programming
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
1
210
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
1
100
エンジニア向け採用ピッチ資料
inusan
0
140
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
550
C++20 射影変換
faithandbrave
0
500
無関心の谷
kanayannet
0
180
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
390
GraphRAGの仕組みまるわかり
tosuri13
7
450
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
290
エラーって何種類あるの?
kajitack
5
270
TypeScript LSP の今までとこれから
quramy
1
510
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Unsuck your backbone
ammeep
671
58k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Building Adaptive Systems
keathley
43
2.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
660
The Cost Of JavaScript in 2023
addyosmani
51
8.4k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
A Tale of Four Properties
chriscoyier
159
23k
Transcript
Laravel Meetup Tokyo Vol.12 ٢ా͋ͻΔ (@strtyuu) &MPRVFOUʹผΕΛࠂ͛Δ λΠϛϯάʹ͍ͭͯߟ͑ͨ
ࣗݾհ ٢ా͋ͻΔ !TUSUZVV τΡΪϟολʔגࣜձࣾ 4PGUXBSF&OHJOFFS
$VSBUJPO$PNNVOJDBUJPO1MBUGPSN IUUQTUPHFUUFSDPN ·ͱΊΑ͏ɺ͋ͭ·Ζ͏
&MPRVFOU Active Record Domain Model ORM × ×
03. ɾ%#͔Βऔಘͨ͠ΛΦϒδΣΫτʹม͢Δͷ
"DUJWF3FDPSE ɾςʔϒϧɾϏϡʔͷεΩʔϚͱີ݁߹ͨ͠ϓϩύςΟ ɾϨίʔυΛΠϯελϯεԽͯ͠ৼΔ͍Λ࣋ͨͤΔ ɾυϝΠϯϞσϧͷҰछ ɾ%#ΞΫηεͷΧϓηϧԽ
%PNBJO.PEFM ɾυϝΠϯʹଘࡏ͢Δ֓೦ΛΫϥεԽͨ͠ͷ ɾυϝΠϯʹযΛͯͨɺ७ਮͳϩδοΫͷू·Γ
&MPRVFOUͷྑ͍ॴ ɾߴػೳʂ ɾָʹ։ൃ͕Ͱ͖Δʂ ɾศརͳϥΠϒϥϦͨ͘͞Μʂ
&MPRVFOUͷਏͦ͏ͳॴ ɾΫΤϦΛ࠷దԽ͍ͨ͠ͱ͖ ɾ3FQPTJUPSZύλʔϯͱͷ૬ੑ͕ඍົʁ ɾϑΝοτʹͳΓ͕ͪ ɾϞσϧ͕ςʔϒϧߏͱҰக͠ͳ͍ͱ͖
ΫΤϦͷ࠷దԽ
4&-&$5 '30.AQPTUTA 8)&3&AQPTUTAAJEA -*.*5 4&-&$5 '30.ADPNNFOUTA
8)&3& ADPNNFOUTAAQPTU@JEA "/%ADPNNFOUTAAQPTU@JEA*4/05/6--
4&-&$5 '30.AVTFSTA 8)&3&&9*454 4&-&$5 '30.AQPTUTA
8)&3& AVTFSTAAJEAAQPTUTAAVTFS@JEA
ɾ͍ΫΤϦ͕ు͔Εͯਏ͍ ಀ͛ಓ͕͋ΔͷͰɺผΕΛࠂ͛Δཧ༝ʹͳ Γʹ͍͘ʁ ɾ͕ڐ༰ൣғͰ͋Εແࢹ͢Δ͜ͱ ɾΫϦςΟΧϧͳॴ͚ͩී௨ʹ42-Λॻ͍ͯ ޡຐԽ͢ͱ͔ग़དྷΔ
Repositoryύλʔϯͱͷ ૬ੑ͕ඍົʁ
3FQPTJUPSZύλʔϯ ɾӬଓԽઌͱͷΓͱΓΛӅณ͢Δ
͑ͬ
ɾ&MPRVFOUͰ%#ΞΫηε͕ग़དྷΔ͍ͤͰɺ ɹ3FQPTJUPSZͷ֎ͰΫΤϦΛॻ͍ͯ͠·͏ &MPRVFOUʹผΕΛࠂ͛ΔΑΓɺίʔυϨ Ϗϡʔͱ͔ͰೝࣝΛ߹Θͤͨํ͕ྑͦ͞͏ ɾ&MPRVFOUͷ͍ͤͱ͍͏͔ɺ࣮ऀͷ
ϑΝοτʹͳΓ͕ͪ
ΈΜͳ͕&MPRVFOUʹΒͤͯ ͦ͏ͳ͜ͱ ɾ%#ͱͷΓͱΓ ɾଞͷ&MPRVFOUͱͷϦϨʔγϣϯ ɾυϝΠϯϞσϧͱͯ͠ͷৼΔ͍
&MPRVFOUΛϑϧ׆༻ͯ͠Δਓ ͕ͬͯͦ͏ͳ͜ͱ ɾϓϩύςΟͷόϦσʔγϣϯ ɾϓϨθϯςʔγϣϯϩδοΫ
※Laravel Boilerplate - https://github.com/rappasoft/laravel-5-boilerplate/blob/master/app/ Models/Auth/Traits/Attribute/UserAttribute.php ϓϩύςΟͷόϦσʔγϣϯ
※Laravel Boilerplate - https://github.com/rappasoft/laravel-5-boilerplate/blob/master/app/ Models/Auth/Traits/Attribute/UserAttribute.php ϓϨθϯςʔγϣϯϩδοΫ
ɾ&MPRVFOU͕ศར͗͢ΔͨΊʹɺ͋Ε͜ Ε&MPRVFOUʹ࣮͢Δ͜ͱͰ'BUʹͳͬͯ ͠·͏͜ͱ͕͋Δ &MPRVFOUʹผΕΛࠂ͛ͳͯ͘ɺ͝ͱ ʹΫϥεΛ͚Εই༊͑Δͣ ɾ&MPRVFOUͷ͍ͤͱ͍͏͔ɺΫϥεઃܭͷ
ςʔϒϧߏͱҰக͠ͳ͍ Ϟσϧ
" # $ % & ςʔϒϧA ςʔϒϧB ͤͳύλʔϯ
Model A Model B
" # $ % & ςʔϒϧA ςʔϒϧB ਏ͘ͳΔύλʔϯ
Model A × ×
ͳͥਏ͘ͳΔͷ͔ ɾ"DUJWF3FDPSEςʔϒϧɾϏϡʔͱର͕લ ఏͷσβΠϯύλʔϯ ɾKPJOલఏͷϝιου͕ଘࡏͨ͠Γ͢Δͱਏ͞ͷ ࢝·Γ ɾۀϩδοΫςʔϒϧߏͱແؔʹมԽ ͍ͯ͘͠ ɾΦϒδΣΫτϑΝʔετͳઃܭͱ૬ੑ͕ѱ͍
ɾ.Z42-ͷ7*&8*OEFYͷͱ͔͋ΔͷͰʜ
ɾ࠷େͷϝϦοτͰ͋Δ%#ͱີ݁߹ͳ෦ ɺಉ࣌ʹ࠷େͷσϝϦοτʹͳΓ͑Δ ७ਮͳυϝΠϯϞσϧ͕ඞཁʹͳͬͨΒɺ &MPRVFOUͱ͓ผΕ͢Δ߹ਤͳͷ͔͠Εͳ ͍ ٽ ɾ͜Ε&MPRVFOUͷຊ࣭తͳ෦ͱͷ૬ੑ ͷѱ͞
·ͱΊ ɾ͍͍ͩͨͷਏ͞ɺ࣮ͷͰղܾͰ͖Δͱࢥ͏ ɾ࣏҆ͷѱ͍ίʔυΛॻ͔ΕͨΒɺͪΌΜͱϨϏϡʔ Ͱ͍ͯ͜͠͏ ɾΫΤϦͷ࠷దԽ͕͖͔ͭͬͨΒ͓ผΕʹͳΔ͔͠ Εͳ͍͠ɺ·͊ͳΜͱ͔ͳΔ͔͠Εͳ͍ ɾ७ਮͳυϝΠϯϞσϧ͕ཉ͘͠ͳͬͨΒɺଟ͓ผ Ε͠ͳ͖Ό͍͚ͳ͍
ࢀߟࢿྉ ɾπΠολʔϥϯυͷΈͳ͞Μ ɹIUUQTUPHFUUFSDPNMJ ɾΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟύλʔϯ ɹIUUQTXXXBNB[PODPKQEQ ɾ/&5ͷΤϯλʔϓϥΠζΞϓϦέʔγϣϯΞʔΩςΫνϟ ɹIUUQTXXXBNB[PODPKQEQ#;2;+/& ɾ-BSBWFM#PJMFSQMBUF
ɹIUUQTHJUIVCDPNSBQQBTPGUMBSBWFMCPJMFSQMBUF