|
必聴講座ご紹介 Cloud Days Tokyo 2012 エムオーテックス Cloud Days Tokyo 2012 ヴイエムウェア Cloud Days Osaka 2012 アマゾン データ サービス ジャパン |
[PHPウォッチ]第3回 PHP5でXMLサポートが大幅強化PHPの次期メジャー・リリースにあたるPHP5が開発中である。今回は,PHP5におけるXMLサポートの強化点とPHP関連のその他のトピックスについて紹介する。 PHP5ベータ3版が間もなくリリース 本稿執筆時点では,PHP5ベータ3版が間もなくリリースされることになっている。今後は新機能の追加は基本的に行わずにバグ修正を集中的に行う予定であり,早期の正式リリースを目指している。ただし,正式リリースが来年となることは間違いないだろう。11月末にコア開発者であるAndi Gutmans氏から,「PHP4上でユーザーが使用しているアプリケーションに関してPHP5との互換性を確認してほしい」とのアナウンスが行われた。正式リリースに向けて広範な環境でテストが行われ,安定したリリース版となることが望まれる。 一方,PHP4はPHP4.3.4が11月3日に正式リリースされた。この後も,種々のバグ修正作業が行われており,次のマイナー・バージョンアップにあたるPHP4.3.5にとりこまれる予定となっている。 直感的にXMLデータにアクセスできるSimpleXML XMLは,汎用のデータ・コンテナなどの様々な用途で使用されている。PHPはWebアプリケーション構築用のスクリプト言語としてHTMLでの使用をメインに設計されているが,XMLを早くからサポートしている。PHP4では,XMLの標準的インタフェースであるDOM,SAXがサポートされ,また,スタイルシートに基づきXMLデータの変換を行うXSLTもサポートされている。 PHP5においては,XMLのサポートも強化される。表1にPHP4とPHP5のXMLサポートの違いを示す。PHP4では,DOMインタフェースが独自の実装に基づいていたが,PHP5では標準的なDOMインタフェースへと変更される。この変更に伴い,Javaなどで書かれたコードの移植は容易になるであろう。反面,PHP4で書かれたDOMを処理するコードは修正が必要となる。 また,PHP5ではSimpleXMLと呼ばれるXML処理用インタフェースが新たにサポートされる。SimpleXMLは,文字通り直感的にXMLデータにアクセスできるインタフェースを提供するもので,XMLデータをPHPのオブジェクトへ自動的にマッピングさせることができる。このため,DOMを使う場合のようにXMLデータ・ツリーを再帰的に処理する必要がない。
表1●PHP4とPHP5のXMLサポートの違い
例えば,以下のような簡単な内容のXML文書book.xmlを処理することを考えてみよう。
「PHP4徹底攻略(実戦編)は,廣川,桑村,小山により執筆されました。」のような出力を得るコードをDOMインタフェースを用いて記述するとリスト2のようになる。 |
|
|
図1●PHPベンチマーク・テスト結果 (Windows XP Pro,Pentium III-M 866MHz) |
1. PHP3とPHP4/PHP5の性能差は非常に大きい。
2. PHP4の各マイナーバージョンにおける性能上の差異は小さい。また,必ずしもバージョンが上位のものが優れた性能を示すわけではない。
3. PHP5とPHP4の性能は同程度である。
最後の結果に関して,オブジェクト生成のベンチマークでも性能改善がみられないのは,やや意外の感があるが,テスト用のコードで使用されているクラスの定義が非常に簡単なものであったことが関係している可能性もある。
PHP5に軽量DBのSQLiteがバンドル
PHP5には,軽量型のリレーショナル・データベース・ソフトウエアであるSQLiteがバンドルされる。
SQLiteは,本格的なRDBMSと異なり,クライアント/サーバー型の構成ではなく,データが直接ファイルに保存されるファイル記録型のデータベースである。標準クエリ言語であるSQL92をサポート(一部機能は未サポート)するため,修得は容易である。SQLiteは,PostgreSQLやMySQLの2倍以上高速に動作すると言われており,データ型が基本的になく,整数を表す型以外はすべて文字列型とみなされることが特徴である。通常のSQLをサポートするデータベースではデータ型がサポートされることが普通であるため,注意が必要である。なお,CREATE TABLEの宣言において,BLOB,CHAR,CLOB,TEXTが現れないカラムは,数値型であるとみなされる。
データを保存する手段が標準でバンドルされることは,ユーザーが掲示板ソフトウエアなどのデータ記憶領域を必要とするアプリケーションをより容易に構築できるようになるというメリットがある。PHP4では,従来よりMySQLのクライアント・ライブラリがバンドルされていたが,別途,MySQLデータベース・サーバーをインストールする必要があった。SQLiteはそのままでデータベースとして使用できるため,別途,他のソフトウエアをインストールする必要はない。 SQLiteは,文字コードとしてISO8859-1(デフォルト)とUTF-8をサポートする。文字コードは,SQLiteをコンパイルする際に指定する必要がある。日本語などのマルチバイト文字を使用するユーザーは,UTF-8を指定する必要がある。
なお,従来よりバンドルされていたMySQLのクライアント・ライブラリは,MySQLが商用ライセンスとGPLのデュアル・ライセンスを厳格に適用することとなったため,PHP5にはバンドルされないことになっている。
今回は,PHP5におけるXMLサポートおよびSQLiteバンドルの話題と,その他のトピックスについて紹介した。次回以降では,引き続きPHP5の新機能や,PHP関連のトピックスを順次紹介していく予定である。
■著者紹介 廣川類(ひろかわ・るい)氏
PHPがまだPHP/FIと呼ばれていた1996年にPHPに出会い,以降,ドキュメント翻訳や国際化にかかわっている。著書に『PHP4徹底攻略』(ソフトバンクパブリッシング),『PHP4徹底攻略実戦編』(ソフトバンクパブリッシング)などがある。日本PHPユーザー会(2000年4月設立)ドキュメント部門幹事。