Google Native Clientをあれこれ試してみた
Native Clientのあれこれをチェックする
Native Clientには、豊富な数のサンプルソースコードが収録されている。ここでは、NASAが撮影した地球の静止画像を回転して表示する「earth」(nacl/googleclient/native_client/tests/earth)を例に、基本的なしくみを説明してみよう。
ディレクトリの内容をリストすると、earth.ccやMakefile、run.py、earth.htmlなどのファイルを確認できる。earth.ccはC++で記述されたソースで、Makefileはコンパイル作業用、run.pyは単独実行時に使用するPythonスクリプト、earth.htmlはブラウザ内に表示するためのHTMLファイルだ。
run.pyを確認すると、Native Clientのアプリケーションローダ(sel_ldr)を利用しているプラットフォームにより決め、earthのバイナリ(earth.nexe)をロードする、という手順で進められていることがわかる。ちなみに、直接sel_ldrからearth.nexeを実行すると、SDLをロードできずマルチスレッド処理できないため、表示速度は低下する。
このearth.exeをfileコマンドで確認してみると、Linuxなどで使用されているELFバイナリであることが判明。Native Clientの同梱物を調べてみると、nacl/googleclient/native_client/tools_bin以下に(筆者の場合はMac OS X用の)SDKが収録され、nacl-gcc-4.2.2やnacl-g++、nacl-asなどの開発ツールが含まれていることを確認できた。
以上、かなりの駆け足ではあるが、Native Clientのアプリケーションがどのように実行/生成されるか、その断片がわかったことと思う。公開から間もない実装系なだけに、これから時間をかけてリファレンスなりチュートリアルなりが整備されていくことだろう。
Native Clientのバイナリ形式は、Linuxと同じELFと判明。
- ホワイトペーパー



