はじめに
本連載では、PHP上で動作するアプリケーションフレームワークであるsymfonyでアプリケーション開発を行う方法について紹介します。本連載で扱う内容は、次のとおりです。
- symfonyフレームワークの特徴
- symfony利用のための環境設定手順
- Hello, Worldアプリケーションの作成
- データベースと連携したアプリケーションの作成
- その他、役立つsymfony関連のテクニック
導入の今回は、まずsymfonyの特徴と環境設定手順、「Hello, World」アプリケーションの作成までを紹介します。
対象読者
PHPの基本構文は一通り理解しているが、フレームワークを利用したことはないという方を対象としています。
必要な環境
symfonyは、PHP5とWebサーバがインストールされている環境で利用可能です。本稿ではWebサーバとしてApache2.2を、OSにWindows XPを採用し、アプリケーションを作成していきます。また、次回以降のサンプルでは、データベースとしてMySQLを用いる予定です。以下に、今回アプリケーション作成/動作確認に用いた環境を示します(インストールにあたっては最新安定版の使用を推奨します)。各項目の詳細なインストール手順は、「サーバサイド技術の学び舎 - WINGS」より、「サーバサイド環境構築設定手順」を参照ください。
- Windows XP SP2
- PHP 5.2
- PEAR
- Apache 2.2.3
- MySQL 5.0.24a
LinuxやFreeBSDなどUNIX系OSをお使いの方もコマンドはほぼ一緒ですので、パスなどは適宜読み替えてください(MySQLは次回以降で使用します)。
フレームワークとは
実際にsymfonyを活用する前にまず、フレームワークというものについてざっと見ていきましょう。
なぜフレームワークなのか
さて、PHPの基礎を一通り学習しスキルを身につけたとしても、実際にそれなりのサイトを一から作ろうとすると、それなりの作業量が要求されます。そしてある程度規模のあるサイトを一定の期間内に作ろうとすれば必然的に、共同作業になります。その際、次のような問題点が浮上してくることでしょう。
- 平行作業(ビューとロジックの切り分け)
- 定型的なコードの記述
- コーディングルールの統一性
- メンテナンス
これらの問題を解決すべく登場したのが、フレームワークです。フレームワークとは本来「枠組み」を意味し、簡単に言えば「プログラミングなどの際によく使う機能やお作法をすぐ利用できるよう詰め合わせたソフトウェア群」のことを言います。実際、あいまいな定義なのですが、多くのフレームワークには開発支援のためのツールやドキュメント、クラスライブラリなどが含まれています。例えば、Webアプリケーションフレームワークであれば、認証/セッション管理や、データベース管理、テンプレートなどが提供されます。
あらかじめ枠組みを用意することで、先ほど挙げたような問題がある程度解決されます。フレームワークを用いる利点は、まず、自分で一から枠を作る必要がなくなることです。つまり、アプリケーションを作る時に本来いつも用意する必要のある部分を自分で作る手間が省けます。そしてもう一つは、皆が同じ枠組みの中で作業をするので、コードにある程度統一性が確保できる点です。完成後のメンテナンスもしやすくなります。具体的には、次のような改善点が見込まれます。
問題点 | 改善点 |
定型的なコードの記述 | 工数が短縮できる |
平行作業(ビューとロジックの切り分け) | プログラマーとデザイナーがまったく独立に作業を進められる |
メンテナンス | コーディングルールの統一性のために可読性も上がり、メンテナンスや機能拡張がしやすくなる |
品質のバラツキ | コーディングルールの統一性のために、一定の品質が確保される |
PHPとフレームワーク
フレームワークそのものの歴史はわりと古いのですが、PHPのフレームワークが脚光を浴び出したのはここ1~2年くらいのことです。今回紹介するsymfonyのほかにも、Mojavi、Ethna、Mapleなど、既に多数のフレームワークがあります(下表)。
フレームワーク | 入手先/HP | 特徴 |
symfony | http://www.symfony-project.com/ | 本文参照 |
Mojavi | http://www.mojavi.org/ | PHPフレームワークの草分け的存在(現在本家ダウン中。入手はMojavi Japanから可能) |
Ethna | http://ethna.jp/ | GREEで使われている国産フレームワーク。PHP4/5に対応 |
Maple | http://kunit.jp/maple/ | 国産フレームワーク。DIコンテナ機能が特徴的 |
Zend Framework | http://framework.zend.com/ | PHP本家Zendが提供する純正フレームワーク |
CakePHP | http://www.cakephp.org/ | symfony同様Ruby on Rail系のフレームワークで軽快な動作が特徴。PHP4にも対応 |
symfonyについて
今回紹介するsymfonyは、MITライセンスに基づくオープンソースのPHP5用フレームワークです。symfonyの冒頭ページによると「ものぐさのためのプロフェッショナルウェブツール」だそうです。
Mojaviから派生し、Ruby用フレームワークRuby on Railの影響を色濃く受けて作られたフレームワークで、以下の様な特徴があります。
- シンプルなテンプレートとヘルパー
- キャッシュ・コントロール
- 種々の環境(OS、データベース)に対応
- 管理ツール(アプリケーションファイル群の管理――変更、更新など)
- scaffolding機能(データベースの基本操作に必要なモジュールを自動生成する)
- スマートURL(設定ファイルによりURLの形式を決めることができる)
- 多言語(I18N)対応
- オブジェクトモデルとMVC分離
- Ajaxサポート
- プラグインによる機能追加が可能
非常に多機能で、本家ドキュメントも充実しています。対照的に日本語情報は比較的少ないのですが、活用できれば大いに役立つことと思います。