「PHP Conference 2015」レポート
event

「PHP Conference 2015」レポート

2015.10.22

ent125_img01.jpg

10月3日、PHPカンファレンス2015が大田区産業プラザPiOで開催された。PHP7のリリースを間近に控えた今年は、PHPの生みの親であるRasmus Lerdorf氏も登壇するとあって、2000人を超える開発者が集まる盛況ぶりとなった。本稿では、Rasmus氏の基調講演の模様をレポートする。
鶴田 展之

■11年ぶりのメジャーアップデート、PHP7

今年、PHPは最初のバージョンのリリースから20周年を迎える。筆者はPHPがPHP/FIと呼ばれていた頃、バージョン2.0からのユーザだが、正直、「えっもうそんなに経つの?!」という印象である。日々納期に追われていると、とにかく人生は矢のように過ぎ去っていく。開発者の業というのは怖ろしいものだ。

愚痴はともかくとして、20周年である。現在メインストリームで利用されているPHP5も、リリースされて11年が経過している。その間、PHP6がUnicode化にまつわる迷走から結局欠番になるといった悲劇もあったが、そこを乗り越えた分、PHP7はユーザが真に求めている部分によりフォーカスしたリリースになるはずだ。言語仕様がエレガントでない、遅い、セキュリティが甘い、などなど、とかく批判を集めがちなPHPではあるが、Webの世界では圧倒的なシェアを誇っているのもまた事実であり、久しぶりのメジャーアップデートは大きな関心を集めている。もちろん期待も大きいが、現場実務的な面では移行に伴うリスク、非互換への不安を抱いている人も多いことだろう。最初に結論を述べてしまうと、今回のPHPカンファレンスの目玉、PHPの生みの親であるRasmus氏の基調講演は、PHP7への不安を払拭し、期待を盛り上げる素晴らしいものであった。

ent125_img02.jpg

■改良は高速化が中心

PHP5からPHP7への改善点は多々あるが、今回の最大の改良点は「パフォーマンス」である。PHPのコアであるZend Engineはバージョン2からバージョン3になり、内部のデータ構造、Zend APIも含めて大きく変更されている。JITの導入は見送られたが、それでもPHP5に比べて2倍の高速化、大幅な使用メモリの削減など、性能は大きく向上した。

パフォーマンスの向上を詳しく紹介するために、Rasmus氏の講演でも、多くの時間が様々なPHPアプリケーションで行われたベンチマークテストのレポートに充てられた。性能比較のためのターゲットアプリケーションの筆頭は、やはり「WordPress」である。単純なBlogプラットフォームにとどまらず、簡易CMSの標準的な位置を占めている現状を考えると、WordPressでの性能改善をひとつの指標とするのは当然と言えるだろう。

ent125_img03.jpg

WordPress 4.1.1を用いたベンチマークテストでは、PHP7はPHP5から約3倍の高速化を実現している。ただし、HHVM(HipHop Virtual Machine)との比較ではほんの少し劣る。(HHVMはFacebookが開発したJIT方式のPHP/Hack実行環境1。)が、これだけでPHP7がHHVMより遅いと決めつけるのは早計だ。Drupal 8のように、HHVMよりPHP7の方が圧倒的に速いアプリケーションもあるからだ。

ent125_img04.jpg

HHVMはWordPressのようにメジャーなアプリケーションを主要なターゲットとして開発・チューニングされているため、比較的マイナーなアプリケーションでは期待した性能が出ないこともあるということなのだろう。また、開発者にとって特に興味深いのは、Laravel、Symfonyといったモダンなフレームワークを用いたアプリケーションでPHP7の性能向上が顕著になる点かもしれない。PHP5で書かれたアプリケーションには、そろそろ老朽化が進んでいるものも多いはずで、今後PHP7のリリースを契機としてリプレースのニーズも増えてくることが予想される。PHPerは、新しいフレームワークに目を配っておくのも重要になるだろう。

また、PHP7の高速化に大きく寄与する機能として、OPCacheの改善がある。従来、コンパイル済みのバイトコードは共有メモリにキャッシュされるだけだったが、PHP7ではディスク装置にもキャッシュできるようになった。これにより、Webサーバを再起動したときにもコンパイル済みバイトコードが利用でき、スクリプトをあらためてコンパイルし直すよりも立ち上がりの応答性能が4倍?10倍高速化される。CLI (Command Line Interface)でもOPCacheが利用できるので、シェルから実行する処理、cron実行されるバッチ処理なども高速化が期待できる。

■注意が必要なのは互換性?

これだけ大幅な高速化を実現するとなると、当然ネガティブな側面が心配になるユーザも多いだろう。最も懸念されるのは、やはり互換性である。これまで動いていたコードはそのままで動くのか。動かないとしたら、どの程度の改修が必要になるのか、である。しかし、一般的なアプリケーションであれば、問題が起きるケースは多くなさそうだ。Deprecatedな機能が残存しているPHP4時代のコードはさすがに要改修だが、PHP5からの文法や標準関数に関する非互換はほぼ無い。ただ、Zend APIがかなり変わっていることから、PECL等外部のエクステンションを利用している場合には注意が必要だ。場合によっては自力で同等のエクステンションを開発するか、エクステンションを使わずに実装する方向で改修しなければならないケースも出てくるだろう。

■性能以外の改善点

性能以外の言語機能面では、PHP 5.4までにかなり多くの改善が進んでいるため、メジャーアップデートの割には機能追加は多くはない印象だ。とはいえ、関数の戻り値や引数の型宣言、無名クラス、比較演算子の強化、これまで実行が停止されていたFatalエラーの一部を例外としてキャッチ可能にするなど、地味ながらもアプリケーションの信頼性を高める工夫がいくつか盛り込まれている。残念ながら本稿ではすべてを紹介できないので、詳しくは公式なドキュメントを参照して欲しい。

http://php.net/manual/ja/migration70.new-features.php

■オープンソース・コミュニティの力を実感する

筆者自身、PHPカンファレンスに参加するのは数年ぶりだったのだが、昔とは比べ物にならない規模のイベントになっていて非常に感慨深かった。Rasmus氏が個人的に便利なツールとして作ったPHPは、今や全世界のWebアプリケーションの80%で採用される最大のスクリプト言語になった。これこそ、オープンソース・コミュニティの力であり、この20年の成果だと言えるだろう。これまでPHPカンファレンスをずっと主催してきた日本PHPユーザ会の尽力にも、とにかく頭が下がる思いだ。

ent125_img05.jpg

<<日本PHPユーザ会 廣川類氏>>

以上を踏まえて、最後にRasmus氏からのお願いを読者の皆さんにお伝えして筆を置きたいと思う。 PHP 7は11月12日にリリースされる予定だが、すでにRC版が配布されていてテストも可能になっている。正式リリース後に大量のバグ報告が寄せられると、Rasmus氏をはじめPHP開発者たちは一気に不機嫌になるので、「今すぐに」テストを開始して、早いうちにどんどん問題を報告してほしいとのことだ。もちろん、バグの修正や、問題の切り分けに協力してくれる人も歓迎だそうなので、腕に覚えのある開発者はPHPバグトラッキングシステム等でサポートしていこう。

http://bugs.php.net/

コミュニティの協力があれば、PHPはこれからももっと便利で快適な言語になっていくだろう。

原稿:鶴田 展之
qnote代表取締役。オープンソースソフトウェアを用いたシステムインテグレーション及びコンサルティングの傍ら、技術書を中心に多数の著述活動を行う。 なお、オフィスには7匹の猫がいる。

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW