PHP業界の重鎮 廣川類氏のコラム「次のPHPはどうなる? バージョン7.2でここが変わる」を公開しました。


こんにちは、こちらでコラムを執筆させて頂くことになりました廣川です。よろしくお願いします。仕事の傍ら、趣味でOSSの開発や普及活動に携わっており、日本PHPユーザ会のメンバーです。このコラムでは、PHPにまつわる話題を中心に、その他の技術全般に関わる話も含めて書かせて頂きたいと思います。

PHPとは?

まず、ご存知の方も多いとは思いますが、PHPについて簡単に紹介しておきます。PHPは、主にWebアプリケーションの構築に使用されるスクリプト言語です。PHPは、Webサーバー上で動作するいわゆるサーバーサイドのソフトウエアで、Webアプリケーション構築に必要とされる各種データベースとの連携機能やキャッシュ機能等を初め、高機能・高性能であることはもちろん、初心者にも学習の敷居が低いのが特徴です。
PHPは、1995年にRasmus Leodorf氏によりHTML埋め込み型の軽量スクリプト言語として作成されて以降、様々な改良を経て、多くの人々に使われるようになっており、現在ではWebアプリケーション構築用途において世界で最もメジャーな言語の一つとなっています。

PHPが世に出てから約22年が過ぎていますが、その間、現在に至るまでWebの世界は大きく広がり、使用される技術も大きく進歩しました。PHPは、その開発の歴史において、常に最新の技術を取り入れ、Webの歴史をリードしてきました。技術には流行り廃りがあり、特に技術の進歩のスピードが速いWebの世界で長期間に渡り人気を保ち、拡大していくことは容易ではありません。筆者は、PHPが成功した秘訣は、常に新しい技術を取り入れるだけでなく、それをユーザから見て使いやすい形で提供できたことにあると考えています。難しい課題を難しく解決するのはアプローチとしては簡単ですが、ユーザに高度な技術を意識させることなく、難しい課題を簡単に解決するのにはとても高度な技術が必要です。それを世界中の開発者が集まったコミュニティで長期に渡り実現しているのがPHPなのです。

PHP 7.2のリリース

さて、前置きはこのくらいにして、本題にいきたいと思います。PHPの最新版は、2016年12月にリリースされたバージョン7.1です。現在、次のバージョンとしてバージョン7.2の開発が進められており、順調に開発が進めば本年末にもリリースされる予定です。PHP 7.2では、高速化や高度な暗号機能の標準化などの機能強化が図られています。このコラムでは、今回から数回にわたり、PHP 7.2の機能強化や変更点について、紹介いたします。

PHP 7.2における機能強化のポイント

まず、PHP 7.2における機能強化および変更のポイントを以下にまとめます。

(1)スクリプト実行速度の高速化
(2)高度な暗号機能の標準サポート
(3)レガシー機能の廃止

(1)の高速化は、Webアプリケーション全体の高速化を直接意味するわけではなく、スクリプト言語としてのPHPの実行速度が速くなることを意味します。(2)の暗号機能は、昨今のセキュリティ攻撃の高度化に伴って最新の暗号化技術をより容易にユーザーアプリケーションに適用するための仕組みの導入に関係します。(3)は、推奨されなくなった古い機能を廃止する変更となります。以下、まず、(1)について説明します。

PHP 7.2における高速化

高速化の具体例として、PHPのソースコードアーカイブに含まれるベンチマークスクリプトbench.phpの実行例を図1に示します。図は、PHPの各バージョンによりbench.phpを実行した際の実行時間を示しています。実行時間が短いということは、実行速度が速いことを意味します。このベンチマークスクリプトbench.phpには、マンデルブロ集合などの代表的な複数のアルゴリズム処理が含まれており、PHPスクリプト言語によりユーザのアルゴリズムを実行した際の実行時間の指標となっています。図1を見ると、PHP 5系に比べて、PHP 7系では約3倍の大幅な高速化が図られていることがわかります。また、PHP 7系の間でも、マイナーバージョンが更新されるにつれ、徐々に高速化が図られていることがわかります。例えば、PHP 7.2ではPHP 7.1に比べて約10%の高速化が実現しています。
次に同じくPHPに含まれる別のベンチマークスクリプトmicrobench.phpの実行結果を図2に示します。このベンチマークでは、代入や四則演算といった、より低レベルのスクリプト言語の命令の実行速度を評価しています。こちらも図1と同様の傾向が見られ、PHP 7.2では過去のバージョンに比べた改善が図られています。
Webアプリケーション全体の実行速度はネットワーク通信回線、データベースサーバーやWebサーバの応答性にも依存するため、一概にスクリプト単体の実行速度の改善がアプリケーション全体の実行速度の改善に直結するわけではありませんが、特にPHPスクリプトにより複雑なアルゴリズムを実行する場合には一定の改善が期待できます。
PHPは、過去のバージョンで実行速度が他のスクリプト言語に切らべて遅いという批判をあびたこともありましたが、改良を続けたことで、現在ではそのような意見は聞かれなくなりました。20年近くに渡り様々な高速化手法を適用した言語処理系において、実行速度が更に2倍、3倍となるということは驚くべきことであり、PHPのスクリプトエンジンの開発者に敬意を評したいと思います。

少し長くなりましたので、バージョン7.2の機能強化及び変更のその他のポイントについては、次回のコラムで解説したいと思います。


図1 PHP各バージョンにおけるベンチマークスクリプトbench.phpの実行例


図2 PHP各バージョンにおけるベンチマークスクリプトmicrobench.phpの実行例


Post Author: 廣川類

廣川類
1996年からPHPを使い始め、マニュアルの翻訳や国際化などの活動に携わる。 PHPユーザ会の設立メンバーの一人。著書に「PHP徹底攻略」(ソフトバンクパブリッシング刊)などがある。