現在Laravelの教材を鋭意制作中です!完成まで今しばらくお待ちください

#17 ルーティングファイル(web.php)の仕組みと書き方

お問い合わせフォームのモデルを定義し、保存対象のデータ構造を明示できたことで、少しずつアプリケーションらしい形が見えてきました。

ここからは、ユーザーのアクセスに応じてどんな処理を起動するかを定義する、Laravelのルーティング機能に進みます。

ルーティングとは、簡単にいえば「どのURLにアクセスしたとき、どの処理を実行するか?」を決める地図のようなもの。

Laravelでは routes/web.php というファイルに、画面表示やフォーム送信に関するルート(道順)を記述していきます。

この章では、web.php の基本的な書き方から、フォーム機能に必要なルートの整理、実際のControllerとの接続方法までを解説します。

入力画面 → 確認画面 → 保存処理 → 完了画面というフォームの一連の流れを、コード上でどう表現するかが見えてくるはずです。

アプリケーションの「入り口」として、ユーザーの行動とLaravelの処理がつながる瞬間を一緒に紐解いていきましょう。

ルーティングとは何か?

Laravelにおけるルーティング(Routing)とは、ユーザーがアクセスするURLに応じて、どの処理(メソッドやController)を実行するかを決定する仕組みのことです。

これはちょうど「住所に対応する配達先」を決めるようなもの。

ユーザーが example.com/contact にアクセスしたとき、それに対応する処理をLaravelが見つけて実行するために必要なルールです。

Laravelは「URL → 処理」への自動対応はしないため、明示的なルール(ルーティング)が必要となります

URLをもとに、どのController・どのメソッドを呼ぶかを開発者が設計することで、構造化されたアプリケーションが作れる

Laravelルーティングの位置づけ

要素 役割
ユーザーのURL 例:/contact
ルーティング URLと実行処理(Controller)を対応付ける設定
Controller 具体的な処理内容(画面表示・保存など)を定義
View ユーザーに返す画面(Bladeテンプレートなど)

ルーティングはこの中でも「アプリケーションの入り口」として、最初に呼ばれる重要な役割を担っています。

ルーティングファイルの場所

Laravelでは、画面表示に関するルートはすべて以下のファイルに定義されます。

routes/web.php

このファイルが、ユーザーのアクセスと処理をつなぐ「案内図」になります。

routes/web.php ファイルの役割

routes/web.php は、Laravelアプリケーションの画面表示やフォーム送信など、Webブラウザからのアクセスに対応するルートを定義する場所です。

  • 画面表示・フォーム送信など →web.php
  • API通信(外部システムとの連携など) → api.php

💡 Laravelでは目的別にルーティングファイルが分かれており、web.phpHTML画面を返す処理が中心です。

初期構成の確認

Laravelプロジェクトを新規作成すると、web.php ファイルは以下のような状態で始まります

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});
  • Route::get()ブラウザからURLにアクセスされたときの処理を定義
  • / はトップページを示すパス
  • view('welcome')resources/views/welcome.blade.php を返す処理

HTTPメソッドごとの使い分け

メソッド 用途 使用例
GET ページの表示・データの取得 入力フォーム表示 / 完了画面 / 一覧・詳細表示など
POST データの送信・登録処理 フォーム送信 / バリデーション確認 / 保存処理
PUT データの更新(編集) 編集画面での送信
DELETE データの削除処理 削除ボタンから送信

💡 今回のフォームでは GETPOST のみを使用しています

1. pullとブランチの作成

まずは、作業に入る前に前回mergeしたメインブランチを更新しておきましょう。この作業は毎回行います。

なぜ、毎回書いてあるのかというと、私自身もブランチを切り忘れることがあるため、定着させるために書いてあります。

# 現在のブランチがmainブランチではない場合
git switch main

# ブランチをpullする
git pull origin main

以上で完了です。mainブランチが前章で作成されたブランチと同じになれば、次に進みます。

ブランチは以下のように作成するのでしたね。

git switch -C make-routes

今回はルートを作成するので、make-routesと言う名前のブランチを作成しました。ブランチ名は任意となりますので、お好きなブランチ名を付けて構いません。

2.ルートファイルの作成

それでは実際にルートファイルの作成に進んでいきましょう。

READMEで作成した機能一覧を覚えていますか?機能一覧に書かれた内容をもとに、ページを作成していきます。

今回作成するルートは以下の通りです。

メソッド URL アクション 説明
GET / index トップページ or 一覧表示
GET /show/{id} show 個別のお問い合わせ詳細画面
GET /contact contact 入力フォーム表示
POST /contact/confirm confirm 入力内容の確認(バリデーション後)
POST /contact/store store データベース保存処理
GET /thanks thanks 保存完了後の完了画面表示(GETに変更)

Laravelでは、ユーザーがURLにアクセスしたときに、どの処理(Controllerのメソッド)を呼び出すかを定義するのがルーティングファイルです。

画面表示やフォーム送信など、Webブラウザと関わるルートはすべて routes/web.php に記述します。

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ContactController;

// トップページ(一覧表示など任意用途)
Route::get('/', [ContactController::class, 'index']);

// 個別表示(ID指定)
Route::get('/show/{id}', [ContactController::class, 'show']);

// 入力フォーム表示(GET)
Route::get('/contact', [ContactController::class, 'contact']);

// 入力内容の確認処理(POST)
Route::post('/contact/confirm', [ContactController::class, 'confirm']);

// データ保存処理(POST)
Route::post('/contact/store', [ContactController::class, 'store']);

// 完了画面表示(GET)
Route::get('/thanks', [ContactController::class, 'thanks']);

ルート一覧と解説

Route::get('/', [ContactController::class, 'index']);

  • トップページへのアクセス時に呼び出されるルート
  • index() メソッドでは、登録されたお問い合わせ一覧を取得・表示する処理が想定されます(一覧画面の役割)
  • 開発初期は仮の表示として welcome ページ、後に contacts.index ビューなどへ変更する

Route::get('/show/{id}', [ContactController::class, 'show']);

  • IDを指定して、特定のお問い合わせ内容を表示するページ
  • show() メソッドで Contact::find($id) を実行し、該当レコードを取得
  • 管理画面や確認画面などへの応用にもつながるルートです

Route::get('/contact', [ContactController::class, 'contact']);

  • 入力フォーム画面の表示
  • ユーザーが初めてアクセスして情報を入力するためのルート
  • ここでは contact() メソッドを使って contact.form ビューを返します

Route::post('/contact/confirm', [ContactController::class, 'confirm']);

  • 入力された内容を確認画面に渡す処理
  • バリデーションを通過したデータを contact.confirm ビューに表示
  • POST メソッドなのでフォーム送信によって起動されます

Route::post('/contact/store', [ContactController::class, 'store']);

  • 確認画面からの保存処理を担うルート
  • store() メソッド内で Contact::create() を使ってDBへ保存
  • 完了後は /thanks へのリダイレクトが一般的な流れ

Route::get('/thanks', [ContactController::class, 'thanks']);

  • 保存処理が成功した後の完了画面の表示
  • thanks() メソッドで「お問い合わせを受け付けました」といったメッセージを返す
  • GET メソッドなので、リダイレクトや URL直接アクセスにも対応可能

3.Git push

以上が完了したら、ここでGitを共有しておきましょう。

git add -A
git commit -m "コメントを入力する"
git push origin make-routes

git pushが無事完了したら、GitHub上で操作を行います。

pull requestが来ているので、mergeしましょう。

次章:#18 コントローラーの作成と役割 に進む