HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it. |
世界最大のソーシャルネットワークサービスFacebook。ユーザごとに画面構成の変更やアプリケーションの追加が可能という高いカスタマイズ性を提供しつつ、月4兆をこえるページビューをこなしている。この巨大なサービスを支える技術「HipHop for PHP」がオープンソースソフトウェアとして公開された。300,000行をこえるコードと50,000行のユニットテストコード。同技術はすでにFacebookのWebトラフィックの90%以上で活用され、PHPと同じライセンスのもとで公開されている。
HipHop for PHPはPHPのソースコードを最適化されたC++に変換するソースコード変換ツール。変換はPHPのコードを比較的そのままC++コードに置き換えることで実施される。なお、evel()などいくつかの関数は高速化のためにサポートから外されていると説明がある。変換されたソースコードはg++でコンパイルされ、ネイティブコードとして実行される。
一般的に、スクリプト言語はCやC++と比較して開発生産性が高く、一度開発したあとの繰り返し開発が簡単だとみられている。学習も容易でエンジニアも集めやすい。しかしスクリプト言語にはCやC++と比較すると実行速度が遅いという問題もある。HipHop for PHP: Move Fastによると、FacebookではPHPアプリケーション高速化のためにPHP処理の一部をPHPエクステンションとしてC++で開発することもしているが、この開発に従事できる開発者の数がPHPデベロッパよりも少ないことが紹介されている。
Facebookは日本の代表的なソーシャルネットワークサービスmixiと比較して、画面のカスタマイズ度もアプリケーションの組み込み度も高い。こうした高いカスタマイズ性と素早い開発を実施していくには、PHPのような開発効率が高くエンジニアを集めやすい言語が便利ということのようだ。しかしPHPはパワーを食う。そこで、デプロイ段階であらかじめC++に変換してコンパイルしておくことで性能もカバーする。開発効率と運用効率の双方をカバーするアプローチといえる。
PHPを別のプログラミング言語に変換して実行しようというアプローチは新しいものではない。すでにいくつかの実装が存在するが、HipHop for PHPは月4兆ビューをこえるFacebookですでに基盤技術として活用されているという実績が伴う。採用を検討にするにあたり十分に説得力のある材料といえる。
HipHop for PHPはFacebookのHaiping Zhao氏が8ヶ月をかけて基本となる仕組みをコードを開発。新しく2名のエンジニアを追加して10ヶ月開発。そのあとでプロダクションサーバにデプロイして試験を6ヶ月。合計2年ほどの開発期間をかけてから公開されているという。PHPはWebページやWebアプリケーションの開発言語として人気がある。HipHop for PHPはPHPで開発したシステムの高速化に活用できる技術として注目される。