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
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
140
月間60万ユーザーを抱える 個人開発サービス「Walica」の 技術スタック変遷
miyachin
1
140
新卒1年目、はじめてのアプリケーションサーバー【IBM WebSphere Liberty】
ktgrryt
0
110
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
170
.NET 最新アップデート ~ AI とクラウド時代のアプリモダナイゼーション
chack411
0
200
エンジニアリングマネージャー視点での、自律的なスケーリングを実現するFASTという選択肢 / RSGT2025
yoshikiiida
4
3.7k
いま現場PMのあなたが、 経営と向き合うPMになるために 必要なこと、腹をくくること
hiro93n
9
7.6k
Formal Development of Operating Systems in Rust
riru
1
420
Cloudflareで実現する AIエージェント ワークフロー基盤
kmd09
0
290
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
54k
「隙間家具OSS」に至る道/Fujiwara Tech Conference 2025
fujiwara3
7
6.4k
Godot Engineについて調べてみた
unsoluble_sugar
0
390
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Faster Mobile Websites
deanohume
305
30k
GraphQLとの向き合い方2022年版
quramy
44
13k
Six Lessons from altMBA
skipperchong
27
3.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
The Invisible Side of Design
smashingmag
299
50k
Thoughts on Productivity
jonyablonski
68
4.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
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