ブラウザでx86バイナリ実行、グーグルが新技術[08/12/09]

このエントリーをはてなブックマークに追加
1すあまψ ★
米グーグルは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のコードでまったく区別が付かない速度差になったという。

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

(続きは>>2以降)
2すあまψ ★:2008/12/09(火) 22:54:42 ID:???
プロジェクトでは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ブラウザの中にとどまらない応用が考えられるが、
今のところこうした可能性については追求しないという。

(終)
3名無しさん@お腹いっぱい。:2008/12/09(火) 23:02:53 ID:???
>>3げと
4名無しさん@お腹いっぱい。:2008/12/09(火) 23:27:05 ID:OvNTrQwu
これが普及したらJavaアプレットはいらない子になっちゃうのかい?
5名無しさん@お腹いっぱい。:2008/12/09(火) 23:37:39 ID:gEZlxXd/
6名無しさん@お腹いっぱい。:2008/12/09(火) 23:40:01 ID:???
7名無しさん@お腹いっぱい。:2008/12/09(火) 23:47:25 ID:???
和塩
8名無しさん@お腹いっぱい。:2008/12/09(火) 23:48:53 ID:???
>>4
否、プラットフォームフリーの流れに逆行する
x86はパソコンだけで他は非x86が主流なのです
9名無しさん@お腹いっぱい。:2008/12/10(水) 00:42:40 ID:zcHmcGYV
バックドアの巣窟になりそう
しかもgoogleだし見つかっても放置しそう
10名無しさん@お腹いっぱい。:2008/12/10(水) 02:07:12 ID:???
>>1
3行で(r
11名無しさん@お腹いっぱい。:2008/12/10(水) 02:26:22 ID:???
すげー
ネットOS、ネットアプリケーションの世界になるなあ。
でも、セキュリティが不安だが
12名無しさん@お腹いっぱい。:2008/12/10(水) 03:18:40 ID:???
ブラウザで動くPCエミュレータ?ググる先生の意図が全く掴めない。
13名無しさん@お腹いっぱい。:2008/12/10(水) 03:38:09 ID:???
べつにWebブラウザじゃなくてもいい気がする
14名無しさん@お腹いっぱい。:2008/12/10(水) 08:22:31 ID:???
何がしたいのかよく分からん
CPUだけエミュってもなあ
15名無しさん@お腹いっぱい。:2008/12/10(水) 12:52:49 ID:uRB7m0BN
これはグーグルOSの布石?
16名無しさん@お腹いっぱい。:2008/12/10(水) 12:56:10 ID:???
実行するバイナリがネットに置けるんだろ?
おそろしいじゃないか
17名無しさん@お腹いっぱい。:2008/12/10(水) 13:49:13 ID:Q41NrrZl
冷静に考えてみると実は大したことないような気もするが・・・・?
x86バイナリを動かせるというのはActiveXやプラグインと同じわけだし。
18名無しさん@お腹いっぱい。:2008/12/10(水) 13:53:43 ID:mZmwBS6z
OS非依存ってところが味噌か?
19名無しさん@お腹いっぱい。:2008/12/10(水) 16:29:04 ID:???
vista x64なので、windows用のzipをダウンロードしてバイナリ3ファイル(dllふたつとexeひとつ)を
Operaのプラグインフォルダっぽいところに突っ込んでサンプルHTMLを開いてみたが、
プラグインがクラッシュして動かんかった。
python2.4とか入れるの面倒でこれ以上やってないが、まだ馬鹿やものぐさが手を出すには早いか。

将来的にはDOMも手軽に扱えるようになるそうだから、単純にGUIライブラリ扱いで
楽にソフト作れるようになりそう。今はとにかくGUI作成が面倒すぎてたまらん。
20名無しさん@お腹いっぱい。:2008/12/10(水) 16:32:18 ID:???
とりあえずネットアプリがC++で書けるだけでもありがたい
21名無しさん@お腹いっぱい。:2008/12/10(水) 16:59:06 ID:???
楽にGUI作れるようになるのかね。
現状はその辺のAPIとか皆無なんでしょ?
quakeとかの3Dゲームは全部自前で描いてるから関係ないんだろうけど。

そもそもC/C++でアプリ書くのがJavaやAS、C#より楽になるのか・・・?
22名無しさん@お腹いっぱい。:2008/12/10(水) 19:15:13 ID:???
俺の予想ではこれはOSネイティブのAPIを呼び出すことは基本的に考慮していないはず。
(もっとも拡張機能的に追加されるかもしれないが)
共通のGUIを作れるとか言うのなら、それはJavaでいいわけだし。

これは、あるアルゴリズムを高速で動かす為のものだろう。
画面は今までどおりHTML+DOMで、JavaScriptの代わりにx86命令を使えるだけだろう。

もちろん、x86命令からJavaScriptを呼ぶことは可能になるだろうから、
JavaScript製のGUIライブラリを使うことで楽にGUI開発するということはありえる。

そのJavaScript製のGUIライブラリが重い? ならNaClを使って軽くしろ。こういう用途だろうね。
JavaScriptをx86にネイティブコンパイルするコンパイラも提供されるだろう。

最近はJavaScriptをコンパイルして実行する仕組みがブラウザに搭載されているが、
それをあらかじめサーバー側でやっておく。これでコンパイル時間を削減するのが目的だと思うよ。
23名無しさん@お腹いっぱい。:2008/12/10(水) 19:59:21 ID:???
ARMはJavaバイト・コードをネィティブに動かしてるよ
発想が逆、つーかJavaを速くするのはインテルの仕事
x86自体が中間言語、バイトコード的存在だし
24名無しさん@お腹いっぱい。:2008/12/10(水) 20:42:09 ID:???
>>23
意味不明
25名無しさん@お腹いっぱい。:2008/12/11(木) 03:58:40 ID:???
MSを出し抜きたいって考えだけじゃ駄目だな
もっとユーザフレンドリになってほしい
26名無しさん@お腹いっぱい。:2008/12/11(木) 05:36:22 ID:???
Googleはこういう直接利益に結びつかない事ばかりやってるイメージあるけど、
そんなに儲かってるのかねえ
27名無しさん@お腹いっぱい。:2008/12/11(木) 22:02:03 ID:???
>>24
CPUが直接バイトコードを実行する
仮想マシンではなくリアルマシン化で爆速
28名無しさん@お腹いっぱい。:2008/12/12(金) 00:47:49 ID:???
本末転倒だなw
29名無しさん@お腹いっぱい。:2008/12/12(金) 06:51:55 ID:???
これが流行ったらJavaの立場が危ういんじゃね
30名無しさん@お腹いっぱい。:2008/12/12(金) 13:28:19 ID:???
>>29
それ俺が>>4で言ったから
31名無しさん@お腹いっぱい。:2008/12/12(金) 20:41:27 ID:???
いやぁ、需要が無いだろコレ。
32名無しさん@お腹いっぱい。:2008/12/12(金) 20:42:23 ID:???
Javaアプレットならとっくに死んでる。
Flashにその座を奪われた。
33名無しさん@お腹いっぱい。:2008/12/12(金) 22:10:00 ID:vmz0GNkF
なんで、いまさら、あのぐちゃぐちゃなx86コードなんだ?
34名無しさん@お腹いっぱい。:2008/12/13(土) 03:19:34 ID:???
>>32
ゲームしかしないボウヤですか
35名無しさん@お腹いっぱい。:2008/12/13(土) 05:19:30 ID:???
アプレットは死んでんじゃないの? 今はJava Web Startがあるし。
36名無しさん@お腹いっぱい。:2008/12/13(土) 08:27:17 ID:???
どっちも同じだよ
クライアントサイドでのJavaなんてあってないようなもん
37名無しさん@お腹いっぱい。:2008/12/13(土) 11:08:12 ID:???
ブラウザで実行する意味あるのか?
38名無しさん@お腹いっぱい。:2008/12/13(土) 20:38:36 ID:???
>>34
Flashはゲームしか作れないと思っている人ですか?
39名無しさん@お腹いっぱい。:2008/12/13(土) 22:58:29 ID:???
>>32
そこでJavaFXですよw
40名無しさん@お腹いっぱい。:2008/12/14(日) 14:55:10 ID:???
夢の何OSでも動くマシンが実現すんの?
41名無しさん@お腹いっぱい。:2009/01/02(金) 15:13:19 ID:???
コンソールはエミュできるんだろうけど
各OSのGUI再現だのAPIはどうするつもりだろう
セキュリティも問題だな
プラグイン形式で配布?かしらんけど肥大化しまくりで普及するかも怪しい
42名無しさん@お腹いっぱい。:2009/01/03(土) 08:42:11 ID:???
エミュ厨哀れw
43名無しさん@お腹いっぱい。:2009/01/10(土) 19:11:12 ID:???
将来的には、マイクロカーネル+ドバイスドライバ+ブラウザの形になり、
今のようなファットOSはなくなってしまうのかも。
ブラウザがウィンドウシステムに取って代わる。
44名無しさん@お腹いっぱい。:2009/01/12(月) 04:20:07 ID:???
そして、そのうち、ブラウザの中のブラウザとかわけのわからんものが出てくるわけだなw
45名無しさん@お腹いっぱい。:2009/01/17(土) 01:11:10 ID:???
そして、そのうち、ブラウザの中のブラウザとかわけのわからんものが出てくるわけだなw
ブラウザを前画面表示にすれば違和感の無い
デスクトップ環境が作れるわな。

*nix系のOSを使ってれば~/.xinitrcとかでWMの替わりに

exec browser --geometry "フルスクリーンの解像度"

とやっとけばブラウザの中だけで完結する環境になるし。
osフリーな環境目指して第一歩ってとこだろ。
マイクロソフトはどうするんだろうね。
LinuxがWindowsに取って代わるといわれ始めた1998年。
10年たって一歩なら、100年は大丈夫って思ってるよw
LinuxがWindowsにとって代わる事は無いだろうが
Windowsは間違いなく廃れるよ
まあいつかは廃れる。

だがそれは、MSのビジネスモデル・・・すなわち
OSをパソコンにプリインストールして販売するという
ビジネスモデルに大きな変化が訪れたときだ。

今はまだ10年前と何も変わっちゃいない。
そう思う事で安心出来るんならそれでいいんじゃない?
占い師でも無いんだから先の事なんてどうでもいいよ
先のことがどうでもいいのなら、
廃れるとか先のこと語るなという話。
>>52
それは>>49に言えよ
まぁ廃れるだろうけどな
現にVistaが売れてないしシェアも少しずつだが減少してる
20年ほど前、CPUにスリムな命令体系、圧倒的なクロックMHz数が備わったの将来の本命とされたRISC型のCPUが登場 皆期待はありました
OS時代、同様にスリムなOSが求められているとされているが、どうでしょう?
CPUの時と同様に、、、、、、
>>54
神のみぞ知る
もっと軽いOSへの布石になるなら歓迎したい。
windows mac linuxみんな重たいんだよ
>>56
MacとWindowsは限界があるからどうにもならんけど
Linuxは好きなように出来るだろ

LinuxでもGNOMEやKDEで使える機能を全部使いたいなら
どれも大差ないけどさ。
実際はこのプラグイン向けのアプリとして制限つきで開発したものだけ動くんだろうな
APIやファイルシステムの互換性はどうしようもない