Facebookが公開したPHP仮想マシン「HipHop VM」とは

杉山貴章(オングス)
2011-12-20 12:34:00
  • このエントリーをはてなブックマークに追加
最新特集【一覧】

 ウェブの複雑化、高機能化が加速するなか、ウェブアプリケーション実行基盤の高速化は極めて重要な課題になっている。

 そんななか、米FacebookはPHP用の高速実行環境「HipHop Virtual Machine」(以下、hhvm)を発表した。今回は、この新しい仮想マシンについて紹介する。

HipHop VM開発に至る経緯

 Facebookでは、爆発的なユーザー数の増加に対応するため、アプリケーション実行速度の高速化が急務とされていた。しかし、Facebookの成長はすでに既存のPHPの枠組みでは対処が追いつかないレベルにまでなっていた。問題は、これまでに蓄積されてきた膨大な量のPHPコードベースだった。PHPを捨てて他の言語に移行するためには、それらのコードをすべて書き直さなければならない。

 そこでFacebookが選んだのは、アプリケーションのコードに手を加えるのではなく、PHPの実装そのものを改善する方法だった。

出典:Facebook Engineering

 そのための試みとして、同社では2010年より「HipHop for PHP」で2種類のPHPの実装を進めてきた。ひとつはPHPコードをC++コードに変換し、そこからバイナリコードを生成するHipHop compiler(hphpc)、もうひとつは独自のPHPインタプリタ実装であるHipHop interpreter(hphpi)だ。ネイティブ実行が可能な前者の方が圧倒的にパフォーマンスは高いが、静的なコード解析しか行うことができない上に、コンパイルの待ち時間が必要なことからPHPの手軽さが犠牲になる。Facebookでは社内のソフトウェア開発にはhphpiを使用し、外部向けの本番環境にはhphpcによって生成したバイナリコードを配備するという形で使い分けてきたという。

 しかしながら、このやり方では2種類の実装を同時にメンテナンスし続けるコストが必要となる。開発用と本番用で実行基盤が異なるというのも、テスト工程の増加など様々な面で問題をはらんでいることは想像に難くない。そこで同社が次の一手として開発したのがhhvmというわけだ。

 hhvmはJIT(Just-In-Time)コンパイラを搭載し、実行時に動的にバイナリコードを生成する。これによってhphpcのようにPHPコードをC++に変換することなく、直接高速に実行することができるようになる。サービスの開発から公開までの全域にわたって効率化を実現できることから、Facebook社内での注目度は高いという。

HipHop VMの仕組みと効果

  • 新着記事
  • 特集
  • ブログ