カテゴリ: Symfony 更新日: 2025/12/29

Symfonyでレスポンスを返す方法を解説!HTMLやJSONの出力も初心者向けに解説

Symfonyでレスポンスを返す基本の書き方(HTML, JSONなど)
Symfonyでレスポンスを返す基本の書き方(HTML, JSONなど)

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

生徒

「SymfonyっていうPHPのフレームワークで、画面に文字を出したりするにはどうすればいいんですか?」

先生

「いい質問ですね。Symfonyでは『レスポンス』という形で、HTMLやJSONなどを画面に出力することができます。」

生徒

「レスポンスって何ですか?難しそうです…」

先生

「安心してください。レスポンスというのは、パソコンがユーザーに返す『お返事』のようなものです。基本から一緒に学んでいきましょう!」

1. Symfonyで「レスポンス」とは?

1. Symfonyで「レスポンス」とは?
1. Symfonyで「レスポンス」とは?

Symfony(シンフォニー)は、PHPというプログラミング言語を使ってWebアプリケーションを作るためのフレームワークです。フレームワークとは、プログラミングを便利にしてくれる「土台」や「ひな型」のようなものです。

Webアプリケーションでは、ユーザーが何か操作(リクエスト)をすると、それに対して「お返事(レスポンス)」を返します。例えば、ボタンを押したら画面にメッセージが表示されたり、データが出てくるといった流れです。

Symfonyでは、Responseというクラスを使って、この「お返事」を作ります。

2. HTMLをレスポンスとして返す方法

2. HTMLをレスポンスとして返す方法
2. HTMLをレスポンスとして返す方法

画面に「こんにちは、Symfony!」のようなメッセージを表示したいときは、HTMLのレスポンスを返します。HTML(エイチティーエムエル)とは、Webページの表示に使われる言語です。

Symfonyでは、下記のように書きます。


use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class HelloController extends AbstractController
{
    #[Route('/hello', name: 'hello')]
    public function hello(): Response
    {
        return new Response('<h1>こんにちは、Symfony!</h1>');
    }
}

この例では、/helloというURLにアクセスすると、「こんにちは、Symfony!」というHTMLの見出しが表示されます。これは文字列をHTMLとしてそのまま返している方法です。

3. JSONをレスポンスとして返す方法

3. JSONをレスポンスとして返す方法
3. JSONをレスポンスとして返す方法

JSON(ジェイソン)は、データのやりとりでよく使われる形式で、人間にもコンピュータにも読みやすい形です。例えば、「名前:山田、年齢:20歳」というデータをやりとりしたいときに使います。

Symfonyでは、JsonResponseというクラスを使ってJSONを返します。


use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class ApiController extends AbstractController
{
    #[Route('/api/user', name: 'user_data')]
    public function getUser(): JsonResponse
    {
        $data = [
            'name' => '山田太郎',
            'age' => 20
        ];

        return new JsonResponse($data);
    }
}

この例では、/api/userというURLにアクセスすると、以下のようなJSONデータが返ってきます。


{
    "name": "山田太郎",
    "age": 20
}

この形式は、API(エーピーアイ)と呼ばれる仕組みで使われます。APIとは、アプリ同士がデータをやりとりするためのルールや入口のようなものです。

4. HTMLとJSONの違いをイメージで理解しよう

4. HTMLとJSONの違いをイメージで理解しよう
4. HTMLとJSONの違いをイメージで理解しよう

HTMLは人間が見る画面を作るためのもので、JSONはプログラムが読むデータをやりとりするためのものです。

  • HTML:人間がWebブラウザで見て「きれいに整ったページ」が表示される
  • JSON:システムやアプリが中身のデータだけを取り出して使う

イメージとしては、HTMLは「お弁当を開けてすぐ食べられる状態」、JSONは「材料だけを袋に入れて渡される状態」です。用途に合わせて使い分けます。

5. Content-Type(コンテントタイプ)とは?

5. Content-Type(コンテントタイプ)とは?
5. Content-Type(コンテントタイプ)とは?

Symfonyでは、レスポンスを返すときに「これはHTMLですよ」「これはJSONですよ」と伝える必要があります。そのために使うのが、Content-Type(コンテントタイプ)という設定です。

Symfonyでは、ResponseJsonResponseを使うことで、このContent-Typeを自動で設定してくれます。たとえば:

  • Response → Content-Type: text/html
  • JsonResponse → Content-Type: application/json

この設定があることで、ブラウザやアプリが正しく内容を理解できるようになります。

6. レスポンスのステータスコードとは?

6. レスポンスのステータスコードとは?
6. レスポンスのステータスコードとは?

レスポンスには「ステータスコード」という番号も含まれます。これは「うまくいったよ」とか「エラーがあったよ」といった結果を数字で表したものです。

  • 200 → 成功(正常に処理できた)
  • 404 → ページが見つからない
  • 500 → サーバー側のエラー

Symfonyでは、何も指定しなければ自動的に200が返されますが、エラーの時などは明示的に設定することもできます。


return new Response('ページが見つかりません', 404);

7. 文字コード(エンコーディング)も気をつけよう

7. 文字コード(エンコーディング)も気をつけよう
7. 文字コード(エンコーディング)も気をつけよう

レスポンスの文字が「文字化け」してしまうことがあります。これは「文字コード」が正しく設定されていない場合に起こります。

日本語を表示する場合は、UTF-8という文字コードを使うのが一般的です。

SymfonyのResponseでは、下記のようにヘッダーを追加できます。


$response = new Response('こんにちは!');
$response->headers->set('Content-Type', 'text/html; charset=UTF-8');
return $response;

まとめ

まとめ
まとめ

Symfonyでレスポンスを返す仕組みを学ぶことは、ウェブアプリケーション開発の基礎を理解するうえで非常に重要なステップです。とくに、ユーザーの操作に対してどのようにHTMLやJSONといった結果を返すのかを理解しておくと、アプリ全体の流れが見えやすくなり、開発がぐっと楽になります。レスポンスという考え方は抽象的に聞こえるかもしれませんが、「ユーザーからの問いかけに対して返すお返事」と考えるとイメージがつかみやすいでしょう。実際にSymfonyでは、ResponseクラスやJsonResponseクラスを使って柔軟にレスポンスを返すことができ、HTML表示もAPIの返却も同じ土台の上で統一して扱える点が大きな特徴です。

初心者にとって特に大切なのは、HTMLとJSONの違いを理解し、それぞれの用途を自然に使い分けられるようになることです。画面を表示したいときはHTMLを返し、アプリ同士のデータ連携を行いたいときはJSONを返します。Symfonyが自動で設定してくれるContent-Typeやステータスコードの扱いも非常に便利で、開発者が細かい部分に気を取られなくてもよい仕組みが整っています。さらに、レスポンスを返す際に文字コードを適切に設定することで、ユーザーに正しい情報を届けることができ、安心して画面を扱えるようになります。

レスポンス処理を復習する簡単サンプル

ここで、Symfonyでレスポンスを返す基本的な例を振り返っておきましょう。HTMLレスポンスとJSONレスポンスを並べて確認することで、仕組みの違いがよりわかりやすくなります。


// HTMLレスポンスの例
#[Route('/sample/html', name: 'sample_html')]
public function htmlResponse(): Response
{
    return new Response('<h2>サンプルHTMLレスポンスです</h2>');
}

// JSONレスポンスの例
#[Route('/sample/json', name: 'sample_json')]
public function jsonResponse(): JsonResponse
{
    return new JsonResponse([
        'result' => '成功',
        'message' => 'サンプルJSONレスポンスです'
    ]);
}

このように、SymfonyではわずかなコードでHTMLとJSONを使い分けることができます。実際の開発では、画面を表示する処理とデータを返すAPI処理が混ざり合って実装されるため、これらの基本をしっかり理解しておくことが大きな助けになります。さらに、ステータスコードを意識することで、成功・失敗の流れを利用者や他のシステムにもわかりやすく示すことができます。

ステータスコードと文字コードの理解

ステータスコードやContent-Typeは、レスポンスに欠かせない要素です。たとえば「ページが見つからない」「サーバー側でエラーが起きた」といった状況では、正しいステータスコードを返すことで利用者が原因を知ることにつながります。さらに、日本語を使う場合には文字コードUTF-8を指定しておくことが重要です。文字化けを避けるためにも、次のような書き方を覚えておくと安心です。


$response = new Response('エラーが発生しました', 500);
$response->headers->set('Content-Type', 'text/html; charset=UTF-8');
return $response;

このように、レスポンスの仕組みを理解しておけば、画面表示にもAPIの返却にも応用でき、Symfonyでの開発がより柔軟で安定したものになります。初心者の方は、まずは小さなレスポンスを返すところから実践し、自分で少しずつバリエーションを増やしていくと理解が深まりやすくなります。

先生と生徒の振り返り会話

生徒

「レスポンスって最初は難しそうでしたが、『お返事』だと考えるとわかりやすかったです!」

先生

「その感覚はとても大事ですよ。返信する内容がHTMLなのかJSONなのか、その違いを理解できればSymfonyの仕組みが一気に見えてきます。」

生徒

「Content-Typeやステータスコードも、実際に見ると納得できました。特にJSONは便利ですね!」

先生

「API開発では必須になりますからね。今のうちにしっかり慣れておくと後で困りませんよ。」

生徒

「次は自分でもいろいろなレスポンスを返してみます。実験しながら覚えていきたいです!」

先生

「その姿勢は素晴らしいです。Symfonyは自由度が高いので、基本を押さえればどんどんできることが広がりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Symfonyでレスポンスとは何ですか?

Symfonyにおけるレスポンスとは、ユーザーの操作(リクエスト)に対してWebサーバーが返す「お返事」のことを指します。たとえば、ボタンをクリックしたときにHTMLやJSONの情報を画面に表示するなどがレスポンスの例です。
関連記事:
カテゴリの一覧へ
新着記事
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のルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)