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

Symfonyで最初のページを表示してみよう!初心者でもできるHello World入門

Symfonyで最初のページを表示してみよう(Hello World入門)
Symfonyで最初のページを表示してみよう(Hello World入門)

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

生徒

「Symfonyをインストールしたんですが、画面に何も出てきません…」

先生

「最初は真っ白な状態なので、自分で表示ページを作る必要があります。今回はHello Worldページを作って、Symfonyの動かし方を覚えていきましょう!」

生徒

「Hello Worldってよく聞きますが、どういう意味ですか?」

先生

「プログラミングで最初に画面に表示させる、定番のあいさつ文のことです。『ちゃんと動いてるよ!』という確認として使いますよ。」

1. Symfonyの基本的な動作を確認しよう

1. Symfonyの基本的な動作を確認しよう
1. Symfonyの基本的な動作を確認しよう

Symfony(シンフォニー)は、PHPで動くWebアプリケーションの開発フレームワークで、効率よく安全にWebサービスを作るための仕組みがまとめられています。家を建てるときに骨組みがあると工事が早く進むように、Symfonyを使うことで複雑な処理も土台に任せて開発を進められるのが大きな特徴です。

Symfonyを動かすときは、まずターミナル(黒い画面)から開発用サーバーを起動して、自分の作業内容が正しく反映されているかを確認します。初期状態では何もページが用意されていないため、「本当に動いているの?」と不安になるかもしれません。

例えば、開発用サーバーが正常に動いているか確認するために、次のような簡単なテストコードを作成する方法があります。これを使うと「Symfonyが正しく動いているか」をすぐにチェックできます。


// 動作確認用のとても簡単なサンプル(src/Controller/TestController.php)
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class TestController extends AbstractController
{
    #[Route('/check', name: 'check')]
    public function check(): Response
    {
        return new Response('Symfonyは正常に動作しています!');
    }
}

このような短いサンプルを書くことで、「URLにアクセスすると Symfony が返事をしてくれる」という基本動作を確認できます。Symfonyプロジェクトを作成した直後は真っさらな状態なので、自分でページを追加する必要があります。ここから少しずつページを作っていくことで、Symfonyの仕組みが自然と理解できるようになります。

2. コントローラを作ってページを表示する準備

2. コントローラを作ってページを表示する準備
2. コントローラを作ってページを表示する準備

Symfonyで画面を表示するうえで欠かせないのが、コントローラという役割のファイルです。コントローラは「このURLに来たら、どんな内容を返すか」を決める場所で、Webアプリの入り口のような存在です。たとえるなら、建物の受付で「どの部屋へ案内するか」を判断している人のような位置づけです。

まずは、最初のページを作るためのコントローラを自動生成してみましょう。Symfonyには便利なコマンドが用意されており、初心者でも簡単に必要なファイルを用意できます。ターミナルで次のコマンドを実行してください。


php bin/console make:controller HelloController

このコマンドを実行すると、Symfonyが画面表示に必要な最小構成のファイルを自動で作成してくれます。生成されるのは次の2つです:

  • src/Controller/HelloController.php(ページの処理を書くファイル)
  • templates/hello/index.html.twig(画面の見た目を作るテンプレート)

生成された直後のコントローラには、すでに簡単な動作確認用のコードが書かれており、URLにアクセスするとテンプレートが表示される仕組みが組み込まれています。例えば、次のような非常にシンプルな自作コントローラを追加すると、Symfonyがどのように動いているのかさらに理解しやすくなります。


// 学習用に追加してみると理解が深まる簡単な例
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;

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

このように、URLと処理をつなぐ小さなファイルを作るだけで、Symfonyは正しく画面を表示してくれます。まずは「コントローラ=ページを作る入口」と覚えておくと、今後の学習がぐっと分かりやすくなります。

3. HelloControllerを編集して「Hello World」を表示

3. HelloControllerを編集して「Hello World」を表示
3. HelloControllerを編集して「Hello World」を表示

ここでは、実際に作成されたHelloControllerを編集し、ブラウザに「Hello World」を表示できるようにしていきます。コントローラは、ユーザーがアクセスしたURLに対して「どんな内容を返すか」を決める重要な場所です。たとえるなら、ユーザーが来たときにどの部屋へ案内するか判断するガイド役のような存在です。

まずは、HelloController.php を次のような形に編集してみましょう。とても短いコードですが、Symfonyの動作を理解するうえで大切なステップになります。


namespace App\Controller;

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

class HelloController extends AbstractController
{
    // /hello にアクセスしたとき、このメソッドが呼び出される
    #[Route('/hello', name: 'hello')]
    public function index(): Response
    {
        return new Response('Hello World');
    }
}

このコードでは、#[Route('/hello', name: 'hello')] という部分がURLと処理をつなぐ役割を持っています。つまり、ユーザーが /hello にアクセスすると、index() メソッドが実行され、ブラウザには「Hello World」という文字がそのまま表示されます。

さらに理解を深めるために、もうひとつ簡単な例を見てみましょう。次のように内容を変えるだけで、別のページを簡単に増やすこともできます。


#[Route('/greet', name: 'greet')]
public function greet(): Response
{
    return new Response('こんにちは!Symfonyの世界へようこそ');
}

このように、コントローラでは返したい文字を変更するだけで、ページの内容を簡単に作れます。Symfonyで最初に触れる部分として、ここをしっかり理解しておくと後の学習がとてもスムーズに進みます。

4. 実際にブラウザで確認してみよう

4. 実際にブラウザで確認してみよう
4. 実際にブラウザで確認してみよう

いよいよ、作成したページが本当に動作するか確認してみましょう。Symfonyでは、専用の開発サーバーを使うことで、今書いたコードがすぐにブラウザへ反映されます。これは「実際のWebサイトがどう動くのか」を手軽に体験できる初心者に嬉しい機能です。

まずはターミナルで次のコマンドを実行し、開発サーバーを起動します。サーバーが正常に動くと、アクセスできるURLが表示されます。


symfony server:start

もし Symfony CLI を使っていない場合は、PHP の組み込みサーバーでも問題なく動作します。プロジェクトのルートフォルダで次のコマンドを実行してください。


php -S 127.0.0.1:8000 -t public

サーバーが起動したら、ブラウザを開いて次の URL にアクセスしてみましょう。

http://localhost:8000/hello

正しく設定されていれば、シンプルですが重要な確認として、次のように画面へ「Hello World」と表示されます。これが表示されれば、Symfonyとブラウザがしっかり連携できている証拠です。


Hello World

もしページが表示されない場合は、サーバーが起動しているか、コントローラのURL設定が間違っていないか確認してみましょう。少しずつ試しながら確かめることが、Symfonyを理解する近道になります。

5. Hello Worldの意味と目的を理解しよう

5. Hello Worldの意味と目的を理解しよう
5. Hello Worldの意味と目的を理解しよう

Hello Worldは、プログラミングの最初の一歩として必ず登場する言葉です。これは、システムが正しく動いているかを確認するために使います。

Symfonyでも、この「Hello World」を表示することで、プロジェクトの設定が正しくできていて、ブラウザと連携できていることを確認できます。

6. Symfonyの仕組みを簡単に振り返る

6. Symfonyの仕組みを簡単に振り返る
6. Symfonyの仕組みを簡単に振り返る

今回の「Hello World」を通して、Symfonyの以下のポイントを理解できました:

  • コントローラ:URLに対応する処理を書く場所
  • ルーティング:どのURLでどの処理を呼び出すか決める仕組み
  • Response(レスポンス):ブラウザに返す表示内容

これらはSymfonyの基本的な動き方を理解するうえでとても大切な仕組みです。

7. 画面に文字を表示する他の方法もある

7. 画面に文字を表示する他の方法もある
7. 画面に文字を表示する他の方法もある

今回は文字を直接返しましたが、次のようにHTMLのテンプレートを使って画面を作ることもできます。

テンプレートを使うには、コントローラ内でrender()という関数を使います。


return $this->render('hello/index.html.twig', [
  'message' => 'Hello World'
]);

こうすることで、HTMLの中にPHPの変数を埋め込むことができ、より柔軟な画面作りが可能になります。

まとめ

まとめ
まとめ

Symfonyで最初のページを作成する過程は、フレームワークの基本動作を深く理解する良いきっかけになります。今回のHello World表示では、コントローラの作り方、ルーティングの設定方法、レスポンスの返し方、テンプレートへの値の受け渡しといった、Webアプリケーション開発に欠かせない要素を順を追って学ぶことができました。とくにSymfonyでは、コントローラとテンプレートが役割ごとに明確に分かれているため、整理された構造の中で自然に開発を進められる点が大きな特徴です。ブラウザに「Hello World」が表示されただけでも、内部では複数のコンポーネントが連携して動いており、そのつながりを意識しながら作業することで、Symfony全体の流れが理解しやすくなります。

また、Symfonyの強みでもあるアノテーションを利用したルーティング指定、render関数を使ったテンプレート描画、Responseオブジェクトを使用した直接的な文字表示など、さまざまな方法でページを構築できる柔軟さも確認できました。テンプレートエンジンTwigを使えば見た目の装飾やデータの差し込みも簡単に行えますし、コントローラから受け渡す値によって画面が動的に変化する仕組みもイメージしやすくなります。こうした基本操作を確実に身につけておくと、今後さらに複雑なフォーム処理やデータベースとの連携に進んだ際にも迷わず開発を進められるようになります。

今回学んだ内容を活かすサンプルコード

ここでは、Hello Worldに加えて、テンプレートに変数を渡して表示する実践的なサンプルコードを紹介します。コントローラの編集方法とテンプレートの記述例を確認しながら、実際の動作をイメージしてみてください。


// src/Controller/HelloController.php

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/template', name: 'hello_template')]
    public function template(): Response
    {
        return $this->render('hello/template.html.twig', [
            'title' => 'はじめてのテンプレート表示',
            'message' => 'テンプレートに値を渡して画面を作ることができます。',
        ]);
    }
}

{# templates/hello/template.html.twig #}
<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>{{ message }}</p>
    <p>このように変数を埋め込みながら画面を作ることができます。</p>
</body>
</html>

このサンプルでは、コントローラから複数の値をテンプレートに渡し、Twigで動的に表示しています。Symfonyの画面表示はこの流れを中心に発展していくため、基本的なデータ受け渡しの理解は非常に重要です。テンプレートエンジンTwigを利用すると、HTML構造を保ちながら柔軟に値を埋め込めるので、デザインとロジックを自然に分離して管理できます。これにより、開発の見通しが良くなるだけでなく、複数人で作業するときも役割分担が明確になります。

Hello World表示で理解が深まるSymfonyの仕組み

SymfonyでHello Worldを表示するという非常にシンプルな操作の中にも、フレームワーク全体の仕組みが集約されています。ルートがURLとコントローラを結びつけ、コントローラが処理を実行し、レスポンスを返し、必要に応じてテンプレートが画面を描画するという一連の流れは、今後どのページを作るときも共通する重要な動作です。この流れを理解しておくことで、機能追加、新しい画面作成、外部APIとの連携、データベース処理など、よりステップアップした開発に進んだ際にも迷いにくくなります。

加えて、開発用サーバーの起動方法、ルーティングの指定、レスポンスの返却、Templatingの動作といった要点を押さえることで、Symfonyのプロジェクト構造全体がより立体的に見えるようになります。ページを一枚作るだけでも、内部でどのような処理が行われ、どのコンポーネントが関わっているかを理解することは、開発力を高める大切な土台になります。

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

生徒

「最初はコントローラやルートの仕組みが難しそうだと思っていたんですが、Hello Worldを表示してみたら意外とシンプルなんですね!」

先生

「その気づきがとても大切ですね。Symfonyの基本はこの流れに沿って進んでいくので、最初のページ表示を理解すると一気に開発しやすくなりますよ。」

生徒

「テンプレートに値を渡す方法も分かって、画面づくりの幅が一気に広がりそうです。Twigの仕組みももっと触ってみたくなりました!」

先生

「Twigは慣れるととても強力ですよ。動的な画面を作るときに役立つので、ぜひ色々試しながら手に慣らしていきましょう。」

生徒

「今回のHello Worldで自信がつきました!次はフォームを作ったり、データベースとつなげたりも挑戦していきたいです。」

先生

「その意欲があればどんどん前に進めますよ。Symfonyの基礎を理解した今なら、さらに高度な機能も自然と身についていくはずです。」

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

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

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

Symfonyで最初に画面が表示されないのはなぜですか?

Symfonyではプロジェクトを作成した直後は何もページが用意されていないため、自分でコントローラを作って表示内容を設定する必要があります。
関連記事:
カテゴリの一覧へ
新着記事
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やミドルウェアの設定方法