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
mashirou1234
November 29, 2022
Technology
1
2.1k
Laravelで共通処理ってどうやるの?
mashirou1234
November 29, 2022
Tweet
Share
More Decks by mashirou1234
See All by mashirou1234
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
1.4k
デザインパターンを掘り下げよう ~Singleton Pattern 編~
mashirou1234
3
790
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
2.2k
改めて見返す「Laravel」とは
mashirou1234
0
420
PHPでドメイン駆動設計を浸透するためにやったことと現状
mashirou1234
0
1.3k
AWS_Lambda_にCustom_Runtimeで_PHPを導入したシステムに改修を加えて_UT導入まで行った話.pdf
mashirou1234
0
740
設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい.pdf
mashirou1234
0
1.7k
Factfullnessは思考ジャックできる良ツールな件について
mashirou1234
0
330
設計忘れからやってはいけない対症療法
mashirou1234
1
830
Other Decks in Technology
See All in Technology
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
4
450
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1.1k
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
390
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
480
1,000 にも届く AWS Organizations 組織のポリシー運用をちゃんとしたい、という話
kazzpapa3
0
190
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
210
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
Context Engineeringの取り組み
nutslove
0
380
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
プロポーザルに込める段取り八分
shoheimitani
1
670
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
A Soul's Torment
seathinner
5
2.3k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Transcript
で共通処理 どうやるの? 今 更 シ リ ー ズ 第 一
弾
話す内容 1. Laravelでいうところの「共通処理」ってどこ? 2. 共通処理の設計思想(個人観) 3. 共通処理を作りたい! 4. 終わりに 5.
自己紹介(全スキップ予定)
今回お話しないこと • DB接続の共通処理 Laravelはコア部分で共通処理化してあるので割愛 • フロント側処理ではない BladeやVueなどの処理は今回しません。あくまでPHP内部処理です • パッケージ化しません 今回は今更シリーズなのでご了承をば……
Laravelでいうところの 「共通処理」ってどこ?
共通処理に 「しやすい」場所
共通処理に 「しやすい」場所 そもそもLaravelに 共通処理と呼ばれる場所 は無い
共通処理に 「しやすい」場所 そもそもLaravelに 共通処理と呼ばれる場所 は無い https://github.com/laravel/laravel/tree/9.x/app/Http/Middleware
共通処理に 「しやすい」場所 そもそもLaravelに 共通処理と呼ばれる場所 は無い https://github.com/laravel/laravel/blob/9.x/routes/web.php
共通処理に 「しやすい」場所 そもそもLaravelに 共通処理と呼ばれる場所 は無い? https://github.com/laravel/laravel/blob/9.x/routes/api.php
訂正?
routes/api.php
config/sanctum.php
https://laravel.com/docs/9.x/sanctum
Http/Kernel.php
Http/Kernel.php 👆
使ってなかった😇
閑話休題
共通処理に 「しやすい」場所 そもそもLaravelに 共通処理と呼ばれる場所 は無い?
共通処理に 「しやすい」場所 調べてみよう そもそもLaravelに 共通処理と呼ばれる場所 は無い?
超簡単 共通処理が入ってそうな場所の調べ方 routes/web.php
超簡単 共通処理が入ってそうな場所の調べ方
超簡単 共通処理が入ってそうな場所の調べ方
超簡単 共通処理が入ってそうな場所の調べ方 public/index.php
超簡単 共通処理が入ってそうな場所の調べ方 public/index.php
超簡単 共通処理が入ってそうな場所の調べ方 public/index.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Contracts/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Contracts/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 app/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 app/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 app/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Foundation/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Foundation/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Foundation/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Foundation/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 src/Illuminate/Foundation/Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 Http/Kernel.php
超簡単 共通処理が入ってそうな場所の調べ方 Http/Middleware/phpStudyMiddleware.php
超簡単 共通処理が入ってそうな場所の調べ方
超簡単 共通処理が入ってそうな場所の調べ方 確認できた
共通処理に 「しやすい」場所 そもそもLaravelに 共通処理と呼ばれる場所 は無い
共通処理に 「しやすい」場所 • 共通化処理となる素体はあるが、 断定するまでの過程は多い • どのルートから経由しても必ず処 理されるGlobal Middlewareがあ ることが分かる
そもそもLaravelに 共通処理と呼ばれる場所 は無い
Global Middleware http://localhost:8000/4 http://localhost:8000/3 http://localhost:8000/2 http://localhost:8000/1
Global Middleware http://localhost:8000/4 http://localhost:8000/3 http://localhost:8000/2 http://localhost:8000/1 少し前......
超簡単 共通処理が入ってそうな場所の調べ方 Http/Middleware/phpStudyMiddleware.php
Global Middleware
Global Middleware
全体過ぎて扱いづらい
分割したい!
A:Middleware Groups routes/web.php
A:Middleware Groups routes/web.php ちょっと待って
A:Middleware Groups Providers/RouteServiceProvider.php
A:Middleware Groups
A:Middleware Groups 先に呼ばれるのはどっち? Providers/RouteServiceProvider.php routes/web.php
A:Middleware Groups 先に呼ばれるのはどっち? Providers/RouteServiceProvider.php routes/web.php ただの重複処理になる
分割したい! A) Middleware Groupsだとルート単位ではなく route/{web|api}.phpのグルーピング
B:Routes Middleware routes/web.php
↑ここまで1部 ↓これから2部
共通処理の設計思想(自論)
共通処理の設計思想(自論) • Global Middleware • Middleware Group • Route Middleware
共通処理の設計思想(自論) • Global Middleware →アプリケーションに到達必ずやる • Middleware Group →API処理、Web処理に応じた必須処理 •
Route Middleware →各ルートでやりたい処理
共通処理の設計思想(自論) • Global Middleware →Cookie処理とかプロキシ処理とか(もうあるだろとかは言わないで) • Middleware Group →ヘッダ情報一致確認とか暗号の複合化とか •
Route Middleware →Request BodyのValidation等(Controller前にやっておきたいこととか)
共通処理を作りたい! php artisan make:middleware phpStudyRouteMiddleware Let´s Go PHP !!
終わりに • 実際に共通処理を知りたいだけなら 日本語ドキュメントや英語ドキュメントをみるだけで良いと思う • 実際に細かく追ってみると、「もうやってある」が散見されてて 本当に書く内容がみんな安定してなさそうにも思える • 良くてリファクタレベルの内容だけど、最初から書くなら知っておけば無駄な コードは確実に減って良い
• (個人的に)Validationを無限にControllerに書いてるのずっと嫌だったので今 後はMiddlewareで個別対応とかでも楽そう(Route単位で切るのも楽そうだし) • (明らかに使い方違うけど)spatie/laravel-ignitionで追うのは楽 (Xdebugを使えという話はその通りなのでやめよう(致命傷))
自己紹介 柚口ましろう (yu_mashirou) https://mobile.twitter.com/yu_mashirou 株式会社C-Garden 株式会社Gladiolus LAB
EOF