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

Symfonyでコントローラを作成する方法を解説!アノテーションとYAMLでルート定義

Symfonyでコントローラを作成する方法(アノテーション/YAML指定)
Symfonyでコントローラを作成する方法(アノテーション/YAML指定)

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

生徒

「Symfonyでページを表示させるための仕組みって、どうやって作るんですか?」

先生

「Symfonyでは、コントローラというものを作って、その中でページごとの処理を書くんですよ。」

生徒

「それって難しいですか?何か特別な設定が必要ですか?」

先生

「いえいえ、大丈夫。初心者でも理解しやすいように、アノテーション方式とYAML方式の2つを紹介しますね!」

1. Symfonyのコントローラとは?

1. Symfonyのコントローラとは?
1. Symfonyのコントローラとは?

Symfony(シンフォニー)におけるコントローラとは、アクセスされたURLに応じて、処理の内容を決める役割を持つ「操作指示係」です。ウェブサイトで「お問い合わせページ」や「商品一覧ページ」などを表示するには、それぞれのページに対して処理を用意する必要があります。その処理をまとめたものがコントローラです。

「このURLが来たら、こういうページを表示しよう!」というように、Symfonyのルーティング機能と連携して働きます。

2. コントローラの基本的な作成手順

2. コントローラの基本的な作成手順
2. コントローラの基本的な作成手順

まずはSymfonyのプロジェクトの中にコントローラを作る必要があります。以下のコマンドを使うと、コントローラの雛形が自動で作られます。


php bin/console make:controller SampleController

これでsrc/Controller/SampleController.phpというファイルが作成され、同時にテンプレートファイルもtemplates/sample/index.html.twigに生成されます。

3. アノテーションによるルーティングの書き方

3. アノテーションによるルーティングの書き方
3. アノテーションによるルーティングの書き方

Symfonyでは、PHPのコード内に「アノテーション」というコメントのような記述を入れることで、URLとの関連付けを行うことができます。

たとえば、次のように書くと、「/hello」というURLにアクセスしたときにこの関数が呼び出されます。


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

class HelloController extends AbstractController
{
    #[Route('/hello', name: 'hello_route')]
    public function hello(): Response
    {
        return new Response('こんにちは!Symfonyのコントローラへようこそ');
    }
}

#[Route(...)]の部分がアノテーションです。「この関数は/helloというURLに対応するよ」という意味になります。nameはこのルートの識別名で、後でリンクを作るときに使います。

4. YAMLファイルでルーティングを設定する方法

4. YAMLファイルでルーティングを設定する方法
4. YAMLファイルでルーティングを設定する方法

もうひとつの方法が「YAML(ヤムル)ファイルによるルート定義」です。YAMLは、設定を記述するためのファイル形式のひとつで、人間にとって読みやすい構造になっています。

たとえば、次のようにconfig/routes.yamlにルートを書きます。


hello_route:
  path: /hello
  controller: App\Controller\HelloController::hello

この設定は、「/hello」というURLにアクセスが来たとき、HelloControllerhello()という関数を実行する、という意味です。

5. どちらの方法を使うべき?

5. どちらの方法を使うべき?
5. どちらの方法を使うべき?

アノテーションは、コントローラのコードとルート設定が一緒になっていて、見た目にもわかりやすく、初心者には使いやすいです。YAML方式は、コードと設定を完全に分けて整理できるため、大規模なプロジェクトやチーム開発で便利です。

最初はアノテーションで慣れてから、YAMLの使い方を覚えていくのがよいでしょう。

6. Symfonyで使えるコントローラ命名ルールと構成

6. Symfonyで使えるコントローラ命名ルールと構成
6. Symfonyで使えるコントローラ命名ルールと構成

Symfonyでは、コントローラのファイル名は「〇〇Controller」という名前にする決まりがあります。例えば、「HelloController」「UserController」などです。

この命名ルールを守ることで、Symfonyが正しくクラスを見つけて処理してくれます。

また、コントローラはsrc/Controller/ディレクトリにまとめて入れるのが一般的です。これにより、管理しやすくなり、どこに何の処理があるのかが分かりやすくなります。

7. コントローラで画面を表示するには?

7. コントローラで画面を表示するには?
7. コントローラで画面を表示するには?

コントローラは、ただ文字を返すだけでなく、テンプレートというHTMLファイルを表示させる役割もあります。

次回の学習では、そのテンプレート(Twig)について紹介しますが、今回は一例として、下記のようにテンプレートを表示する方法だけ紹介します。


return $this->render('sample/index.html.twig');

これで、templates/sample/index.html.twigのファイルが表示されるようになります。

まとめ

まとめ
まとめ

Symfonyでコントローラを作成し、アノテーション方式とYAML方式によってルートを管理する流れは、Webアプリケーションを効率よく構築するための基礎としてとても重要な考え方です。今回の内容では、コントローラが持つ役割、基本的な作成手順、ルーティングの設定方法、そしてテンプレートを画面へ返す流れまでを順序立てて整理しました。特に、コントローラの命名規則やルートの指定方法を正しく理解することで、複雑な画面遷移やページ構成であっても、迷うことなく整理された状態で開発を進めることができます。 また、Symfonyにおけるアノテーション方式は、コードとルート設定を近い場所で管理できるという利点があり、初心者が構造をつかみやすい仕組みとなっています。一方、YAML方式は設定ファイルでまとめて管理できるため、複数メンバーで開発を行う場面や大規模アプリケーションでは非常に扱いやすい方法です。こうした複数の選択肢を状況に応じて使い分けられる点も、Symfonyの大きな特徴といえるでしょう。 さらに、コントローラからテンプレートを表示する仕組みは、実際の画面作成に欠かせない重要な工程であり、Twigテンプレートと連携することでより柔軟なページ表示が実現できます。これらを組み合わせていくことで、ページごとの表示処理や動的なデータ表示をより自然に進められるようになります。以下では、今回学んだ内容を振り返るため、簡単なサンプルプログラムを引用し、実際のコントローラ構成のイメージを再確認します。

サンプルプログラムでまとめるコントローラの流れ

アノテーション方式でルートを設定し、テンプレートを画面に返す流れを再確認しましょう。


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

class SummaryHelloController extends AbstractController
{
    #[Route('/summary/hello', name: 'summary_hello')]
    public function hello(): Response
    {
        return $this->render('summary/hello.html.twig', [
            'message' => 'まとめとしての確認:Symfonyのコントローラ表示'
        ]);
    }
}

このように、アノテーションでURLとメソッドを結び付け、必要なテンプレートを返すという流れが自然に身についていきます。Symfonyの柔軟な構造は、初めての学習であっても直観的に理解しやすいため、段階を踏みながら習得できるのが魅力のひとつです。 アプリケーション開発が進むにつれ、コントローラの数も機能も増えていきますが、今回触れた命名ルールや構成を守ることで、プロジェクト全体を整理して見通し良く保つことができます。こうした考え方を実際の開発に活かすことで、より品質の高いWebアプリケーション構築につながっていくでしょう。

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

生徒

「コントローラって、ページごとの処理をまとめるための場所なんだって分かりました!」

先生

「その理解でばっちりですよ。URLと処理を結び付けるルーティングと組み合わせて使うのがポイントです。」

生徒

「アノテーションとYAML、両方に特徴があって、状況によって使い分ければいいんですね。」

先生

「ええ、最初はアノテーションから慣れていくのが自然ですが、設定をまとめたい場面ではYAMLがとても役立ちますよ。」

生徒

「テンプレートを表示する仕組みも理解できて、いよいよWebアプリっぽい動きが作れそうです!」

先生

「次回はTwigを使ってもっと見やすいページを作る方法を学びましょう。今回の理解が今後につながりますよ。」

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

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

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

Symfonyのコントローラとは何ですか?初心者でも理解できますか?

Symfonyのコントローラは、URLにアクセスされたときにどんな処理を実行するかを決める役割を持つプログラムのことです。お問い合わせページや商品一覧ページなどの表示処理を担当し、ルーティングと連携して動作します。
関連記事:
カテゴリの一覧へ
新着記事
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でログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド