symfonyとは? - PHPプロ!

PHPフレームワークとは?

What is the PHP Framework?

symfonyとは?

symfony-project.com

symfonyは世界的に使用されているフレームワークであり、開発当初から活発なアップデートが行われています。世界規模で見た場合、最も注目されているフレームワークの一つと言えます。

symfonyは、二つのフレームワークの利点を引き継いでいます。一つは、一時注目を集めたMojaviの「MVC機能」です。もう一つは、Ruby言語のフレームワークとして評価の高いRuby on Railsの「圧倒的な開発効率を実現するための機能」です。これらの利点を活かすことで、高い安定性とセキュリティの両面での強さを最小限の設定で発揮します。これまでPHPの弱みとされてきたオブジェクト指向を活かす工夫と、PHPの強みとされてきた処理速度とスケーラビリティの保持により、複数人での開発、すなわち大規模開発を優位に進めます。

symfonyはPHP5.1以降に対応しており、キャッシュ管理や多言語対応、AjaxサポートといったWeb アプリケーションを作成する際に必要となってくる機能の多くがはじめから用意され、その他の機能も簡単に追加できるプラグインを使って拡張できるのが特徴です。

また、設定ファイルにはXMLより記述の簡単なYAMLが使われています。他のフレームワークよりも豊富な情報が提供されており、PDFで300ページにもなるドキュメントや、code snippetに登録された多くのサンプルコードなど、情報量が圧倒的なのが特徴です。

大規模開発での実績が豊富 - symfony

symfony導入実績

米Yahoo!がsymfonyを利用した開発を積極的に進めています。例として、Yahoo! Bookmarksで採用されたことで大きく話題になりました。またYahoo!傘下にある世界最大級のブックマークサービスを提供するdel.icio.us(※注1)も次期バージョンでsymfonyを実装するという話も出ています。

Yahoo!のような世界的にみて最大級のWebサービスを提供する企業が採用したことで、Yahoo!からsymfonyを利用した大規模開発のフィードバックが期待でき、symfonyの安定性の強化、優れたライブラリの追加に繋がる可能性も出てきています。そのような理由から、今後は国内・国外問わず採用例が増えていくと考えられています。

※注1:del.icio.usの時期バーション採用に関しては、公式サイトの開発ブログを参照

symfonyの特徴

symfonyは、サンプルコード、豊富なドキュメントが用意されているので、複数人での開発、大規模Webサイトの開発には最適です。その他、キャッシュ管理や多言語対応、AjaxサポートといったWebアプリケーションを拡張する際に必要となってくる機能の多くが用意されており、簡単にアプリケーションを拡張することが可能です。また、プラグインとして提供されている機能も複数あるので、無駄な機能を実装することがありません。

オブジェクト指向開発

symfonyでは各パートで記述する処理内容が明確になっているため、作成するクラスの命名規則、継承関係の設定が効果的に行えます。また他これまでに作成した自社のプラグイン、サードパーティをコマンド一つで、プロジェクトにインポートすることができます。

多くの環境との互換性、連携を持つように設計されている

サーバー、データベース、ブラウザ(Ajax)、OSとの相性が非常に良いです。また、フレームワークブリッジ機能を使用することでsymfonyのアプリケーションからZend Frameworkなど他フレームワークのコンポーネントを使用することができます。

symfonyの優れた機能

symfonyコマンドの実装

symfonyコマンドが用意されアプリケーションの管理ができます。(フレームワークを新バージョンにアップグレイドすることも可能)

自動生成機能

CRUD生成機能(注2)を使用することで、データベースのスキーマをベースにコードを自動的に生成し、必要な処理のみを記述するだけですみます。それに留まらず、編集したものをベースにして、CRUDを生成することで自動的に同じ機能を実装することが可能になります。

※注2:CRUDとはCreate(作成)、Retrieve(取得)、Update(更新)、Delete(削除)の頭文字を並べたものでWebアプリケーションの典型的なパターン。

フォームヘルパ機能

柔軟にカスタマイズできる入力バリデーションや、フォーマット処理などに加え、日付入力用ウィジェットやリッチテキストエディタなどが実装されています。

テスト支援

ブラウザの挙動をシミュレーションテストします。

デバッグ支援

発生した例外を分かりやすく表示します。

PHPプロ!では、今回紹介した3つのフレームワーク(CakePHP, symfony, Zend Framework)に関する読者の皆様からの情報を募集しております。それぞれのフレームワークに対して実際に使用してみた感想、アピールポイント、デメリットなどありましたらお気軽にご投稿ください。

対象フレームワーク
意見・情報



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)