いわゆる「PHP」は、オープンソースのWebアプリケーション開発/実行環境です。最近、「日経オープンシステム」の記者が、PHP開発センターの今後の開発計画について、センターのメンバーであるZeev Suraski氏にインタビューしました。 Zeev Suraski 氏は、PHP の新バージョンでは try や catch などのステートメントがインポートされ、Java に近くなり、大規模システムの開発が容易になると述べました。 (聞き手:高橋伸)
--PHPを開発しようと思ったきっかけを教えてください。
Rasmus Lerdorf は 1995 年に初めて PHP を発表しました。 1997年にイスラエルの大学のWebページやオンラインストアサイトを作成していたときに、当時PHP/FI(Personal Home Page/Form Interpreter)というツールを使っていたのが、PHPとの出会いのきっかけでした。使用中に大きなバグが発見されました。ソースコードが公開されているので、バグの原因を調査し修正を加えたところ、まだまだ改善の余地があることが分かりました。そこで、当時一緒にプロジェクトに取り組んでいた Andi Gutmans と一緒に PHP/FI スクリプト実行エンジンを修正しました。修正された実行エンジンは Lerdorf に引き渡された後、新しいバージョンの PHP3.0 の正式な実行エンジンになりました。
スクリプト実行エンジンを改善することで、より高速な Zend エンジンを開発しました。 Zend という名前は、Zeev と Andi を組み合わせたものです。 Zend Engine に組み込まれた PHP は、現在のバージョン PHP4 です。元のプログラムは読み出しながら解釈して実行していましたが、1実行サイクルに1回解釈するように変更したため、100サイクル実行するには同じ解釈処理を100回行う必要があります。 Zend Engine は最初にファイル全体のスクリプトを解釈し、実行を開始します。解釈処理が大幅に軽減されるため、実行速度が大幅に向上します。
PHP4 は、リリース後 2 か月以内に 265,000 回ダウンロードされました。アメリカの調査会社 Netcraft の統計によると、PHP は現在少なくとも 600 万台のドメイン ネーム サーバーにインストールされています。
PHP が人々の間で人気がある主な理由は、シンプルで実用的であることだと思います。以前、ある人が私にメールで「プログラミングの経験はありませんが、PHP を使って簡単なプログラムをわずか 3 時間で書きました」と言ってきました。 Javaではこれは不可能です。また、PHP は WWW 用に開発されたため、Cookie やフォームも簡単に扱うことができます。
PHP は無料であり、今後も無料でリリースされ続けますが、商用コストとサポート製品の要件を考慮して、Israel Zend は 1999 年に設立され、高速 PHP ソフトウェアと包括的な開発ツールを開発しました。販売用です。
--2002年末にリリース予定の新バージョンPHP5ではどのような機能が拡張される予定ですか?
オブジェクト指向の機能がさらに強化され、大規模システムの開発が容易になります。 PHP にはすでにクラスやサブクラスなどが存在しますが、PHP5 は Java に近くなります。 try や catch などの Java の特殊な処理ステートメント構造が導入されます。
PHP4では関数は変数として使用され、オブジェクトを与えても変化しません。 PHP は標準の割り当てを実行でき、オブジェクトに値を割り当てることもできるため、関数の値はオブジェクト自体ではなく、コピーされた値になります。関数をオブジェクト値に変更する必要がある場合は、変数としてオブジェクトの前に「&」記号を追加して、明示的にプロンプトを表示する必要があります。 Java ではこのようなプロンプトは必要なく、PHP5 では Java と同じパターンが使用されます。
また、PHP5 では名前空間 (Name Space) もインポートされます。名前空間が決定されると、関数、変数、クラス名の有効範囲はその名前空間に制限されます。名前の範囲が明確であれば、変数名や関数名を使用するときに重複した名前を無視できるため、大規模なプログラムの開発も容易になります。
「ストリーム」という新機能も便利な機能です。 WWWサーバーやftpサーバー上のファイルがローカルファイルと同じ機能を利用できるようになります。つまり、fopen(local filename) は fopen(hppt://hostname/filename) のように使用できます。圧縮ファイルは、通常の非圧縮ファイルと同様に処理できます。また、PHP5を待つ必要はなく、将来リリースされるPHP4には「stream」が搭載される予定です。
--PHP は HTML 埋め込みであるため、Java のようにプレゼンテーションと論理部分を分離することが難しく、モジュール化が難しいという指摘もありました。
実はPHPを使うと表示部分とロジック部分を完全に分離することができます。 PHPにはJavaオブジェクトを呼び出す機能があります。 PHP を表示層として使用し、Java オブジェクトをロジック層として使用できます。
もう 1 つの方法は、テンプレート ライブラリ Smarty を使用することです。 Smarty は、HTML テンプレートから HTML を動的に生成するツールです。 HTML で PHP ロジックが記述されていない場合でも、HTML に準拠した PHP 実行結果を生成できます。
ただし、いかなる場合でも表示とロジックを分離することが有利であるというわけではありません。例えば、小規模なシステムを開発する場合、分割すると複雑になり、全体を把握することが難しくなり、最終的には開発効率に影響を与えるというデメリットがあります。
-- 2002 年 2 月末、PHP に重大なセキュリティ脆弱性があることが判明しました。
PHP にはここ 5 年間重大なセキュリティ脆弱性はありませんでしたが、残念ながら 2 月末にファイルアップロード機能に問題が発見されました。
私たちはセキュリティが最も重要であると考えており、2 つの対策を講じています。まず、セキュリティ脆弱性レポートを受け取ってから 30 時間以内にパッチを作成し、公開しました。どのソフトウェアも、セキュリティ上の脆弱性が絶対に発生しないことを保証できません。今後も重大なセキュリティ上の脆弱性が発見された場合には、速やかに是正措置を講じるよう最善を尽くしてまいります。
次に、PHP のソースコードのチェックを開始し、セキュリティチェックを実施しました。自分自身のセキュリティ上の脆弱性でなくても、問題が発生する可能性のある部分を確認し、修正する必要があります。