日経ソフトウエア2008年6月号にて掲載した「特選フリーソフト170」をお届けします。Partごとにテーマを決めて,そのテーマに沿ったフリーソフトを最後のページでまとめて掲載しています。2008年6月号の付録DVD-ROMには一部のフリーソフトを収録したため,それに関する表記がありますが,ご容赦ください。また,「お役立ちフリーソフト一覧」でもフリーソフトを紹介しています。
※ 記事は執筆時の情報に基づいており,現在では異なる場合があります。

PHP本体と,PHPプログラミングに役立つソフトを紹介します。本文では特に,PHPフレームワークの一つ「Zend Framework」に注目。PHPプログラムを適切な形で分割して,生産性や保守性を高めることが可能です。統合開発環境「Aptana Studio」の使い方も紹介しています。

 フレームワーク(Framework)を日本語に訳すと「枠組み」となります。では,プログラミングの世界でフレームワークという言葉はどんなものを指すのでしょうか。プログラマがよく使いそうな処理を整理してまとめ,それを使うためのルールを整備したもの,というのが一つの解釈でしょう。

 フレームワークを利用すると,処理の振り分け,データの入出力/検証といった多くのアプリケーションが必要とする機能を,より早く作れます。開発生産性を上げられるということです。一方で,開発者はフレームワークの決められた枠内でアプリケーションを開発することを強制されます。「強制される」と聞くとあまりよい気持ちはしないかもしれません。しかし,フレームワークを使うことをルールにすることで,プログラムの品質の差が,作る人によって大きく変わることが少なくなります。この点は,大人数のチームを組んでプログラムを作るときの大きなメリットです。メンテナンスするときも,修正すべき部分を特定しやすくなります。

 Javaや.NETの世界では,何らかのフレームワークを利用することはもはや当たり前です。一方,PHP(PHP:Hypertext Preprocessor)の世界はどうでしょうか。今はそこまでは浸透していないと思います。もともと,PHPはHTML(HyperText Markup Language)にコードを埋め込む形態から発展してきました。この形態は手軽に利用できて便利です。ちょっとした用途で利用されることの多かったPHPでは,フレームワークが必要なかったと考えられるかもしれません。

 しかし,そのような事情も今は昔。PHPは,手軽なだけのサーバーサイド技術ではありません。初学者にも易しいという長所はそのままに,大規模なアプリケーションでも利用可能な技術へと進化しました。大規模なアプリケーションにPHPを利用する事例も増えてきています。PHPにもフレームワークが必要になってきているのです。

いろいろあるPHPフレームワーク
本命はZend Framework

 PHPの世界では,いろいろなPHPフレームワークが登場しています(最終ページの表を参照)。ここでは,PHPフレームワークの中で本命と目されている「Zend Framework」を例に,PHPフレームワークの利用法を解説します。

 Zend Frameworkを本命と見る理由はいくつかあります。もっとも大きな理由は,開発元が米Zend Technologies(以下Zend)であるという点にあります。ZendはPHPの標準実行環境である「Zend Engine」の開発元です。PHPの内部構造まで熟知した開発者が実装に携わっているので,高い信頼性が期待できます。米Google,米IBM,米Microsoftといった大企業も開発に協力しています。また,ZendはPHPを事業の中心に据えているので,Zend Frameworkの提供,バージョンアップ,バグ修正を止めてしまうことも,当面は考えにくいでしょう。

 もちろん,大企業の後ろ盾があるだけで本命と見なすことはできません。Zend Framework自体の使いやすさも大きなポイントです。Zend Frameworkは「MVC(Model View Controller)」モデルを基本にしています。MVCモデルとは,「Model(ビジネス・ロジック)」「View(ユーザー・インタフェースのレイアウト)」「Controller(ModelとViewの制御)」の三つに分けてアプリケーションを設計するモデルです。PHPフレームワークだけでなく,Ruby用の「Ruby on Rails」やJavaの世界で有名な「Apache Struts」など,数多くのフレームワークがMVCモデルを採用しています。作業の分担がしやすく,アプリケーションに変更が必要になった場合に変更の影響が及ぶ範囲を限定しやすいのがメリットです。

 Zend Frameworkにおいて,Viewの役割を担うのは「Zend_View」コンポーネント,Modelを支援する役割を担うのは「Zend_Db」をはじめとした多くのコンポーネント群,Controllerとして中心的な役割を担うのが「Zend_Controller」コンポーネントです。

 Zend Frameworkは独立したコンポーネントの集まりでもあります。MVCモデルでコンポーネントを協調させるだけでなく,それぞれのコンポーネントを単独で取り出して利用することも可能です。例えば,データベース・アクセス機能だけを利用したいなら,Zend_Controllerを使う必要はなく,Zend_Dbだけで事足りてしまいます。Zend Frameworkは52種類のコンポーネントを備えます。その一部を表1に示します。

表1●Zend Frameworkが備える主なコンポーネント
[画像のクリックで拡大表示]
表1●Zend Frameworkが備える主なコンポーネント

 Zend Frameworkを筆者が本命視するもう一つの理由が豊富なドキュメント(ここでは開発者向けの文書のこと)の存在です。初学者がまず最初のとっかかりをつかむには,充実したドキュメントが必要です。

 Zend Frameworkのドキュメントは充実しており,日本語版もあります。英語が苦手でも大丈夫。Zend Frameworkをこれから始めようという方は,まずは気になった部分だけでも目を通しておくことをお勧めします。