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

海上忍
2008-12-11 15:00:00
  • このエントリーをはてなブックマークに追加
最新特集【一覧】

Native Clientのココに注目

 Native Clientは、Googleが開発したWebブラウザ用ネイティブコード処理系。早い話が、ブラウザ上でマシン語プログラムを実行できるランタイム環境だ。ライブラリなどから構成されるランタイムと、各種Webブラウザに対応するプラグイン、そしてGCCベースのコンパイラツールで構成され、OSはWindowsとMac OS X、そしてLinuxの3種に対応する。現在のところ、CPUアーキテクチャはx86のみサポートされるが、ARMやPowerPCへの移植も進行中とのこと。

 注目すべき点はいくつかあるが、筆頭に挙げられるのはやはり「CPUネイティブの命令を実行できること」。JavaScriptなどスクリプト型言語に比べ処理速度に優れ、高負荷な演算を行うアプリケーションで力を発揮する。JavaやAlchemyとは異なり仮想マシンを介さないので、オーバーヘッドも少ない。ただし、UIの定義は行われていないため、現在主流のJavaScript+HTMLを置き換えるものではなく、画像の変形やエンコードなど速度を要する処理をローカルで行うための実装だといえる。

 もう1つは、CやC++をWebアプリケーション開発に使用できること。OS上で直接実行する場合に比べ制約はある(とはいえどマルチスレッドやSIMD命令まで使える!)うえ、再コンパイルは必須となるが、Native Clientの環境内で実行されるため、libc / libmath / libstdc++のほか、NPAPIやSRPCといった通信機構、Basic Multimedia Interfaceと呼ばれるマルチメディアAPIが用意されるなど、移植性はかなり高いと考えられる。実際、現行バージョンのNative Clientには、C言語で記述されている3Dシューティングゲーム「Quake」(SDL版)のパッチも同梱されている。

 そしてもう1つが、セキュリティ機構。同梱されるGCCベースのコンパイラは、サンドボックスと呼ばれる安全装置の枠内でのみ実行されるバイナリを生成、危険な処理を予防するというしくみだ。一般的に実装の形態が増えればそのぶん脆弱性が存在する可能性も高まるため、過信は禁物だが、Googleはセキュリティ重視の開発方針を示している。このあたりは、ユーザからのフィードバックを生かせるオープンソースの長所に期待したいところだ。

Native Clientは、主要Webブラウザにプラグインの形でインストールされる(画面はFirefox 3)Native Clientは、主要Webブラウザにプラグインの形でインストールされる(画面はFirefox 3)

地球の画像を回転させるデモ。ソースはC++で記述されている地球の画像を回転させるデモ。ソースはC++で記述されている

  • 新着記事
  • 特集
  • ブログ