Google Native Clientをあれこれ試してみた

海上忍
2008-12-11 15:00:00
Googleが、ネイティブコードをWebブラウザ上で実行する「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と判明。Native Clientのバイナリ形式は、Linuxと同じELFと判明。