ショートセッション
最大100倍高速化!PHPからJavaへのFFIを実現する、JNIを用いた高速なサーバAPIの実装方法
講演形式
ショートセッション
講演時間
08月25日(木) 18:00
〜 18:25
講演ルーム
第6会場
受講スキル
PHPのチューニングに関心がある方
サーバを運用している方
異なる言語間のInteropに関心がある方
PHPのC Extensionに関心がある方
得られる知見
ソーシャルゲームのWebAPIのチューニング方法
PHPとJavaのInteropの方法
PHP C Extensionの安全な本番投入のフロー
セッションの内容
ゲームサーバにおいてPHPからJavaライブラリを利用する際に処理効率と安定性、運用のしやすさを実現する実装方法と、この実装を導入する際の事例をウマ娘プリティーダービーおよびワールドフリッパーでの実例を踏まえてご紹介します。
近年ゲームサーバでは1つのブログラム言語だけが稼働していることは少なく、多少なりともスクリプト言語・コンパイル言語ともに使われているケースが多いです。通常ではPHPにライブラリを移植するといった手法がとられますが処理速度の面で問題がでるうえ、移植である以上元のJavaライブラリと処理の同一性を担保することもかなりの労力が必要となってしまいます。この点は高処理効率と運用のしやすさの両立を目指す必要があるゲームサーバとしては問題となります。
これを解決するためにCによるExtensionを作成しPHPからJavaライブラリを直接実行できるFFI(Foreign Function Interface)を実装しました。特に今回のケースでは処理時間はPHPで等価なコードを移植した場合に比べ、100msから1msと約100倍の差が出ました。この事例をもとに実装に至った経緯や、具体的な設計構成についてご紹介します。