はじめに
本連載では、PHP上で動作するアプリケーションフレームワークの「Zend Framework」について紹介していきます。本連載では、以下の内容を扱う予定です。
- Zend Frameworkフレームワークの特徴
- Zend Frameworkを利用するための環境設定手順
- Hello, Worldアプリケーションの作成/基本的なコンポーネントについての解説
- その他Zend Frameworkにおける各種コンポーネントについて
導入の今回は、まずZend Frameworkの特徴と環境設定手順までを紹介します。
対象読者
PHPの基本構文は一通り理解しているが、フレームワークを利用したことはないという方を対象としています。
必要な環境
Zend Frameworkは、PHP5.1.4以降とWebサーバがインストールされている環境で利用可能です。本稿ではWebサーバとしてApache2.2を、OSにWindows XPを採用し、アプリケーションを作成していきます。また、次回以降のサンプルでは、データベースとしてMySQLを用いる予定です。
以下に、今回アプリケーション作成/動作確認に用いた環境を示します(インストールにあたっては最新安定版の使用を推奨します)。各項目の詳細なインストール手順は、「サーバサイド技術の学び舎 - WINGS」より「サーバサイド環境構築設定」を参照ください。
- WindowsXP SP2
- PHP 5.2.4
- Apache 2.2.6
LinuxやFreeBSDなどUNIX系OSをお使いの方もコマンドはほぼ一緒ですので、パスなどは適宜読み替えてください。
Zend Frameworkとは
フレームワークそのものの概念については、拙著『symfony入門(1):symfonyで始めるPHPフレームワーク』を参照ください。
今回紹介するZend Frameworkは、PHP開発本家であるZend Technologies社が中心となって開発した、BSDライセンスに基づくオープンソースのPHP5用MVCフレームワークです(PHP5.1.4以降が必要となります)。本家サイトによれば、以下の様な特徴があります。
- シンプルであること(simplicity)
- 拡張性があり、よくテストされたコードベース──拡張も容易
- 柔軟な構造──固いアプリ構造に縛られない
- 起動・実行等に必要な設定ファイルがない
- オブジェクト指向
Zend Frameworkは非常にシンプルな構造をしていて、すべてPHP5のオブジェクト指向を用いて設計されています。一つ一つのクラスライブラリは「コンポーネント」と呼ばれ、それぞれを単独で呼び出すことができます。Zend FrameworkはMVCモデルに基づいて設計されていますが、そのMVCもコンポーネント群として提供されていますので、Zend Frameworkのコンポーネントは用いるがMVCは使わないといったこともありえます。
以下、Zend Frameworkで提供されるコンポーネントについて表でまとめます。
コンポーネント | 概要 |
Zend_Acl | 軽量で柔軟なアクセス制御リスト(ACL)機能と権限管理機能 |
Zend_Auth | 認証のためのAPI |
Zend_Cache | 任意のデータをキャッシュするためのコンポーネント |
Zend_Config | アプリケーションの設定データを使用するためのコンポーネント |
Zend_Console_Getopt | コマンドラインアプリケーションでのオプション・引数処理関連コンポーネント |
Zend_Controller | MVCシステムの中心で「コントローラ」の部分 |
Zend_Currency | I18N機能の中核となるコンポーネント |
Zend_Date | 日付や時刻を操作するためのAPI |
Zend_Db | SQLデータベースアクセス関連コンポーネント |
Zend_Debug | デバッグ関連コンポーネント |
Zend_Exception | 例外クラス関連コンポーネント |
Zend_Feed | RSSやAtomのフィード関連コンポーネント |
Zend_Filter | データのフィルタリングに必要となる一般的な機能を提供 |
Zend_Filter_Input | フィルタやバリデータなど入力値検証関連コンポーネント |
Zend_Gdata | Google DataにPHPからアクセスするためのコンポーネント |
Zend_Http | HTTPリクエスト関連コンポーネント |
Zend_Json | JSON形式を扱うための便利なメソッドを提供 |
Zend_Loader | ファイルを動的に読み込むためのメソッドを提供 |
Zend_Locale | ロケール処理関連コンポーネント |
Zend_Log | ログ出力用の汎用コンポーネント |
Zend_Mail | メールを作成・送信するための一般的な機能を提供 |
Zend_Measure | 計測値の単位変換や計算を行うためのパッケージ |
Zend_Memory | メモリ管理コンポーネント |
Zend_Mime | マルチパートMIMEメッセージを処理するためのサポートクラス |
Zend_Pdf | PDF操作エンジン |
Zend_Registry | アプリケーション用のレジストリ関連コンポーネント |
Zend_Rest | REST Webサービス利用関連コンポーネント |
Zend_Search_Lucene | 汎用的なテキスト検索エンジン |
Zend_Server_Reflection | サーバクラス群で関数やクラスの内容を知るための標準的な仕組みを提供 |
Zend_Service_Akismet | Akismet APIのクライアント機能を提供 |
Zend_Service_Amazon | Amazon Webサービスを使用するためのシンプルなAPI |
Zend_Service_Audioscrobbler | Audioscrobbler REST Webサービスを使用するためのシンプルなAPI |
Zend_Service_Delicious | del.icio.usのXMLおよびJSON Webサービスを使用するためのシンプルなAPI |
Zend_Service_Flickr | Flickr のREST Web Serviceを使用するためのシンプルなAPI |
Zend_Service_Simpy | ソーシャルブックマークサービスであるSimpy用のフリーなREST APIの軽量なラッパー |
Zend_Service_StrikeIron | StrikeIron Webサービス用のPHP5クライアント |
Zend_Service_Yahoo | さまざまなYahoo! REST API群を使用するための単純なAPI |
Zend_Session | セッションデータ管理関連コンポーネント |
Zend_Translate | 多言語対応アプリケーションを作成するためのパッケージ |
Zend_Uri | URIsの操作および検証を行うためのコンポーネント |
Zend_Validate | 一般的に必要となるバリデータを提供 |
Zend_Version | Zend Framework のバージョン管理関連コンポーネント |
Zend_View | MVCパターンにおける 「ビュー」として働くクラス |
Zend_XmlRpc | XML-RPCサービス関連コンポーネント |
使いやすいライセンスで、企業の使用にも安心
Zend FrameworkではBSDライセンスを採用しています。これは著作権と免責事項の表示をしていれば改変や再利用が自由というもので、さらに改変したコードを非公開にできるため、商用利用しやすいライセンスとなっています(他でよく採用されているGPLライセンスは、改変したものを再配布する際にもそのコードをGPLライセンスに基づいて公開することが義務付けられているために、商用としては使いにくいものとなっています)。
また、Zend FrameworkソースのコントリビューターはCLA(Contributor License Agreement)に署名することになっています。これにより、コントリビューターが開発したコードにおいてその著作権が守られると同時に、Zend Technologies社にそのコードをZend Frameworkで使用するための著作権ライセンスが提供されることになります。
その他の特長
- 最新のWeb開発フィーチャーをサポート
- JSONを通したAJAXサポート
- 検索機能
- シンジケーション
- Webサービスの利用
- 高品質のオブジェクト指向PHP5クラスライブラリ
最新のWebフィーチャーも利用できるようになっています。Ajaxや検索機能はもちろんのこと、Yahoo!やGoogle、AmazonといったWebサービスを利用するためのAPIもコンポーネントとして提供されています。
Zend Frameworkの構造は、現在メジャーなPHPフレームワークであるsymfonyなどに比べるとはるかにシンプルであることから、幅広い機能を提供しながら習得が比較的楽であり、動作も高速です。
例えば、symfonyではその規模にかかわらず開発するアプリごとに「プロジェクト」「アプリケーション」「モジュール」が設けられ、自動生成機能や設定ファイル群が非常によく整備されている反面、動作は重くなりがちなど、他のライブラリが利用しづらい面もありました。
一方、Zend Frameworkはこれまで開発してきた既存のPHPコードも活用しやすいですし、他のライブラリとの併用も可能です。また本家開発のフレームワークであることから、その質/信頼性もメリットの一つとなっています。本家ドキュメントを始めとした日本語情報も充実してきました。