Symfonyとは?Web開発フレームワークの特徴・使い方まとめ

2022年現在において、PHP開発では「cakePHP」や「Laravel」といったフレームワークがよく用いられていますが、「Symfony」も人気のフレームワークの一つです。今回はSymfonyについて解説していきます。
Symfonyの概要
はじめに、Symfonyの概要から紹介します。
PHPのフレームワーク
Symfonyは、PHPのフレームワークです。PHPは、現在多くのWebサイトの作成に用いられる言語ですが、そのPHPを「より簡単に・より安全に・より効率よく」開発するためのツールになります。
読み方は「シンフォニー」で、開発初期の頃は「Sensio Framework」という名称でした。しかし、その後オープンソースのフレームワークになり、今のSymfonyという名称に変わりました。
フランスSensio Labs社にて開発されたフレームワーク
Symfonyは、フランスSensio Labs社が開発したオープンソースフレームワークです。元々は自社で使用する独自のフレームワークとして開発されたものです。
当時PHP4から5へ移行するにあたって、特定の優れたフレームワークが見つからなかったことから、mojaviとpropelを参考に作られました。
2007年1月にバージョン1.0がリリース
Symfonyは、最初のバージョンが2007年1月にリリースされました。数年に1回のバージョンアップを行い、この記事を書いている段階(2022年4月現在)の最新バージョンは6.0で、長期サポートバージョンの最新版は5.4です。
Symfonyの特徴や強み
では、このSymfonyというフレームワークには、どのような特徴があり、他のフレームワークと比較してどのような点で強みがあるのでしょうか。
MVCモデル
Symfonyは、MVCモデルを採用しています。MVCモデルとはModel(モデル)・View(ビュー)・Controller(コントローラー)という3つの種類にソースを分け、各々で入れるべき役割を分けた開発方法を意味します。基本的な分類は以下の通りです。
Model | ビジネスロジックやデータベース処理など |
View | ユーザーインターフェース |
Controller | モデルとビューを制御する |
また、複数のプログラマーやデザイナーが入るプロジェクトほど、各々のルールでコーディングされてしまい、ルールが煩雑になることも多いですが、MVCモデルを利用することで、ある程度の制限がされるため、プロジェクト全体で書き方を統一することができます。
Ruby on Railsの影響を強く受けている
このSymfonyというフレームワークは、プログラミング言語であるRubyの人気フレームワーク「Ruby on Rails」の影響を大きく受けています。そのため、効率の良い開発が可能となります。
バンドルという概念を使用
Symfonyでは、「バンドル」というファイルやフォルダの集まりを利用します。特定の機能を複数のアプリで利用できるように、バンドルとしてパッケージ化します。
バンドルはオープンソースとして公開されている機能も多く、使い勝手が良いです。代表的なバンドルには「FOSUserBundle」「SonataAdminBundle」などがあります。
また、オープンソースとして外部公開せずとも、社内で再利用されるような機能をバンドルにしておく事で、大規模な開発もスムーズに機能の再利用が可能になります。
大規模開発向けの構造
Symfonyは、前述したバンドルを始め、オブジェクト指向型の開発やパーツの再利用性が高いという特徴があります。そのため、小規模な開発がスムーズにできることは当然ながら、大規模開発向けの構造になっています。
EC-CUBEに採用されている
Symfonyは、無料で使えるECサイト構築用のパッケージソフト「EC-CUBE」に採用されています。以前はSilexを利用していましたが、Symfonyに移行したことで、パフォーマンスが大幅に改善され、設定なども簡単になりました。
EC-CUBEは、国内でもシェア最大級のプラットフォームであり、カスタマイズも自由に行うことができます。またEC-CUBEは、日本語対応している、開発コミュニティがあるなど様々なメリットがあり、導入する企業は多いです。
Twigを使用
Symfonyは、テンプレートエンジンとしてTwigを使用します。テンプレートエンジンとは、サーバー側の処理で用意された変数などを、実際に表示されるHTMLに簡単に表示させたりする「出力用のソフトウェア」です。「セキュリティが高い」「処理速度が早い」「柔軟性が高い」といった特徴があります。
日本語ドキュメントは少なく、現在マイナーなフレームワークである
Symfonyの導入は、安全性や開発工数の削減という意味では非常に多くのメリットがありますが、主に海外で利用されていることから、Laravelなど他のPHPフレームワークと比較して日本語のドキュメントが少ないというデメリットがあります。
Symfonyを用いる場合は、英語でのドキュメントを読み、理解できるようになる必要があるでしょう。
Symfonyの使い方
Symfonyを利用するには、公式サイト からインストールを行います。
(参照:Symfony )
公式サイトには、インストール方法から実際に新規プロジェクトの作成方法まで記載されています。
古いバージョンのSymfonyと現在のものでは、バージョンの確認方法が違ってきています。
$ php bin/console --version
現在は上記の方法で確認することが出来ます。まとめ
今回は、PHPのフレームワークであるSymfonyについて見てきました。現在、日本国内で主流のフレームワークとは言い難いSymfonyですが、本文中でも述べた「EC-CUBE」での利用もされています。Symfonyを用いた開発に興味のある方は、ぜひ参考にしてみてください。