symfonyとは?
symfonyはオープンソースで開発されたPHP5.1以降に対応したフレームワークで、世界規模で注目されているPHPフレームワークの1つです。開発当初からアップデートが積極的に行われており、symfony開発者のFabien Potencier氏が共同設立したフランスのSensio社が、スポンサーとして継続的に開発をサポートすることを表明しています。
symfonyは、二つのフレームワークの利点を引き継いでいます。一つは、一時注目を集めたMojaviの「MVC機能」です。もう一つは、Ruby言語のフレームワークとして評価の高いRuby on Railsの「圧倒的な開発効率を実現するための機能」です。これらの利点を活かすことで、高い安定性とセキュリティの両面での強さを最小限の設定で発揮します。これまでPHPの弱みとされてきたオブジェクト指向を活かす工夫と、PHPの強みとされてきた処理速度とスケーラビリティの保持により、複数人での開発、すなわち大規模開発を優位に進めるのです。
symfonyの豊富な実績

symfonyは世界中で利用されているフレームワークです。一例として、米Yahoo!がsymfonyを利用した開発を積極的に進めています。Yahoo! Bookmarksで採用され、大きな話題になったことは記憶に新しいと思います。また、Yahoo!傘下にある世界最大のブックマークサイトdel.icio.usの次期バージョンでsymfonyを実装するという話も出ています。
Yahoo!のような世界的にみても最大級のWebサービス企業が採用したことで、Yahoo!からのフィードバッグをもとに安定性の更なる強化、ライブラリへの新機能の追加といったことも期待されています。今後は国内外を問わずsymfonyの採用例がますます増えていくでしょう。
symfonyの特徴

symfonyはサンプルコード、豊富なドキュメントが用意されています。その他キャッシュ管理や多言語対応、AjaxサポートといったWebアプリケーションを拡張する際に必要となる多くの機能が用意されており、簡単にアプリケーションを拡張することが可能です。また、プラグインとして、多くの付加的な機能が提供されています。
- MVCモデルを採用
- MVCモデルとは、アプリケーションのプログラムを3層に分けて作成する手法で、プログラムコードのメンテナンスが簡単になります。
- 多くの環境との互換性・連携
- サーバー、データベース、ブラウザ(Ajax)、OSとの相性が非常に良いです。また、フレームワークブリッジ機能を使って、symfonyのアプリケーションからZend Frameworkなど他フレームワークのコンポーネントを使用することができます。
機能紹介

symfonyには自動生成機能、フォームヘルパ機能、テスト支援など豊富な機能が備わっています。この項ではそれらの機能の一部を紹介します。
- symfonyコマンドの実装
- あらかじめ用意されたsymfonyコマンドからアプリケーションの管理ができます(フレームワークを新バージョンにアップグレードすることも可能)。
- 自動生成機能
- CRUD生成機能を使用すると、データベースのスキーマをベースにコードが自動的に生成されます。また、設定ファイルを記述することで、自動的にCRUD機能を持つアプリケーションを生成することもできます。
- ※CRUDとはCreate(作成)、Retrieve(取得)、Update(更新)、Delete(削除)の頭文字を並べたものでWebアプリケーションの典型的なパターン。
- テスト支援とデバッグ支援
- テスト支援機能では、ブラウザの挙動をシミュレーションし、一連の流れをテストします。また、デバッグ支援機能では、デバッグモードをONにすることで、実行されたSQLや発生した例外を分かりやすく表示してくれます。
- フォームヘルパ機能
- 柔軟にカスタマイズできる入力バリデーションやフォーマット処理などに加え、日付入力用ウィジェットやリッチテキストエディタなどが実装されています。
開発例
これまでsymfonyの特徴や主な機能を説明してきましたが、この章では、symfonyを使用した開発の流れを紹介します。
- 1. プロジェクト、アプリケーションの作成
- これはsymfonyコマンドで実行します。symfonyでアプリケーションを作成する場合の単なる準備だと考えてください。
- 2. スキーマの記述
- スキーマはすでにデータベースにテーブルが作成されていれば、そこから作成することも可能です。また、スキーマを自分で記述して、データベースにテーブルを作成することも可能です。
- 3. モデルの作成
- 作成したスキーマからモデルを作成します。モデルは、テーブル同士のリレーションが加味されたPHPのクラスとして作成されます。そのため、それほど難しいSQLでなければメソッドを実行することで、その代わりとすることが可能となります。
- 4. CRUDによる雛形の作成
- モデルが作成できたらsymfonyコマンドを使用して基本的な機能を実装してしまいます。ここまでは、基本的にPHPでプログラムを記述することはありません。
- 5. 機能の実装
- ここではじめてPHPでの実装となります。主にCRUDで不足する部分を実装します。たとえば、デフォルトでは作成・更新時の確認画面がないので、確認画面を作成したり、デザインの入れ込みを行います。
- 6. 雛形のテンプレートの作成
- よく似た機能が大量にある場合は、ここで一度雛形を作成するためのテンプレートを作成してしまいます。そうすれば、5で実行する機能の実装をより楽にすることができます。
- 7. 4, 5の繰り返し
- あとは、雛形の作成と処理の繰り返しとなります。しかし、実際にはCRUDとは異なる機能もあり、それらの機能を別途実装する必要があります。
アシアルが提供する symfony 導入支援コンサルティング
上述のように、symfonyの機能の多さや保守性などから開発に使用したいというニーズが増えてきています。しかし、導入するにあたり、どのシステムにsymfonyを投入すべきか、いかに効率的に開発に組み込むかの問題や、symfonyの大きさゆえに理解が不完全な状態で使用してしまうリスクが発生します。
アシアルではこれまで、symfonyの導入に対する技術支援や、自社内での開発経験、symfonyに関するテクニカルセミナーの開催、日本初のsymfonyの専門書籍「symfony×PHP」の執筆などを行ってきました。このようなsymfonyに関する豊富なノウハウをベースに、トータルなsymfonyの導入コンサルティングを提供します。




