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.8k
Laravelで共通処理ってどうやるの?
mashirou1234
November 29, 2022
Tweet
Share
More Decks by mashirou1234
See All by mashirou1234
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
990
デザインパターンを掘り下げよう ~Singleton Pattern 編~
mashirou1234
3
760
PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
mashirou1234
1
1.9k
改めて見返す「Laravel」とは
mashirou1234
0
410
PHPでドメイン駆動設計を浸透するためにやったことと現状
mashirou1234
0
1.2k
AWS_Lambda_にCustom_Runtimeで_PHPを導入したシステムに改修を加えて_UT導入まで行った話.pdf
mashirou1234
0
670
設計文化のないチームに文化を広めたが冴えない一手で混沌を招いた話を聞いてほしい.pdf
mashirou1234
0
1.6k
Factfullnessは思考ジャックできる良ツールな件について
mashirou1234
0
280
設計忘れからやってはいけない対症療法
mashirou1234
1
800
Other Decks in Technology
See All in Technology
リーダーになったら未来を語れるようになろう/Speak the Future
sanogemaru
0
320
Adapty_東京AI祭ハッカソン2025ピッチスライド
shinoyamada
0
120
Escaping_the_Kraken_-_October_2025.pdf
mdalmijn
0
150
[2025-09-30] Databricks Genie を利用した分析基盤とデータモデリングの IVRy の現在地
wxyzzz
0
510
【Oracle Cloud ウェビナー】クラウド導入に「専用クラウド」という選択肢、Oracle AlloyとOCI Dedicated Region とは
oracle4engineer
PRO
3
120
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
110
Optuna DashboardにおけるPLaMo2連携機能の紹介 / PFN LLM セミナー
pfn
PRO
2
910
多様な事業ドメインのクリエイターへ 価値を届けるための営みについて
massyuu
1
440
20201008_ファインディ_品質意識を育てる役目は人かAIか___2_.pdf
findy_eventslides
2
540
AI時代だからこそ考える、僕らが本当につくりたいスクラムチーム / A Scrum Team we really want to create in this AI era
takaking22
7
3.8k
後進育成のしくじり〜任せるスキルとリーダーシップの両立〜
matsu0228
7
3k
神回のメカニズムと再現方法/Mechanisms and Playbook for Kamikai scrumat2025
moriyuya
4
640
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
32
2.2k
The World Runs on Bad Software
bkeepers
PRO
71
11k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
A Modern Web Designer's Workflow
chriscoyier
697
190k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
How to Ace a Technical Interview
jacobian
280
24k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Automating Front-end Workflow
addyosmani
1371
200k
It's Worth the Effort
3n
187
28k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Into the Great Unknown - MozCon
thekraken
40
2.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