第1回 PHP開発でZend Frameworkを知らないだなんて嘘ですよね?「Zend Framework」で加速するPHP開発(1/2 ページ)

Zend Frameworkは、MVCアーキテクチャを構成し、各種コンポーネントを組み合わせることで効率的なPHPアプリケーションを構築できるフレームワークで、PHP用フレームワークの本命と呼ばれている。本稿では、Zend Frameworkについて、その機能と各種コンポーネントの使い方を解説する。

» 2007年02月28日 09時33分 公開
[杉田直哉,ITmedia]

はじめに

 2006年3月にイスラエルのZend Technologiesによって公開された「Zend Framework」はプレビュー版ながらも多くの機能が備わっています。Zend Frameworkは、MVCアーキテクチャを構成し、各種コンポーネントを組み合わせることで効率的なPHPアプリケーションを構築できるフレームワークで、PHP用フレームワークの本命と呼ばれている。本稿では、Zend Frameworkについて、一足先にその機能と各種コンポーネントの使い方を解説していくが、第1回となる今回は、Zend Frameworkの概要を説明した後、Zend Frameworkの導入方法について説明します。

Zend Frameworkとは?

 Zend Frameworkは、PHPアプリケーションのためのフレームワークです。名称に「Zend」とあるとおり、イスラエルのZend Technologies(以下、Zend)が中心となって開発しています。Zendについては、PHP 5のコアである「Zend Engine 2」などを開発している会社として、ご存じの方も多いでしょう。Zend Frameworkは、Zendのドメインでホスティングされており、フレームワークのダウンロードやマニュアル・開発のいきさつなどもこのサイトで閲覧できます。

http://framework.zend.com/

 また、Zend FrameworkはPHP Collaboration Projectの成果物の1つでもあります。このプロジェクトには、リスト1に挙げるように数多くの企業・団体が参加しており、ほかにも同プロジェクトの成果として、PHP開発者のためのコミュニティー「Zend Developer Zone」、Eclipse環境でPHPの開発を可能にする「Eclipse PHP IDE Project」*が存在します。

100days、Actuate、Amazon、Chris Shiflett、eBay、IBM、Intel、Joomla、MySQL、Ning、Oracle、Paypal、php|architect、Sebastian Bergmann、SugarCRM、Zend Technologies


リスト1 PHP Collaboration Projectの参加団体

Zend Frameworkの目標

 NexenServicesが発表した2006年8月現在の統計では、いまだPHP 4が全体の90%を占めており、PHP 5の利用はまだ広まっているとはいえません。またその結果、数多く存在するフレームワークやアプリケーションは、依然としてPHP 4を前提として作成されています。これらのアプリケーションはPHP 5の環境では完全には動作しない場合や、改善された機能をうまく利用できなかったりする問題があります。

 Zend Frameworkは、PHP 5で使用可能なフレームワークとして開発され、ここで述べたような既存のPHPにおける課題を解決することが、目標の1つとして掲げられています。また、幅広い機能を提供しつつシンプルさを失わないことも目標の1つです。例えばデザインパターンを覚えることが必要になったり、膨大なクラス資産を理解しておかなければ使用できなかったりということはなく、極力シンプルに作成されています。その結果、ソースコードの可読性も高くなっていると感じられます。Zend FrameworkのライセンスはNew BSD Licenseを採用しており、利用者にとって使用上の制約が少なくなるよう配慮されています。

Zend Frameworkのロードマップ

 9月19日には、Zend Frameworkの開発をリードしているAndi Gutmansが、Zend Developer Zoneで今後のロードマップを発表しています。1.0リリースで実装が予定されている機能は、表1のようになります。これまでのリリースから大きく変更されるというよりは、必要とされる機能を追加していく方向性と言えるでしょう。特に「Authentication & authorization」「i18n,l10n & validatio

n」「Infrastructure」のカテゴリで今後追加されるコンポーネントが多いようです。また、Preview 0.2リリースではMVCモデルのUpdateも予定されています。このように、既存のコンポーネントにもバグフィックスやAPIの追加など細かい修正が行われ、品質を高めていくものと考えられます(コラム1)

表1 表1 1.0リリースで実装が予定されている機能(クリックで拡大)

コラム1:Zend Frameworkの開発フロー

 Zend Frameworkの開発プロジェクトでは、機能が取り込まれる過程で開発者どうしのコミュニケーションがオープンかつ円滑に進むよう、「Zend Community Wiki」が開かれています。このWikiでは、主にコントリビューター(ソースコード開発者)とドキュメントの開発者向けに、標準や規約としてのルールが定められています。

 Zend Frameworkのコーディング規約は非常にシンプルです。この規約はZend Frameworkを開発する方が守るべきルールであり、使用する人が覚える必要はないものですが、あらかじめこの規約を覚えておくとフレームワークのソースコードを読みやすくなります。

 Ruby on Railsの影響で、最近はSeasar 2のようにCoC(Convention over Configuration)を意識した設計を行うフレームワークが増えてきています。Zend Frameworkも規約の条項は少ないので、学習の負担は軽く、ある程度規約に従ったコードの書き方を覚えておけば、ネーミングルールなどの推測がしやすくなります。

 そのほかにも、Zend Community WikiはProposalのレビューを行う場としての役目も持っています。コミュニティの開発メンバーが開発したソースコード(コントリビュート)は、Zend Frameworkに正式に組み込まれるまでに、おおまかに次のプロセスを通過します(図A)。

  1. Proposal:メンバーの提案したアイデアについて、コミュニティのメーリングリスト上でディスカッションが行われます。その後、ProposalとしてコミュニティWikiにページが作成されます。
  2. Laboratory:ProposalはまずLaboratoryというステータスになり、SVNプロジェクトが作成されてコアチームによるレビューを受けながらリビジョンアップを繰り返します。
  3. Incubator:すでにリリースされているCoreコンポーネントの一部となるPro

posalは、Incubatorというステータスになり、Zend Frameworkのパッケージに含まれます。

  1. Core:AcceptされたProposalはZend FrameworkのCoreに組み込まれ、正式なFrameworkのコンポーネントとなります。

 なお、現在挙げられているProposalについては、こちらで確認できます。

図A 図A Zend Frameworkの開発フロー

このページで出てきた専門用語

Eclipse PHP IDE Project

IBMとZendが協力して開発しているEclipseプラグイン。2006年9月現在、Preview版が公開されている。


       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ