Laravelでミドルウェアを作成する方法を徹底解説!初心者でも理解できるmake:middleware入門
生徒
「Laravelでミドルウェアという言葉を聞いたんですけど、どうやって作るのかわかりません…。」
先生
「ミドルウェアはリクエストの通り道に置く仕組みなんだ。例えば、部屋に入る前に身だしなみをチェックするみたいな役目だよ。」
生徒
「なるほど…でも、ミドルウェアってどうやって作るんですか?」
先生
「Laravelには便利なコマンドがあって、簡単に作れるよ。それでは作り方を一緒に見ていこう。」
1. ミドルウェアを作成するための基本知識
Laravelでは、リクエストという情報がアプリに届く前に特定の処理を挟みたいときにミドルウェアを使います。ミドルウェアという名前は、英語で「middle(中間)」と「ware(機能)」が合わさった言葉で、流れてくる情報の途中に立つ仕組みです。例えば、特定のページを見る前にログインしているかを確認したり、サイトにアクセスするときの言語設定を自動で切り替えたりする場面で使われます。日常で例えると、学校の玄関で名札を確認する先生のような存在です。
Laravelでは、こうしたミドルウェアを自分で作成することができ、アプリの安全性や使いやすさを高めるために非常によく使われます。特に大きなアプリになるほどリクエストの制御は重要になるので、ミドルウェアの仕組みを理解しておくと開発がよりスムーズになります。
2. make:middlewareコマンドでミドルウェアを作成する
Laravelでミドルウェアを作成する最も基本的な方法が、make:middlewareというコマンドを使う方法です。このコマンドは、Laravelに備わっているアーティザンコマンドという便利なツールのひとつで、新しいファイルを自動生成してくれる仕組みです。手作業でファイルを作る必要がなく、開発を効率よく進められます。
以下のコマンドをターミナルに入力すると、新しいミドルウェアが作成されます。
php artisan make:middleware CheckSample
このように名前を指定すると、Laravelが自動でapp/Http/Middlewareというフォルダにミドルウェアのファイルを作ってくれます。ファイルの内部には、リクエストを処理するためのメソッドが用意されており、この中に自分の処理を書き足していく流れになります。プログラムの細かい構文を知らなくても、Laravelが用意した枠に処理を入れていくだけで動かせるため、初心者でも取り組みやすい仕組みです。
3. 作成されたミドルウェアの中身を理解しよう
作成されたミドルウェアのファイルを開くと、handleという名前のメソッドが用意されています。このメソッドには、リクエストを受け取って次の処理に渡す役割があり、必要に応じて条件を追加したり、処理を変更したりすることができます。ここに自分のチェック処理を書き足すことで、アクセスの前に実行したい内容を自由に設定できます。
public function handle($request, Closure $next)
{
return $next($request);
}
この形はLaravelのミドルウェアで共通して使われる基本形です。特別な設定がなくても動作するため、最初は必要な処理を書き足して動作を確認する流れがおすすめです。ここに例えば時刻によってページのアクセスを制限したり、送られてきたリクエストの内容をログとして保存したりする処理を加えることができます。
4. ミドルウェアをルートに登録する方法
ミドルウェアを作っただけでは機能しないため、どのページで使うかをLaravelに登録する必要があります。そのための場所がKernelというファイルで、ミドルウェアを一覧として管理しています。ここに登録すると、ルートで指定できるようになり、必要なページやグループに適用できるようになります。
protected $routeMiddleware = [
'checksample' => \App\Http\Middleware\CheckSample::class,
];
登録ができたら、ルーティングでミドルウェアを指定します。これにより、ページへアクセスするときに先ほど作った処理が必ず通過するようになります。
Route::get('/sample', function () {
return 'サンプルページ';
})->middleware('checksample');
このように指定することで、アクセス前にチェック処理を実行できるため、アプリの安全性や利用制限を簡単に実装できます。コードのどこに書いてもよいわけではなく、ルートに明示的にミドルウェアを設定することで、制御が正しく働きます。
5. ミドルウェアを使って実現できること
ミドルウェアはさまざまな用途に使えるため、Laravelの中でも重要な機能とされています。例えば特定の時間帯だけページを表示したい場合や、特定の文字列が含まれているかをチェックしたり、アクセスログを残したりと応用範囲は広いです。こうした処理はコントローラに書くこともできますが、アクセス前に必ず実行されるミドルウェアのほうが適している場合が多くあります。
ミドルウェアを使い分けることで、アプリ全体の構造がすっきりまとまり、あとから修正しやすい形になります。同じ処理を何度も書かずに済むという点でも、ミドルウェアは非常に効率の良い仕組みです。