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

Symfonyでルーティングとコントローラを連携する方法をやさしく解説!初心者でもわかるURLと処理のつなげ方

Symfonyでルーティングとコントローラを連携する方法
Symfonyでルーティングとコントローラを連携する方法

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

生徒

「SymfonyでURLと処理をつなげるには、どうすればいいんですか?」

先生

「Symfonyでは、ルーティングという仕組みを使って、URLとコントローラという処理を結びつけるんです。」

生徒

「ルーティングとコントローラって、具体的にはどんな風に設定するんですか?」

先生

「では、初心者向けにわかりやすく、実際の書き方を見ながら説明していきましょう!」

1. Symfonyのルーティングとコントローラの関係とは?

1. Symfonyのルーティングとコントローラの関係とは?
1. Symfonyのルーティングとコントローラの関係とは?

Symfony(シンフォニー)では、ルーティングという機能を使って「どのURLにアクセスしたら、どの処理を実行するか」を決めることができます。そして、実際の処理を書く場所がコントローラと呼ばれる部分です。

たとえば、「/hello」というURLにアクセスしたら「こんにちは!」というページを表示したいとします。このとき、Symfonyでは次のように2つのことを設定します:

  • ルート:どのURLにアクセスされたか?(例:/hello
  • コントローラ:どんな処理をするのか?(例:「こんにちは」を表示)

このように、ルートとコントローラを組み合わせることで、Webアプリの動きが作られていきます。

2. ルートとコントローラの書き方を見てみよう

2. ルートとコントローラの書き方を見てみよう
2. ルートとコントローラの書き方を見てみよう

それでは、Symfonyで実際にルーティングとコントローラを連携させる書き方を見てみましょう。まずは、HelloControllerというファイルを作成し、その中にルートとコントローラの設定を書きます。


namespace App\Controller;

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

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

このコードでは、@Routeアノテーション/helloというURLが設定されています。そして、その下のhello()という関数が実際の処理=コントローラです。

アクセス例:


http://localhost/hello

→ 「こんにちは、Symfony!」と表示される

3. コントローラとは?初心者にもわかる意味と役割

3. コントローラとは?初心者にもわかる意味と役割
3. コントローラとは?初心者にもわかる意味と役割

コントローラ(Controller)とは、「ユーザーがアクセスしたときにどんな処理をするか」を決める部分です。料理に例えるなら、コントローラはレシピのようなもので、材料(データ)をどう使うか、どんな手順で動かすかを書きます。

Symfonyでは、クラスと関数を使ってコントローラを作ります。そして、その関数が実行されるように、ルートを設定するのです。

4. URLに変数を入れてコントローラに渡す方法

4. URLに変数を入れてコントローラに渡す方法
4. URLに変数を入れてコントローラに渡す方法

URLの中に情報を入れて、それをコントローラで使いたいこともあります。例えば、「/hello/たろう」のように名前をURLに入れて表示させたいときです。

その場合は、URLの中に{name}のように書き、コントローラで同じ名前の変数を受け取ります。


#[Route('/hello/{name}', name: 'hello_name')]
public function helloName(string $name): Response
{
  return new Response('<h1>こんにちは、' . htmlspecialchars($name) . 'さん!</h1>');
}

このように書くことで、URLの「たろう」部分が$nameとしてコントローラに渡されます。

アクセス例:


http://localhost/hello/たろう

→ 「こんにちは、たろうさん!」と表示される

5. 複数のURLに対応するには?

5. 複数のURLに対応するには?
5. 複数のURLに対応するには?

Symfonyでは、1つのコントローラ関数に対して、複数のルートを設定することも可能です。たとえば、/greeting/helloの両方で同じ表示をしたい場合、#[Route]を複数設定することができます。


#[Route('/hello')]
#[Route('/greeting')]
public function greeting(): Response
{
  return new Response('<h1>ようこそ!</h1>');
}

このように書くことで、どちらのURLでも同じ結果になります。

6. Symfonyでルートとコントローラをつなげるポイント

6. Symfonyでルートとコントローラをつなげるポイント
6. Symfonyでルートとコントローラをつなげるポイント
  • #[Route()]でURLとコントローラを連携
  • 関数名がコントローラの処理内容を示す
  • 引数でURLのパラメータを受け取ることができる
  • Responseで文字やHTMLを返す
  • 複数ルートにも対応可能

これらを理解することで、Symfonyのルーティングとコントローラの関係がはっきりと見えてきます。最初は難しそうに見えるかもしれませんが、パターンを覚えれば自然と書けるようになります。

まとめ

まとめ
まとめ

Symfonyでルーティングとコントローラを適切に連携させることは、Webアプリケーション開発において非常に重要な基礎になります。とくに初心者にとって、URLという入り口からコントローラの処理へ流れるしくみを理解することは、アプリ全体の動作が頭の中で自然につながる大きなきっかけになります。ルートがどのURLに反応し、コントローラがどのような内容を返すのかを明確に整理することで、設計やトラブルシューティングのスピードも大きく向上します。Symfonyのルーティングは柔軟性が高く、アトリビュート形式を中心に、URLに変数を入れたり、複数のURLを同じ処理に割り当てたりと、実用的なパターンが豊富です。これらを丁寧に理解しておくと、画面遷移やフォーム送信の流れもスムーズに掴めるようになります。

コントローラは画面表示の中心であり、URLにアクセスされたときの動作を定義する場所です。たとえば、ユーザー名をURLから受け取り挨拶を返したり、複数のルートを同じ関数と結びつけて汎用的な動作を提供したりと、多様なパターンに対応できます。こうした基本構造はあらゆるアプリケーションで共通して必要となるため、しっかり身につけることで開発効率が格段に向上します。さらに、URLにパラメータを設定する方法は実務でも頻繁に利用されるため、必ず覚えておきたいポイントです。とくに「/hello/たろう」というような書き方で動的なページを作れることは、Webアプリケーションの基本中の基本といえます。

また、Symfonyでは複数ルートを1つのコントローラに紐づけるなど、柔軟な設計が可能です。これによって、異なるURLでも同じ処理を返したい場合に、重複したコードを書く必要はありません。アプリを拡張したり機能を追加したりする際にも、こうした設計を理解しておくことで、無駄のない構造を維持しながら開発できます。ルーティングとコントローラの役割をしっかりつかんでおくことは、今後テンプレートとの連携やフォーム処理、サービスとの連動など、より高度な内容へ進むための確かな土台になります。

サンプル:基本的なルートとコントローラの振り返り


#[Route('/sample', name: 'sample')]
public function sample(): Response
{
    return new Response('<h1>これはサンプルページです!</h1>');
}

サンプル:URLパラメータを利用したルート


#[Route('/item/{id}', name: 'item_detail')]
public function itemDetail(int $id): Response
{
    return new Response('<h1>商品ID:' . $id . '</h1>');
}

このように、ルーティングの基本パターンをしっかり理解しておくことで、より複雑な処理やページ作成にもスムーズに対応できるようになります。Symfonyのルート設定はとても力強く柔軟性に富んでおり、初期段階で慣れておくと後の開発が驚くほど楽になります。URLと処理のつながりを意識しながら、自分で試しつつ進めていけば理解も安定して深まります。今後の開発で必ず再利用する知識なので、ここでしっかり身につけておきましょう。

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

生徒

「今日の説明で、ルーティングとコントローラの関係がすごく整理されました!URLから処理がどう動くのかがイメージできるようになりました。」

先生

「それは良かったですね。ルーティングがしっかり理解できると、ページ遷移や動的なURLの仕組みも自然とつかめるようになりますよ。」

生徒

「パラメータをURLから受け取って使えるのがおもしろかったです!実際のアプリでも役に立ちそうですね。」

先生

「ええ、とてもよく使いますよ。動的ページや詳細画面では必ず必要になる考え方なので、今のうちに慣れておくと強みになります。」

生徒

「複数のURLを同じコントローラに割り当てる方法も便利ですね。用途に合わせていろいろ応用できそうです!」

先生

「その通りです。今日学んだ仕組みは、今後の開発にも必ず生きてきますから、ぜひ繰り返し使って身につけていきましょう。」

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

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

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

Symfonyでルーティングとは何ですか?初心者でも理解できますか?

Symfonyのルーティングとは、URLと処理(コントローラ)を結びつける仕組みです。どのURLにアクセスしたときにどんな処理をするかを設定する機能で、初心者でもわかりやすい構成です。
関連記事:
カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New2
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New3
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
New4
CodeIgniter
CodeIgniterのコントローラとは?役割と基本構造を完全解説!初心者向けガイド
人気記事
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構文まとめ!@if @foreach など基本ディレクティブ解説
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法