Laravelのコントローラでレスポンスを返す方法!ビュー・JSON・リダイレクトを初心者向けに解説
生徒
「Laravelのコントローラからどうやって画面に結果を表示したり、データを返したりするんですか?」
先生
「Laravelのコントローラは、ユーザーに返す『レスポンス』を作る役割があります。主にビュー(画面)、JSON(データ)、リダイレクト(別のページに移動)という方法がありますよ。」
生徒
「それぞれの違いと使い方を教えてください!」
先生
「わかりました。順番に詳しく説明しますね。」
1. Laravelのレスポンスとは?
レスポンスとは、Webサーバーからユーザーのブラウザに返されるデータのことです。例えば、Webページの内容やAPIのデータ、あるいは別のページへの移動指示などが含まれます。Laravelのコントローラは、このレスポンスを作成して返す役割を持っています。
2. ビュー(画面)を返す方法
ビューとは、ユーザーに見せる画面のことです。LaravelではBladeテンプレートという仕組みを使って、HTML画面を作成します。コントローラからビューを返すことで、ユーザーにページを表示できます。
コントローラでビューを返すには、view()関数を使います。
public function showWelcome()
{
// resources/views/welcome.blade.php のビューを返す
return view('welcome');
}
ここでは welcome というビュー(画面)を返しています。ビュー名は resources/views フォルダの中にあるBladeファイルの名前です。
3. ビューにデータを渡す方法
ビューに変数やデータを渡したい場合は、第2引数に配列でデータを渡します。
public function showUser()
{
$name = '太郎';
return view('user.profile', ['name' => $name]);
}
この例では、ビューの中で $name を使えるように渡しています。
4. JSON形式でデータを返す方法
JSON(ジェイソン)は、主にAPIで使われるデータの形式です。JavaScriptや他のプログラムが読み取りやすい形でデータを返します。LaravelのコントローラでJSONを返すには、response()->json() を使います。
public function apiUser()
{
$data = [
'name' => '太郎',
'age' => 25,
'email' => 'taro@example.com'
];
return response()->json($data);
}
このように書くと、ユーザー情報をJSON形式で返します。
5. リダイレクトで別のページに移動させる方法
リダイレクトとは、ユーザーを別のページに自動で移動させることです。例えば、フォーム送信後に「ありがとう」ページへ移動させたい時などに使います。Laravelでは redirect() 関数で簡単に実現できます。
public function afterSubmit()
{
// /thanks にリダイレクトする
return redirect('/thanks');
}
リダイレクト先はURLやルート名を指定できます。
6. リダイレクト時にフラッシュメッセージを送る方法
リダイレクトするときに、一時的なメッセージ(例:成功しました!)を渡したい場合があります。これをフラッシュメッセージと言います。Laravelでは with() メソッドを使います。
public function afterSubmit()
{
return redirect('/thanks')->with('message', '送信が成功しました!');
}
ビュー側で session('message') でメッセージを表示できます。
7. ポイント整理
ここまで見てきたように、Laravelのコントローラは「リクエストを受け取ってレスポンスを返す司令塔」のような役割を持っています。画面を表示するビュー、データだけを返すJSON、別のページへ自動的に移動させるリダイレクトという三つの基本的な返し方を覚えることで、Webアプリの動きが一気にイメージしやすくなります。
まず、通常のWebサイトのようにブラウザにページを表示したい場合は、view()でビューを返します。ログイン画面やマイページ、一覧画面など、ユーザーに「見せる」ことが目的のときに使う形です。次に、フロントエンド側がJavaScriptやVue、Reactなどで動いている場合や、スマホアプリ向けのAPIを作るときはresponse()->json()でJSONレスポンスを返します。最後に、フォーム送信後や処理完了後に別のURLへ移動させたいときはredirect()を使ってリダイレクトする、という使い分けが基本になります。
初心者のうちは「どのときに何を使えばいいのか」が分かりにくいかもしれませんが、次のようにざっくり覚えておくと整理しやすくなります。
- 画面を表示してユーザーに結果を見せたい → ビューを返す(
view()) - データだけを返してJavaScriptや外部サービスに渡したい → JSONを返す(
response()->json()) - 処理が終わったあとに別ページへ移動させたい → リダイレクト(
redirect())
これらのレスポンスは、同じコントローラ内で組み合わせて使うこともできます。例えば、フォーム送信に失敗したときは同じ画面に戻すリダイレクト、成功したときはサンクスページへリダイレクト、APIとして動かすときはJSONで返すなど、目的に応じて書き分けていきます。
簡単なサンプル:一つのコントローラで三種類のレスポンスを使い分ける
ここまでの内容をまとめてイメージしやすくするために、初心者向けのサンプルを用意してみます。ひとつのコントローラの中で、ビュー・JSON・リダイレクトをそれぞれ返すメソッドを書いた例です。
class SampleController extends Controller
{
// 画面(ビュー)を返す例
public function showPage()
{
$message = 'ようこそ、サンプルページへ!';
return view('sample.page', ['message' => $message]);
}
// JSONデータを返す例
public function showJson()
{
$data = [
'status' => 'success',
'message' => 'JSONレスポンスです',
];
return response()->json($data);
}
// リダイレクトする例
public function goThanks()
{
return redirect('/thanks')->with('message', '処理が完了しました!');
}
}
このサンプルでは、showPage()でビューを返し、showJson()でJSONを返し、goThanks()で別ページへリダイレクトしています。実際の開発でも、これと同じように「このアクションではユーザーに何を見せたいのか」「ブラウザか、JavaScriptか、別ページか」という視点でメソッドを選んでいくと整理しやすくなります。
また、リダイレクトにフラッシュメッセージを添えておくと、遷移先の画面で「登録が完了しました」「エラーが発生しました」のようなお知らせを1回だけ表示できるので、ユーザーにとっても分かりやすい画面になります。ビュー側でsession('message')をチェックする書き方も、あわせて手に馴染ませておくとよいでしょう。
Laravelのレスポンスの仕組みを理解しておくと、「このURLにアクセスされたら、どんな処理をして、最終的にブラウザに何を返すのか」を自分の頭の中で設計しやすくなります。コントローラはアプリ全体の流れを組み立てる中心の部分なので、今回学んだビュー・JSON・リダイレクトという三つのパターンを、まずは小さな練習用プロジェクトで試してみると感覚がつかみやすくなります。
まとめ
Laravelのコントローラでレスポンスを返す方法について学んできましたが、あらためて全体を振り返ってみると、ビュー・JSON・リダイレクトという三つの基本的なレスポンスは、LaravelでWebアプリケーションを開発するうえで欠かせない重要な仕組みであることがよく分かります。それぞれのレスポンスには役割があり、目的に応じて使い分けることで、ユーザーに正しい情報を返しながらスムーズな画面遷移やデータ提供ができるようになります。 また、コントローラの役割が明確になることで、アプリケーション全体の構造も理解しやすくなり、初学者でも自然な流れでWebアプリの開発を進められるようになります。
■ ビューを返す処理の理解
ビューを返す処理では、Bladeテンプレートと連携しながら画面表示を行います。画面側にデータを渡す方法を覚えることで、「ユーザー情報の表示」「商品一覧の表示」など、Webアプリらしい見せ方ができるようになります。 初心者の方にとっては、ビューに渡した変数がどのようにHTMLへ反映されるのかを丁寧に確認することが上達のポイントになります。
public function showUserProfile()
{
$user = [
'name' => '太郎',
'age' => 25,
'email' => 'taro@example.com'
];
return view('user.profile', ['user' => $user]);
}
ここでは、連想配列のユーザー情報をビューに渡しており、Blade側では {{ $user['name'] }} のようにして値を表示できます。データの流れを理解すると、より柔軟な画面表示が可能になります。
■ JSONレスポンスの重要性
JSONはAPIでとても重要なレスポンス形式です。最近のWeb開発では、フロントエンドとバックエンドが分かれて動く場面が増えており、JSONでデータを返す方法を身につけることで、モダンなアプリケーション開発にも対応できるようになります。
public function getApiStatus()
{
return response()->json([
'status' => 'ok',
'timestamp' => now()->format('Y-m-d H:i:s')
]);
}
このように、シンプルなAPIであっても、統一された形式でデータを返すことができるため、他のサービスやJavaScriptとの連携がスムーズになります。
■ リダイレクトとフラッシュメッセージの活用
リダイレクトはフォーム送信後のページ遷移などに欠かせない機能です。リダイレクト時に一時的なメッセージを渡せるフラッシュメッセージは、ユーザー体験を向上させる大切な仕組みです。実際のアプリでも、「保存しました」「削除が完了しました」などの通知を表示するためによく使われます。
public function saveForm()
{
// 保存処理…
return redirect('/complete')->with('message', '保存が完了しました!');
}
画面側では {{ session('message') }} を使って簡単に表示でき、ユーザーに安心感を与えるインターフェースを作れます。
■ まとめとして大切なポイント
Laravelのレスポンス機能は、画面表示・API・遷移のすべてを支えています。どの方法も覚えておくと開発がとてもスムーズになり、より表現力の高いアプリケーションを作れるようになります。とくに、ビューの使い方とJSONレスポンスの基本は、Laravelを学ぶうえで必ず身につけたい要素です。 また、リダイレクトとフラッシュメッセージを組み合わせることで、完成度の高いユーザー体験を実現できます。
生徒:今日はビュー、JSON、リダイレクトの違いがよく分かりました! 特にJSONはAPIに使うというのが印象的でした。
先生:その通りです。JSONは今のWebアプリ開発には欠かせません。Laravelでは簡単に返せるので便利ですよ。
生徒:リダイレクトも最初は難しく思ったけど、使う場面を知るとイメージしやすくなりました。
先生:リダイレクトはユーザー体験に大きく関わりますからね。フラッシュメッセージと組み合わせるともっと便利になりますよ。
生徒:ビューへのデータの渡し方もだんだん慣れてきました! これなら自分でもページを作れそうです。
先生:その調子です。レスポンスの種類を正しく使い分けられれば、Laravel開発の幅がぐっと広がりますよ。