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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuki Kitagawa
May 31, 2019
Programming
0
1.8k
FatControllerからの卒業
Yuki Kitagawa
May 31, 2019
Tweet
Share
More Decks by Yuki Kitagawa
See All by Yuki Kitagawa
DockerでLaravel環境を構築する
tamayan_18
0
320
Other Decks in Programming
See All in Programming
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
130
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
220
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
240
CSC307 Lecture 02
javiergs
PRO
1
780
CSC307 Lecture 08
javiergs
PRO
0
670
CSC307 Lecture 06
javiergs
PRO
0
690
dchart: charts from deck markup
ajstarks
3
990
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
1
100
Fluid Templating in TYPO3 14
s2b
0
130
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.4k
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
Featured
See All Featured
Design in an AI World
tapps
0
140
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
We Are The Robots
honzajavorek
0
160
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
320
[SF Ruby Conf 2025] Rails X
palkan
1
760
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
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ίϯςφͰΠϯελϯεͷΓସ༷͑ͯมߋʹର ԠͰ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ