HipHop Virtual Machine (HHVM)とは
HipHop Virtual Machine(HHVM)は、Meta(旧
Facebook)が開発した、
実行時コンパイラ(JIT)方式を採用した仮想マシンです。主にPHPとHackという
プログラミング言語の実行環境として利用されてきました。HHVMは、コードを
中間言語であるHipHop
バイトコード(HHBC)に変換し、さらにそれを動的にx64
機械語へとコンパイル・最適化することで、高速な実行を実現します。
HHVMの動作原理
HHVMの実行プロセスは、まずPHPやHackのコードをHHBCという
バイトコードに変換します。このHHBCは、JITコンパイラとインタープリタの両方で利用できるように設計されており、最適化が施された後、x64の
機械語にコンパイルされます。そして、その
機械語がCPUによって直接実行されます。このプロセスは、
.NET Frameworkの
共通言語ランタイムや
Java仮想マシンなど、他の言語の仮想マシンとも共通する部分があります。
HHVMの誕生と発展
HHVMは、元々
Facebookで使用されていた、PHPを
C++に変換するタイプの処理系であるHipHop for PHP(HPHPc)の後継として開発されました。HPHPcの運用中に、パフォーマンスの限界や機能的な制約、開発・デプロイにおける課題が浮上したため、これらの問題を解決するために、2010年頃からJIT仮想マシンの開発が始まりました。
2013年には、facebook.comの実際の運用環境がHPHPcからHHVMへと切り替えられました。HHVMは、PHP 5.4のほぼ全ての機能を
実装し、create_function()やeval()といった動的なコード実行機能もサポートしました。また、バイナリビルドが不要となり、デプロイが容易になったことや、開発環境と本番環境で同じ処理系を使用できるようになったことも、大きな利点として挙げられます。
Hack言語との連携
HHVMの公開に合わせて、
Facebookが開発した「PHPの新たな形態」とも言えるHack言語も同時に利用可能になりました。Hackは、動的型付けと静的型付けを組み合わせた言語であり、関数の引数や返り値、プロパティに対して型チェックを適用できます(ローカル変数は除く)。ただし、HackではPHPの一部機能が利用できない点に注意が必要です。
パフォーマンス
Webサイトのパフォーマンスは、ユーザーエクスペリエンスに直接影響を与えるため、非常に重要です。HHVMは、実行時の型情報を活用することで、事前にコンパイルされたコードよりも優れた
スループットとレイテンシを実現することができます。2012年にはHPHPcに匹敵する性能を実現し、その後も継続的に高速化が進められました。
PHPサポートの終了とHackへの移行
HHVMは、当初PHPの実行環境として開発されましたが、
2018年9月にはPHPのサポートを段階的に終了することが発表されました。この背景には、Metaが開発した独自の
プログラミング言語Hackの登場と、PHP7の性能向上があります。PHPのサポートはHHVM 3.30までとなり、HHVM 4.0以降では完全に廃止されました。これにより、ユーザーにはHackやPHP7、または他のPHP実行環境への移行が推奨されました。
HHVMの現状と今後
2023年10月には、HHVMとHackの公式リリースを今後は行わないという発表がありました。これは、HHVMの開発が一段落し、他の技術への注力がシフトしたことを示唆しています。しかし、HHVMが過去に果たした役割と、その技術的な貢献は非常に大きいものであり、今後のソフトウェア開発に大きな影響を与え続けるでしょう。
まとめ
HHVMは、JITコンパイル技術を駆使してPHPやHack言語の高速実行を可能にした仮想マシンです。その開発の背景には、
FacebookのWebサービスを支えるための高いパフォーマンスへの要求がありました。PHPのサポートは終了しましたが、Hack言語の実行環境として、その技術は現在も活用されています。HHVMの歴史と技術は、仮想マシンや
プログラミング言語の進化を理解する上で重要な事例と言えるでしょう。
関連項目
Parrot
Phalanger
Zend Engine
外部リンク
ウェブサイト'>公式
ウェブサイト
GitHub上のソースコード
Internals of HHVM
HHVM Talk to Wikimedia in March 2013
Scaling with HipHop - YouTube
公式ブログ
Facebookページ'>公式
Facebookページ