サンドボックスで安全性確保、オーバーヘッド5%
ブラウザでx86バイナリ実行、グーグルが新技術
2008/12/09
米グーグルは12月8日、x86アーキテクチャ向けにコンパイルしたコードをWebブラウザで実行する研究開発プロジェクト「Native Client」(略称、NaCl)を発表した。Linux、Windows XP、Mac OS X上など異なるOSで実行できるという。現在対応するWebブラウザはFirefox、Safari、Opera、Chrome。
プロジェクトチームは同日、実行環境やコンパイラツール群をBSDライセンスでオープンソースとして公開した。NaClは開発初期段階で、セキュリティの専門家などからフィードバックを受けて開発を続けるとしている。また開発チームではx86以外にもPowerPCやARMなどほかのアーキテクチャのサポートに向けて開発を続けているという。
実行環境はWebブラウザ向けのプラグインとしてサンドボックスの形で提供する。実行前に静的解析を行い危険なx86コードが含まれないかをチェックする。従来こうした静的解析では、自己改変を行うコードなどのために任意のコードで安全性を保証することが難しかったが、NaClではこうした振る舞いを禁じることで対応したという。すでにランダムに生成したインストラクション列や、有効なインストラクションの組み合わせについても徹底した検証を終えているという。
サンドボックス上では、ネイティブ環境と遜色のないレベルでアプリケーションやモジュールを実行できるという。実行前にコードの安全性をチェックするためオーバーヘッドはあるが、スキャン速度は2.4GHzのCore 2 Duoで30MB/秒と高速で、ダウンロード時間に比べてスキャン時間は無視できるとしている。
サンドボックスを使うことによるオーバヘッドの最大の要因は、キャッシュミスでGCCや一部のベンチマークテストで大幅にストールが起こることがあるという。ただ、おおむねNaClのオーバーヘッドは5%程度に収まり、実際、物理シミュレーションやOpenGLベースのグラフィック処理アプリケーション、3Dゲーム、H.264のコーデックライブラリなどがネイティブコードと遜色ないパフォーマンスで動いているという。例えば3Dゲームの「Quake」では、Linux向けにコンパイルしたネイティブコードと、NaClのコードでまったく区別が付かない速度差になったという。
開発チームが公開したスクリーンショット。Mac OS XのSafari上でQuakeやマンデルブロー描画のx86ネイティブコードのアプリケーションが動くというプロジェクトではGCC 4.2.2をはじめとするコンパイラ関連ツールに手を加えて、NaClに対応したバイナリ生成ができるツールチェインを用意した。Linuxで使われる一般的なライブラリ、特にネットワーク関連やストレージ関連といったシステムコールを使わないアプリケーションやライブラリであれば、ほとんどソースコードの変更なしにNaCl対応バイナリにできるという。
NaClモジュールは信頼できるもの(trusted)と、そうでないもの(untrusted)を区別する。信頼済みコードは、例えばローカルのストレージにアクセスでき、リソースの濫用などを防ぐ。一方、必ずしも信頼できないコードは信頼できるNaClモジュールと通信して、ローカルPCのリソースなどを間接的に利用する。ActiveXは実行するモジュールを信頼するかどうかという二者択一のモデルだったが、NaClでは2種類を組み合わせて使える点が異なる。NaClモジュール間はSRPC(Simple RPC)や共有メモリを使ったIMC(Inter-Module Communication)と名付けられたインターフェイスで行うという。
プロジェクトチームはNaClモジュールは、比較的シンプルで重い計算処理が必要な画像処理、言語処理、物理シミュレーションなどの用途などに向くのではないかとしている。これは、SSEやマルチスレッドによる並列化の恩恵も受けられるネイティブコードをWebアプリケーションに生かす試みだ。将来的にDOMによる手軽なアクセスが提供できれば、ほとんどの処理をNaClモジュールがネイティブコードとして実行し、ごくシンプルなJavaScriptのラッパーを書くだけでWebアプリケーションを作成できるようになるだろうとしている。こうしたアプローチにはさらに、Webブラウザの中にとどまらない応用が考えられるが、今のところこうした可能性については追求しないという。
関連記事
情報をお寄せください:
- いまさら聞けないTwitter超入門−@IT記事も対応なう (2010/2/4)
Twitterは最近話題のつぶやきツール。基本的な使い方から、iPhoneアプリの使い方、RTの解説、4人のご意見番の活用例や感想まで - HTML5は開発者側の都合。ユーザーには関係ない (2010/2/2)
3つのレンダリングエンジンを載せている“国産”ブラウザベンダは、HTML5やWeb/ブラウザの進化について何を語るのか - テキスト・フォント周りをキレイに見せるCSS、13選! (2010/1/29)
無数にあるCSSのプロパティを大まかに分類し、1つずつ紹介していく本連載。初回は、テキスト・フォント周りについて - OpenGL ESが大変な3Dアプリ開発を楽にするUnity (2010/1/27)
iPhoneゲーム開発に必須のOpenGL ES。そのコーディングに手こずっている方に有用なツールを紹介し簡単なサンプルを作成します
|
|
スポンサーからのお知らせ
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |






