画像デコーダーなどの実績あるC/C++ライブラリをAndroidアプリに組み込む際、従来のJNI(Java Native Interface)はバッファオーバーフローやRCE(任意コード実行)といった深刻なセキュリティリスクを孕んでいます。しかし、巨大なコーデックをメモリ安全な言語でゼロから再実装することは、コストの観点から極めて困難です。
本セッションでは、その現実的な解決策としてWebAssembly(WASM)を取り上げます。Jetpack JavaScriptEngine を用いて隔離されたV8サンドボックス内でWASMを動作させ、多層防御アーキテクチャ、Binderの1MB制限に起因するプロセス間データ転送(IPC)のボトルネック(JSArray、Base64Url、Base85、Base32768のベンチマーク比較)、そして JavaScriptEngine 1.1.0 における MessagePort(ArrayBuffer直接転送)やファイルディスクリプタ(FD)を用いたパフォーマンス最適化について検証します。