分PHPユーザーの皆様,あけましておめでとうございます。本稿ではPHPとHHVMの2つのPHP処理系について紹介します。今後のPHPのトレンドを占うのにお役立ていただければ幸いです。本稿執筆時のPHPの最新バージョンは5.6.4です。5.5.0から14ヶ月後の2014年8月にリリースされました。5.6ではphpdbgという新デバッガが同梱されるようになるなど注目点もありましたが,過去のバージョンアップに比べると変化が小さいバージョンアップでした。ところで,PHPの次のバージョンアップではメジャーバージョンアップを予定しており,バージョン番号としては7.0となります。メジャーバージョンが5から7へと一気にジャンプするのは珍しい現象ですが,過去に開発中止となったPHP6と混同する恐れがあるというのが最大の理由です。PHP7は2015年11月リリースを目指しています。5.7をリリースするのかなどはまだまだ流動的と言えるでしょう。このPHP7については後ほど紹介します。すぎて質問の意味がわからないと言われそうですが,PHPの処理系はphp.netで配布されているものだけではありません。Javaで記述されたPHP実装のQuercusなど,昔から複数の実装が存在します。いえ,言語としてPHPを選ぶ人は保守的なせいか,ほかのPHP実装が商用環境に導入されることは滅多にありませんでした。Facebookが2012年に発表したHHVMだけは話が別です。HHVMは実用レベルの互換性を持っているうえに本家PHPより高速かつ省メモリで動作するのが特徴で,Facebookで利用されているのはもちろん,ほかの企業でも商用環境で利用する事例が増えてきています。Time)コンパイラの採用が挙げられるでしょう。これはプログラムの実行時にネイティブコードへのコンパイルを行う技術のことです。Engineという仮想マシン用のコードを実行しているのですが,この方式はCPUをエミュレートするようなものですから速度面では不利です。同じ処理であれば,JITコンパイルしてCPUのネイティブコードとして実行できたほうが有利になるはずです。HHVMではHackという言語も実行できます。HackはPHPと互換性の高い文法で厳密な型チェックを導入したような言語です。型を厳しく指定したほうがJITでのコンパイル結果を最適化できますから,重いPHPプログラムから順にHack化していくことで更なる性能改善を実現するような狙いだと想像できます。実際に,Facebookでは既に大半のPHPプログラムがHack化されているそうです。PHPを性能改善するメリットさて,性能改善それ自体は良いことのはずですが,PHPの処理が速くなって本当に嬉しいのでしょうか。そもそもPHPが主戦場としているWebアプリケーションでは,複雑な処理はリレーショナルデータベース(RDBMS)やキーバリューストア(KVS)といったミドルウェアに任せ,言語側では単純な処理しかしないことが多いように思います。考えれば,PHPはWebアプリケーションの記述言語として既に十分な速度と言えなくもありません。実際,WebアプリケーションではCPU性能よりも先にRDBMS性能がボトルネックになることが多く,PHPが速くなってもメリットが無いこともあります。万一CPUがボトルネックになったときでもロードバランシング環境であればWebサーバの台数を増やすだけで解決しますから,小さいシステムではあまりメリットが感じられないかもしれません。大規模なシステムでは状況が変わってきます。大規模システムで十分なパフォーマンスチューニングが行われると,各WebサーバのボトルネックがCPUかメモリ消費量かになってきます。Facebookの場合はサーバ台数が10万台オーダーと言われていますから,PHPが速くなってサーバ台数が減らせるなら相当額のコストダウン効果が見込めるわけです。この規模になるとHHVMへの投資費用も回収できるのかもしれません。Facebookの成果に乗っかるだけならFacebookほどの規模は必要ありません。現時点では多少トラブル覚悟での採用になるかもしれませんが,それでも一定以上の規模のサービスではHHVMの導入でコストメリットがあるはずです。実際,現時点で導入事例として紹介されているのは大きなサービスが多いですね。昨今HHVMが注目されていることは,こうした背景から説明できるでしょう。PHP7での挑戦ふたたびPHPの話題に戻ります。2014年のはじめ頃にPHPの性能改善プロジェクトPHPNGがスタートしました。Dmitryはその2年くらい前からPHPの性能改善に挑戦しており,特に既存のPHPにJITコンパイラを組み込むことに注力していたようです。ところが,JITコンパイルの導入で単純なベンチマークテストであれば高速になるけれども,実アプリケーションではほとんど差が出ないことがわかりました。詳しく調べてみると実アプリケーションにおいてはメモリの動的確保や配列操作などの処理が総実行時間の30%ほどを占めていたことから,この部分を改善するほうがJITコンパイラでの高速化よりも効果的だと判断したようです。対応する基本的なデータ構造を大幅に見直し,メモリを動的確保する回数を減らしたり,メモリ消費量を減らすような最適化を行いました。これによりPHPNGは意図した通りの性能アップを果たし,2014年8月にはPHP7のベースプロジェクトとして採用されるまでになりました。現在もPHP7の開発ブランチ上で細かい性能改善が続けられています。PHP7」からの引用ですが,WordPressでベンチマークテストしたときにPHP5.6の約1.7倍,HHVMに匹敵する性能となっています。PHP7の懸念点このように,PHP7は内部構造のリファクタリングにより過去のバージョンより高速かつ省メモリです。普段のマイナーバージョンアップと同様に後方互換性を重視しているため,既存のPHPソースコードは原則修正なしで移行できるはずです。聞くといいことずくめのようですが,一点問題となるのがPHPエクステンションです。PHP7では変数1個に対応するような基本的なデータ構造を変更したため,PHP5用のエクステンションをPHP7で動かすにはコードの修正が必要になります。このことがPHP7への移行の障害になる可能性があるでしょう。PDOやcurlといったPHPに同梱されているエクステンションの多くは既にPHP7対応が済んでおり,付属するテストも通っていますので一定の安心感はあります。同梱されているエクステンションでもたとえばphpdbgはまだPHP7対応が不十分ですし,その他のPECLエクステンションでは現時点で未対応のものが多いなど,PHP7のリリースに有名エクステンションの対応が間に合うのかはリスクが残る状況だといえます。まとめ本稿ではHHVMとPHP7の性能競争の状況について紹介しました。HHVMがJITコンパイルで速度を稼いでいる中で,PHP7はJITコンパイルせずに互角の性能になっているというのは興味深いですね。お互いがまだ性能改善の余地を残しているということかもしれません。そんなわけで,野次馬的な注目ポイントをまとめると次のようになるでしょうか。HHVM先行している利を生かして今後どれだけ利用者を増やせるか性能面でPHP7を突き放せるのかPHP7更なる性能改善ができるのかそもそも予定通りリリースできるのか無事リリースできたとしてPHP5からの移行が進むのか私自身,両者の動向を楽しみに追っていきたいと考えています。よしお)KLab株式会社所属。PHPを15年ほど利用しており,業務でPHPエクステンションを開発した経験も持つ。PHPに限らずOSSのソースコードを眺めて細かいバグを探すのが趣味。過去にPHPのバグレポートを約20件,HHVMには3件を送っている。『PHPライブラリ&サンプル実践活用[厳選100]』,Kindleストア・楽天Koboにて販売開始。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。