Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
FatControllerからの卒業
Yuki Kitagawa
May 31, 2019
Programming
0
1.6k
FatControllerからの卒業
Yuki Kitagawa
May 31, 2019
Tweet
Share
More Decks by Yuki Kitagawa
See All by Yuki Kitagawa
DockerでLaravel環境を構築する
tamayan_18
0
160
Other Decks in Programming
See All in Programming
SAM × Dockerでサーバーレス開発が超捗った話
yu_yukk_y
1
370
Edge Side Frontend という新領域
mizchi
23
10k
Dagger, la CI, autrement
guikingone
1
110
Rust、何もわからない...#3
estie
0
160
料理の注文メニューの3D化への挑戦
hideg
0
290
kintone × LINE Bot で餃子検定Botを作った話
naberina
0
330
レビュー駆動学習のススメ_StaPy#83
soogie
0
320
閱讀原始碼 - 再戰十年的 jQuery
eddie
1
300
Amazon SageMakerでImagenを動かして猫画像生成してみた
hotoke_neko
0
110
FargateとAthenaで作る、機械学習システム
nayuts
0
180
Scaling Productivity- How we have improved our dev experience
sockeqwe
1
120
アジャイルで始める データ分析基盤構築
nagano
1
900
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.7k
Bash Introduction
62gerente
598
210k
The World Runs on Bad Software
bkeepers
PRO
57
5.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
316
19k
Fireside Chat
paigeccino
13
1.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
18
40k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
Infographics Made Easy
chrislema
233
17k
The Mythical Team-Month
searls
210
39k
Debugging Ruby Performance
tmm1
65
10k
Transcript
FatController͔Βͷଔۀ
ࣗݾհ • ༤ل • σβΠϯ&ΤϯδχΞϦϯά෦ • όοΫΤϯυϞόΠϧΞϓϦΛ୲ • PHP,
Kotlin, Java, Swi6 • Reactive Extensions͕͖
εϥΠυʹग़ͯ͘Δίʔυʹ͍ͭͯ • ͜ͷεϥΠυͰɺPHPͰઆ໌Λ͍͖ͯ͠· ͢ɻ • ϑϨʔϜϫʔΫɺLaravelΛ࠾༻͍ͯ͠· ͢ɻ
ΞδΣϯμ • MVCͷ͓͞Β͍ • FatControllerͱ • FatControllerΛଔۀ͢Δ3ͭͷϙΠϯτ
MVCͷ͓͞Β͍
MVCͬͯͳΜͧʁʁʁ
MVCΞʔΩςΫνϟͱ • Model View Controllerͷུ • ΞϓϦέʔγϣϯιϑτΣΞͷ෦σʔ λΛɺϢʔβʔ͕ࢀরɾฤू͢Δใ ͔Β͢Δɻ IUUQTKBXJLJQFEJBPSHXJLJ.PEFM@7JFX@$POUSPMMFS
Model • γεςϜͷதͰϏδωεϩδοΫΛ୲ • σʔλͷΞΫηεɺσʔλͷՃΛߦ͏
View • දࣔೖग़ྗͱ͍ͬͨॲཧΛ୲ • Controller͔Βड͚औͬͨσʔλΛදࣔ͢Δ ͨΊͷ
Controller • Ϣʔβʔͷೖྗʹج͖ͮɼModelͱViewΛ੍ޚ • Model͔Βड͚औͬͨσʔλΛViewʹ͢
None
ࠓճͷςʔϚ
FatController͔Βͷଔۀ
FatControllerͱʁ
FatControllerΛॻ͍ͨ ͜ͱͳ͍ਓʙʙʙʁʁ
Θͨ͋͠Γ·͢ɻ
None
ͦ͏ɺ·͞ʹ͜ΜͳΜ
ͬͪΌ͏ؾ࣋ͪΘ͔Δ
༉அͯ͠Δͱ͜͏ͳΔ
ͱʹ͔͘ಈ͘ίʔυॻ͍ ͯͨΒ͜͏ͳͬͪΌͬͨ…
େৎɺΑ͋͘ΔͰ͢ɻ
ͳͥFatControllerʹͳΔͷ͔ • ModelϏδωεϩδοΫͰΔ͖͜ͱ ͕Controllerʹؚ·ΕΔ • Controllerͷ͕େ͖͗͢Δ
FatControllerͷμϝͳͱ͜Ζ •ίʔυ͕͘ͳΓɺՄಡੑ͕͚ܽΔ •ಉ͡Α͏ͳॲཧΛෳͷControllerʹॻ͘͜ͱʹͳΔͷͰɺ࠶ ར༻ੑ͕͚ܽΔ •νʔϜͰ։ൃ͢ΔͱɺແବͳίϯϑϦΫτ͕ى͖Δ •࣮ऀҎ֎͕खΛ͚ΒΕͳ͘ͳΓɺଐਓతͳίʔυʹͳΔ •ϝιουͷ͕େ͖͗ͯ͢ςετΛॻ͘ͷ͕༰қͰͳ͍
αϯϓϧίʔυͷ༷ • jsonΛදࣔ͢Δ͚ͩͷϖʔδΛ࡞Δ • ֎෦APIΛୟ͖ɺjsonΛड͚औΔ • ड͚औͬͨjsonCacheͱͯ͠ɺอଘ͓ͯ͘͠ • ֎෦API͔ΒjsonΛड͚औΓʹࣦഊͨ͠ΒɺCache͔Βऔ Γग़͢
Controllerʹશ෦ॻ͍ͯΈΔ
None
None
None
ʮ݅ʹΑͬͯผͷAPIΛୟ͍ͯ…ʯ Έ͍ͨͳ༷ͷՃ͕͖ͨΒਏ͘ͳ͍ʁ
FatControllerΛଔۀ 3ͭͷϙΠϯτ
3ͭͷϙΠϯτ 1. ϏδωεϩδοΫΛΫϥεʹͯؔ͠৺ࣄΛ ͤ͞Δ 2. ControllerͱϏδωεϩδοΫͷΓऔΓ ΛݮΒ͢ 3. inteIaceΛ࣮ͯ͠มߋʹڧ͘͢Δ
1. ϏδωεϩδοΫΛΫϥε ʹͯؔ͠৺ࣄΛͤ͞Δ
֎෦APIΛୟ͘
None
None
JSONΛCacheʹอଘ Cache͔ΒJSONΛऔΓग़͢
None
None
2. ControllerͱϏδωεϩδοΫͷ ΓऔΓΛݮΒ͢
ControllerͱϏδωεϩδοΫΛ հ͢ΔDataStoreΫϥεΛ࣮͢Δɻ
None
None
None
Ϋϥεͷґଘؔ
3. InteIaceΛఆٛͯ͠ มߋʹڧ͘͢Δ
None
None
None
None
DIίϯςφ
͠Cache͔DBͷͲͪΒ͔ ༷͕ܾ·Βͳ͍͚Ͳɺ։ൃ ࢭΊͳ͍ͰͱݴΘΕͨΒʁ
None
None
ΠϯελϯεΛมߋ͢Δ͚ͩ Ͱɺ༷มߋʹରԠͰ͖Δʂ
·ͱΊ • ؔ৺ࣄΛͯ͠ΫϥεͷઃܭΛ͢Δ • ControllerͱϏδωεϩδοΫͷΓऔΓΛݮΒ͢ • InteIaceΛఆٛͯ͠มߋʹڧ͘͢Δ • DIίϯςφͰΠϯελϯεͷΓସ༷͑ͯมߋʹର ԠͰ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ