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
1.6k
Laravelで共通処理ってどうやるの?
mashirou1234
November 29, 2022
Tweet
Share
More Decks by mashirou1234
See All by mashirou1234
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
420
デザインパターンを掘り下げよう ~Singleton Pattern 編~
mashirou1234
3
670
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
1.4k
改めて見返す「Laravel」とは
mashirou1234
0
350
PHPでドメイン駆動設計を浸透するためにやったことと現状
mashirou1234
0
1.1k
AWS_Lambda_にCustom_Runtimeで_PHPを導入したシステムに改修を加えて_UT導入まで行った話.pdf
mashirou1234
0
570
設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい.pdf
mashirou1234
0
1.5k
Factfullnessは思考ジャックできる良ツールな件について
mashirou1234
0
210
設計忘れからやってはいけない対症療法
mashirou1234
1
740
Other Decks in Technology
See All in Technology
東京Ruby会議12 Ruby と Rust と私 / Tokyo RubyKaigi 12 Ruby, Rust and me
eagletmt
3
870
My small contributions - Fujiwara Tech Conference 2025
ijin
0
1.4k
【NGK2025S】動物園(PINTO_model_zoo)に遊びに行こう
kazuhitotakahashi
0
220
I could be Wrong!! - Learning from Agile Experts
kawaguti
PRO
8
3.4k
WantedlyでのKotlin Multiplatformの導入と課題 / Kotlin Multiplatform Implementation and Challenges at Wantedly
kubode
0
240
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
110
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
Git scrapingで始める継続的なデータ追跡 / Git Scraping
ohbarye
5
490
新しいスケーリング則と学習理論
taiji_suzuki
10
3.8k
30分でわかる「リスクから学ぶKubernetesコンテナセキュリティ」/30min-k8s-container-sec
mochizuki875
3
440
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
140
CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-mentor
tomoki10
0
210
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
113
50k
How to Ace a Technical Interview
jacobian
276
23k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Adopting Sorbet at Scale
ufuk
74
9.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Unsuck your backbone
ammeep
669
57k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
180
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