

Googleが、Webブラウザ上でネイティブバイナリコードを実行する「Native Client」を公開した。

Native Client

http://code.google.com/p/nativeclient/

Google Earth,Quakeなどがすでに動いているようだ。

これはすごい！ブラウザ上でX86バイナリを動かす「Native Client」

http://www.moongift.jp/2008/12/native_client/

サンドボックスで安全性確保、オーバーヘッド5％

ブラウザでx86バイナリ実行、グーグルが新技術

http://www.atmarkit.co.jp/news/200812/09/nacl.html

あと、サンプルのlife.ccにSDL_surfaceと書いてあるのでSDLの描画まわりが既に動いているのだろうから、今後、たくさんのアプリがNative Clientに移植されると思う。Native ClientはActiveXの再来とかなんとか方々で散々叩かれているのだが、sandboxの仕組みがあるのがActiveXとは大きな違いだろう。

Native Clientは現在のところx86のバイナリをブラウザベースで実行できる。「C/C++で書いたコードに対してどうやればsandbox環境を提供できるのか？」について興味のある人も多いと思う。

そもそもそんなことが技術的に可能なら、docomoはFOMAシリーズにCPUリソースを食いまくるJavaなんて搭載しなかっただろうし、auだってBREWなんて うんこの漏る音のような 採用しなかったかも知れないし、Android携帯にしてもJavaなんかではなくC/C++で書かせてくれたほうがよっぽど処理速度面においてiPhoneに対抗出来たはずだ。

さて、Native Clientはどのような仕組みでこのsandbox環境を実現しているのだろう？

本当にこのsandboxは安全なのか？ActiveXと本当に大きく違うのか？

論文をざっと追いかけていこう。

Native Client: A Sandbox for Portable, Untrusted x86 Native Code

http://nativeclient.googlecode.com/svn/trunk/nacl/googleclient/native_client/documentation/nacl_paper.pdf