カテゴリ: Laravel 更新日: 2025/12/06

Laravelのコントローラでレスポンスを返す方法!ビュー・JSON・リダイレクトを初心者向けに解説

Laravelのコントローラでレスポンスを返す方法(ビュー・JSON・リダイレクト)
Laravelのコントローラでレスポンスを返す方法(ビュー・JSON・リダイレクト)

先生と生徒の会話形式で理解しよう

生徒

「Laravelのコントローラからどうやって画面に結果を表示したり、データを返したりするんですか?」

先生

「Laravelのコントローラは、ユーザーに返す『レスポンス』を作る役割があります。主にビュー(画面)、JSON(データ)、リダイレクト(別のページに移動)という方法がありますよ。」

生徒

「それぞれの違いと使い方を教えてください!」

先生

「わかりました。順番に詳しく説明しますね。」

1. Laravelのレスポンスとは?

1. Laravelのレスポンスとは?
1. Laravelのレスポンスとは?

レスポンスとは、Webサーバーからユーザーのブラウザに返されるデータのことです。例えば、Webページの内容やAPIのデータ、あるいは別のページへの移動指示などが含まれます。Laravelのコントローラは、このレスポンスを作成して返す役割を持っています。

2. ビュー(画面)を返す方法

2. ビュー(画面)を返す方法
2. ビュー(画面)を返す方法

ビューとは、ユーザーに見せる画面のことです。LaravelではBladeテンプレートという仕組みを使って、HTML画面を作成します。コントローラからビューを返すことで、ユーザーにページを表示できます。

コントローラでビューを返すには、view()関数を使います。


public function showWelcome()
{
    // resources/views/welcome.blade.php のビューを返す
    return view('welcome');
}

ここでは welcome というビュー(画面)を返しています。ビュー名は resources/views フォルダの中にあるBladeファイルの名前です。

3. ビューにデータを渡す方法

3. ビューにデータを渡す方法
3. ビューにデータを渡す方法

ビューに変数やデータを渡したい場合は、第2引数に配列でデータを渡します。


public function showUser()
{
    $name = '太郎';
    return view('user.profile', ['name' => $name]);
}

この例では、ビューの中で $name を使えるように渡しています。

4. JSON形式でデータを返す方法

4. JSON形式でデータを返す方法
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. リダイレクトで別のページに移動させる方法

5. リダイレクトで別のページに移動させる方法
5. リダイレクトで別のページに移動させる方法

リダイレクトとは、ユーザーを別のページに自動で移動させることです。例えば、フォーム送信後に「ありがとう」ページへ移動させたい時などに使います。Laravelでは redirect() 関数で簡単に実現できます。


public function afterSubmit()
{
    // /thanks にリダイレクトする
    return redirect('/thanks');
}

リダイレクト先はURLやルート名を指定できます。

6. リダイレクト時にフラッシュメッセージを送る方法

6. リダイレクト時にフラッシュメッセージを送る方法
6. リダイレクト時にフラッシュメッセージを送る方法

リダイレクトするときに、一時的なメッセージ(例:成功しました!)を渡したい場合があります。これをフラッシュメッセージと言います。Laravelでは with() メソッドを使います。


public function afterSubmit()
{
    return redirect('/thanks')->with('message', '送信が成功しました!');
}

ビュー側で session('message') でメッセージを表示できます。

7. ポイント整理

7. ポイント整理
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開発の幅がぐっと広がりますよ。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)