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
780
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
730
設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい.pdf
mashirou1234
0
1.6k
Factfullnessは思考ジャックできる良ツールな件について
mashirou1234
0
320
設計忘れからやってはいけない対症療法
mashirou1234
1
820
Other Decks in Technology
See All in Technology
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
0
550
Regional_NAT_Gatewayについて_basicとの違い_試した内容スケールアウト_インについて_IPv6_dual_networkでの使い分けなど.pdf
cloudevcode
1
190
Riverpod3.xで実現する実践的UI実装
fumiyasac0921
2
360
2人で作ったAIダッシュボードが、開発組織の次の一手を照らした話― Cursor × SpecKit × 可視化の実践 ― Qiita AI Summit
noalisaai
1
310
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
0
110
GCASアップデート(202510-202601)
techniczna
0
210
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
66k
「AIでできますか?」から「Agentを作ってみました」へ ~「理論上わかる」と「やってみる」の隔たりを埋める方法
applism118
14
8.8k
EventBridge API Destination × AgentCore Runtimeで実現するLambdaレスなイベント駆動エージェント
har1101
7
280
The Engineer with a Three-Year Cycle - 2
e99h2121
0
210
Digitization部 紹介資料
sansan33
PRO
1
6.7k
AIとともに歩む情報セキュリティ / Information Security with AI
kanny
4
2.8k
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
120
Darren the Foodie - Storyboard
khoart
PRO
2
2.3k
So, you think you're a good person
axbom
PRO
2
1.9k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
66
HDC tutorial
michielstock
1
330
RailsConf 2023
tenderlove
30
1.3k
Building AI with AI
inesmontani
PRO
1
660
Making Projects Easy
brettharned
120
6.6k
4 Signs Your Business is Dying
shpigford
187
22k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
130
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
170
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