カテゴリ: Symfony 更新日: 2025/10/28

Symfonyでコントローラのコードをリファクタリングする方法をやさしく解説!初心者向けガイド

Symfonyでコントローラのコードをリファクタリングする方法
Symfonyでコントローラのコードをリファクタリングする方法

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

生徒

「先生、Symfonyで作ったコントローラのコードがごちゃごちゃして読みにくくなってきたんですが、どうすればいいですか?」

先生

「それはリファクタリングのチャンスですね!」

生徒

「リファクタリング?なんか難しそうな言葉ですね…」

先生

「心配しなくて大丈夫。リファクタリングとは、“動きはそのままに、中身をキレイに整理すること”なんです。台所を掃除して、道具を使いやすく並べるような感じですね。」

生徒

「なるほど、コードも整理整頓って大事なんですね!やり方を教えてください!」

先生

「それでは、Symfonyでコントローラのリファクタリングをする方法を、やさしく解説していきましょう!」

1. リファクタリングとは?

1. リファクタリングとは?
1. リファクタリングとは?

リファクタリングとは、プログラムの動作は変えずに、コードの書き方や構造を見やすく整理する作業のことです。

たとえば、長くなりすぎた関数を分けたり、重複した処理を一つにまとめたりします。

Symfonyのコントローラでは、特に「共通処理」や「条件分岐」が増えてくると、コードが長くなって読みにくくなるので、リファクタリングがとても重要です。

2. リファクタリング前の例

2. リファクタリング前の例
2. リファクタリング前の例

まずは、少しごちゃごちゃした状態のコントローラを見てみましょう。


#[Route('/product/{id}', name: 'product_detail')]
public function detail(int $id): Response
{
    $product = $this->getDoctrine()->getRepository(Product::class)->find($id);

    if (!$product) {
        throw $this->createNotFoundException('商品が見つかりません');
    }

    $priceWithTax = $product->getPrice() * 1.1;

    return $this->render('product/detail.html.twig', [
        'product' => $product,
        'priceWithTax' => $priceWithTax,
    ]);
}

このままでも動きますが、いろんな処理が混ざっていて少し読みづらいですね。

3. リファクタリングのポイント

3. リファクタリングのポイント
3. リファクタリングのポイント

以下のような処理を整理しましょう:

  • 共通処理(商品の取得)を専用の関数に分ける
  • 計算処理(税計算)を別の関数に切り出す

こうすることで、コントローラ本体は「流れだけ」を書いて読みやすくなります。

4. リファクタリング後のコード

4. リファクタリング後のコード
4. リファクタリング後のコード

private function findProductOr404(int $id): Product
{
    $product = $this->getDoctrine()->getRepository(Product::class)->find($id);

    if (!$product) {
        throw $this->createNotFoundException('商品が見つかりません');
    }

    return $product;
}

private function calculateTaxPrice(float $price): float
{
    return $price * 1.1;
}

#[Route('/product/{id}', name: 'product_detail')]
public function detail(int $id): Response
{
    $product = $this->findProductOr404($id);
    $priceWithTax = $this->calculateTaxPrice($product->getPrice());

    return $this->render('product/detail.html.twig', [
        'product' => $product,
        'priceWithTax' => $priceWithTax,
    ]);
}

リファクタリング後は、関数名を見るだけで何をしているか分かるようになりましたね!

5. Symfonyでよくあるリファクタリングのアイデア

5. Symfonyでよくあるリファクタリングのアイデア
5. Symfonyでよくあるリファクタリングのアイデア
  • 長すぎる関数 → 小さく分割
  • 同じコードが何度も登場 → 関数にまとめる
  • HTMLテンプレートへの渡し方 → 配列名を整理する
  • ベースコントローラを使う → 共通処理の集約

「読みやすいコード」は、後から自分やチームの仲間が見たときに理解しやすくなります。

6. 初心者でもできる!リファクタリングのコツ

6. 初心者でもできる!リファクタリングのコツ
6. 初心者でもできる!リファクタリングのコツ

リファクタリングは、小さなところから少しずつ始めるのがポイントです。

最初は「同じコードが2回以上出てきたら関数にまとめる」だけでも十分です。

慣れてきたら、ベースコントローラにまとめたり、サービスクラスに分ける方法もあります(今回は紹介しません)。

「キレイにすることは悪ではない」どころか、長く使うコードほど大事な考え方です。

関連記事:
カテゴリの一覧へ
新着記事
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でログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド