ショートセッション

最大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倍の差が出ました。この事例をもとに実装に至った経緯や、具体的な設計構成についてご紹介します。

伊藤 英知

株式会社Cygames

サーバーサイド

シニアエンジニア

講演者詳細を開く >

<講演者プロフィール>

サイバーエージェントグループのソーシャルゲーム会社を経て、2012年より株式会社Cygamesに参画。
フィーチャーフォン/スマートフォンのブラウザおよび、スマートフォンのネイティブゲーム、コンシューマゲームの開発・運用に携わる。
負荷対策やミドルウェアの検証や社内で使用しているサーバフレームワークのメンテナンスなど社内のプロジェクトを横断的に支援、より安定して快適に遊べるよう日々開発を行っている。

<受講者へのメッセージ>

PHP ExtensionやJNIは一つ一つは昔からある枯れた仕組みですが、
適用する場所を見極めて組み合わせるとPHPからJavaのライブラリを直接呼び出すことができるようになります。
これによりメンテナンス性とパフォーマンスの両方の問題を同時に解決できたという事例を紹介します。
あわせて、新しいソリューションを安全に投入する際の留意点について解説します。
PHP Extensionや他の言語との連携にご興味のある方はぜひ御覧ください。
閉じる