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
FatControllerからの卒業
Search
Yuki Kitagawa
May 31, 2019
Programming
0
1.7k
FatControllerからの卒業
Yuki Kitagawa
May 31, 2019
Tweet
Share
More Decks by Yuki Kitagawa
See All by Yuki Kitagawa
DockerでLaravel環境を構築する
tamayan_18
0
310
Other Decks in Programming
See All in Programming
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
150
Goで作る、開発・CI環境
sin392
0
110
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
280
GoのGenericsによるslice操作との付き合い方
syumai
3
690
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
890
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
270
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
240
WindowInsetsだってテストしたい
ryunen344
1
200
git worktree × Claude Code × MCP ~生成AI時代の並列開発フロー~
hisuzuya
1
500
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
110
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
540
XP, Testing and ninja testing
m_seki
3
200
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Automating Front-end Workflow
addyosmani
1370
200k
Why Our Code Smells
bkeepers
PRO
337
57k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Six Lessons from altMBA
skipperchong
28
3.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Unsuck your backbone
ammeep
671
58k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Faster Mobile Websites
deanohume
307
31k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
220
Thoughts on Productivity
jonyablonski
69
4.7k
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ίϯςφͰΠϯελϯεͷΓସ༷͑ͯมߋʹର ԠͰ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ