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
自分のLaravel アプリケーション設計晒す
Search
Kazuhei Arai
July 12, 2017
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自分のLaravel アプリケーション設計晒す
Kazuhei Arai
July 12, 2017
More Decks by Kazuhei Arai
See All by Kazuhei Arai
CTOがプロダクトを管轄して、変わり始めたスクラム開発
kazuhei0108
0
340
Predefined Interfacesを使って便利な独自クラスを作りましょう
kazuhei0108
0
3.2k
LaravelとAWSで_漸進的なプロダクト開発
kazuhei0108
0
170
モックの泥沼から脱却するために、あえてDBにつないでテストしている話
kazuhei0108
4
3.5k
Laravelのエラーハンドリングをカスタマイズする
kazuhei0108
0
520
サービスコンテナの実践的な活用
kazuhei0108
1
1.2k
クラスを使ってLaravelのviewをキレイにする
kazuhei0108
1
1.8k
Composerのstabilityの話
kazuhei0108
0
76
Other Decks in Programming
See All in Programming
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
770
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
240
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
600
act2-costs.pdf
sumedhbala
0
110
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
140
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
0
230
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
継続モナドとリアクティブプログラミング
yukikurage
3
600
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
190
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
150
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
210
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Tell your own story through comics
letsgokoyo
1
990
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Un-Boring Meetings
codingconduct
0
350
How GitHub (no longer) Works
holman
316
150k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
How to Ace a Technical Interview
jacobian
281
24k
Test your architecture with Archunit
thirion
1
2.3k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
!LB[VIFJ !LB[VIFJ@@ ࣗͷ-BSBWFM ΞϓϦέʔγϣϯઃܭࡽ͢ -BSBWFM.FFUVQ5PLZP7PM
!LB[VIFJ ࣗݾհ ߥҪฏ!LB[VIFJ גࣜձࣾ."Ϋϥυ ޒాͷͲϕϯνϟʔ "841)1+BWBTDSJQU4XJGU
!LB[VIFJ ͱ-BSBWFM w ৽͍͠ձࣾʹೖࣾͯ͠৽ن։ൃϓϩδΣΫτΛ͞Εͨ ࠓͷ݄̍ w ΤϯδχΞࣗͻͱΓ σβΠϯ)5.-4$44֎෦
w ։ൃظؒϲ݄ w 1)1ͷܦݧ͕Ұ൪ଟ͔ͬͨͷͰ1)1Ͱ࡞Δ͜ͱʹ w ϑϨʔϜϫʔΫΛௐͨͱ͜Ζ-BSBWFM͕ྑ͛ͩͬͨ͞ Ҏલͷձࣾ ಠࣗ.7$ϑϨʔϜϫʔΫͩͬͨ
!LB[VIFJ ͱ-BSBWFM w ͳΜ͔Έॻ͘ͱڭ͑ͯ͘ΕΔਓ͕͍Δ
!LB[VIFJ
!LB[VIFJ -5ಈػ w -BSBWFMΛ͏ͷॳΊͯ w -BSBWFM͕ࣗ༝͗ͯ͢࠷ॳͲ͏͍͏;͏ʹΜͰ͍͚ྑ͍͔͔Β ͳ͔ͬͨ w ͍ΖΜͳਓͷຊϒϩάಡΜͰࢀߟʹͨ͠ w
ײँͷҹʹͤΊͯࣗͷͭࡽͦ͏ͱࢥͬͨ w ͬͱ͍ΖΜͳਓͷઃܭΓ͍ͨ ࡽͯ͘͠Ε
!LB[VIFJ ใݯ w +BWBݴޠͰֶͿσβΠϯύλʔϯೖ w ΤϯλʔϓϥΠζɾΞϓϦέʔγϣϯɾΞʔΩςΫνϟύλʔ ϯ w ΤϦοΫɾΤϰΝϯεͷυϝΠϯۦಈઃܭ w
-BSBWFMϦϑΝϨϯε w IUUQTSFBEPVCMFDPN
ϨΠϠʔ͚
!LB[VIFJ -BSBWFMͷجຊ 3FRVFTU ϛυϧΣΞ 3PVUFS ίϯτϩʔϥʔ ϏδωεϩδοΫ Ϗϡʔ 3FTQPOTF
!LB[VIFJ -BSBWFMͷجຊ 3FRVFTU ϛυϧΣΞ 3PVUFS ίϯτϩʔϥʔ ϏδωεϩδοΫ Ϗϡʔ 3FTQPOTF
!LB[VIFJ ϨΠϠʔ͚ ϦΫΤετ ίϯτϩʔϥʔ ΞϓϦέʔγϣϯ αʔϏε υϝΠϯ αʔϏε ΤϯςΟςΟ ϦϙδτϦʔ
%BP ίϯόʔλʔ Ϗϡʔ ΞϓϦέʔγϣϯ υϝΠϯ Πϯϑϥ
!LB[VIFJ ϨΠϠʔ͚ ϦΫΤετ ίϯτϩʔϥʔ ΞϓϦέʔγϣϯ αʔϏε υϝΠϯ αʔϏε ϦϙδτϦʔ %BP
ΞϓϦέʔγϣϯ υϝΠϯ Πϯϑϥ 3FRVFTUܕ υϝΠϯͷܕ QSJNJUJWFͳܕ QSJNJUJWFͳܕ
!LB[VIFJ ϨΠϠʔ͚ ίϯτϩʔϥʔ ΞϓϦέʔγϣϯ αʔϏε υϝΠϯ αʔϏε ΤϯςΟςΟ ϦϙδτϦʔ %BP
ίϯόʔλʔ Ϗϡʔ ΞϓϦέʔγϣϯ υϝΠϯ Πϯϑϥ TUE$MBTT υϝΠϯͷܕ 2VFSZ#VJMEFSར༻
Ϋϥε͚
!LB[VIFJ Ϋϥε͚ 6TFS$POUSPMMFSVQEBUF 6TFS6QEBUF3FRVFTUSFRVFTU 3FHJTUFS4FSWJDFVQEBUF SFRVFTU ΞϓϦέʔγϣϯ υϝΠϯ Πϯϑϥ %PNBJOa6TFSa3FHJTUFS4FSWJDFSFHJTUFS
6TFS*EVTFS*E BSSBZQBSBN %PNBJOa6TFSa6TFS3FQPTJUPSZ*OUFSGBDFVQEBUF 6TFS*EVTFS*E BSSBZQBSBN 6TFS %PNBJOa6TFSa6TFS3FQPTJUPSZVQEBUF 6TFS*EVTFS*E BSSBZQBSBN 6TFS *OGSBa6TFSa6TFS%BPVQEBUF JOUVTFS*E BSSBZEBUB TUE$MBTT %PNBJOa6TFSa6TFS$POWFSUFSUP&OUJUZ aTUE$MBTTVTFS 6TFS ࣮ %PNBJOa6TFSa6TFS
σΟϨΫτϦ͚
!LB[VIFJ σΟϨΫτϦ͚ $PNQPTFSKTPO w %PNBJOɺ*OGSBΛՃ
!LB[VIFJ σΟϨΫτϦ͚ "QQ w )UUQҎԼʹ4FSWJDFTΛՃ
!LB[VIFJ σΟϨΫτϦ͚ %PNBJO w EPNBJOΛಠࣗͰՃ w σΟϨΫτϦʹΤϯςΟςΟͱ7BMVF0CKFDUͱϦϙδτϦͱ ίϯόʔλʔΛೖΕ͍ͯΔ
Ωϟογϡ
!LB[VIFJ Ωϟογϡ 6TFS$POUSPMMFSVQEBUF 6TFS6QEBUF3FRVFTUSFRVFTU 3FHJTUFS4FSWJDFVQEBUF SFRVFTU ΞϓϦέʔγϣϯ υϝΠϯ Πϯϑϥ %PNBJOa6TFSa3FHJTUFS4FSWJDFSFHJTUFS
6TFS*EVTFS*E BSSBZQBSBN %PNBJOa6TFSa6TFS3FQPTJUPSZ*OUFSGBDFVQEBUF 6TFS*EVTFS*E BSSBZQBSBN 6TFS %PNBJOa6TFSa6TFS3FQPTJUPSZVQEBUF 6TFS*EVTFS*E BSSBZQBSBN 6TFS *OGSBa6TFSa$BDIF6TFS%BPVQEBUF JOUVTFS*E BSSBZEBUB TUE$MBTT %PNBJOa6TFSa6TFS$POWFSUFSUP&OUJUZ aTUE$MBTTVTFS 6TFS ࣮ %PNBJOa6TFSa6TFS
!LB[VIFJ Ωϟογϡ w %BPͰTUE$MBTTΛΩϟογϡ͢Δ w औಘͨ͠TUE$MBTTΛNFNDBDIFͳͲʹೖΕͯҰఆ࣌ؒDBDIF w ϝϦοτ෭࡞༻͕΄΅ͳ͍ DSFBUF VQEBUF
EFMFUF࣌ʹDBDIFΛফ ͤྑ͍
!LB[VIFJ Ωϟογϡ <?php namespace Infra\Database\Dao\Adviser; use Illuminate\Cache\Repository; class CachedAdviserIndustryCategoryDao extends
AdviserIndustryCategoryDao { const CACHE_TIME = 360; private $cacheRepository; public function __construct(Repository $cacheRepository) { $this->cacheRepository = $cacheRepository; } public function getList(int $userId) { $key = $this->getKey($userId); if ($this->cacheRepository->has($key)) { return $this->cacheRepository->get($key); } $result = parent::getList($userId); $this->cacheRepository->add($key, $result, self::CACHE_TIME); return $result; } public function create(int $userId, int $industryCategory) { $this->cacheRepository->forget($this->getKey($userId)); return parent::create($userId, $industryCategory); } private function getKey(int $userId): string { return __CLASS__ . "getList" . $userId; } }
·ͱΊ
!LB[VIFJ ࡶײ w $POUSPMMFS͔Β3FQPTJUPSZΛݺͼग़͍ͯ͠ΔՕॴͷϧʔϧͮ͘ΓΛ͍ͨ͠ w ࣗͰ%BPͱ$POWFSUFSॻܾ͘ҙ͕ૣ͗ͨ͢ɻ&MPRVFOUΛ͏ͪΐͬͱݕ౼͠ ͯྑ͔ͬͨɻςʔϒϧΛΦϒδΣΫτʹϚοϐϯά͢Δͷ͕ਏ͍ w ࠓඞཁͳ͍͕ΞΫηε͕૿͑ͨΒ3FQPTJUPSZΛTJOHMFUPOʹͯ͠͏Ұ DBDIF͢Δͱྑͦ͞͏
w υϝΠϯͰ݁ߏϓϦϛςΟϒͳܕΛ͍ͬͯΔͷͰɺͬͱͪΌΜͱܕͰ දݱ͍ͨ͠ɻͰେมͦ͏ͩ͠ใΘΕͳͦ͞͏ w ΤϯςΟςΟͷ*%ͷൃ൪Λ%#ͷBVUPJODSFNFOUͰߦ͍ͬͯΔͷͰɺҰ%#ʹ อଘ͠ͳ͍ͱશͳΤϯςΟςΟ͕࡞Εͳ͍ w +PCͱ/PUJpDBUJPOͱ.BJMͷΫϥεͷ͍͚͕͔ͬͯͳͯ͘ແବʹΫϥεॻ ͍ͯΔؾ͕͢Δ
!LB[VIFJ ·ͱΊ w ॳΊͯ-BSBWFMͰΞϓϦέʔγϣϯΛ࡞ͬͨ w -BSBWFMࣗ༝ͳϑϨʔϜϫʔΫͳͷͰ৭ʑࢼͨ͠ w ϒϩάεϥΠυʹ͓ੈʹͳͬͨͷͰࣗࡽ͢ w ͜Ε͔ΒվળΛଓ͚͍ͯ͘
w ϕϯνϟʔͰΤϯδχΞਓ৺ࡉ͍ͷͰ༑ͩͪʹͳ͍ͬͯͩ͘͞