- カテゴリ
- ネタ
ここ数日ブログ界隈を賑わせているGoogle Native Clientだが、それがブラウザ上でx86のコードを実行するだとか、処理が速いだとか、WebのOSだとか色々言われていて、もうわけわからん。
ちょっと落ち着いて考えてみました。
間違っていたらご指摘ください。
これはちょっと表現を慎重にしないといけないですね。
FlashやJavaのようなブラウザに対する層があるわけではなく、Native Clientとしてコンパイルされたアプリケーションは単体でも動作します。
ブラウザ上で動く。。。という表現は間違いではないと思うのですが、個人的にしっくりこないのは、Native Clientに対してブラウザがビルディングブロックの下になるという意味ではないから。
あくまでもブラウザの上のプラグインが、これらNative Clientと処理結果を通信する構成になります。
これはCPUリソースをフルに使えるというデモであって、3Dが昨今のゲーム並みにバリバリいけると言うことを示したデモではないようです。
コンパイルされたのはGL Quakeじゃなくて、CPUレンダリング版。
つまりハードウェアアクセラレーションは一切効いていないんです。
毎回レンダリングしなおしてフレームバッファ全とっかえしているように見えます。
おそらくNPAPI経由でこのデータをやり取りする仕様のためではないでしょうか。
OpenGLドライバ経由で動かす場合はブラウザ経由はあきらめて、スタンドアロンアプリケーションとしてSDLでGLコンテキストを持ったウインドウを作らないといけない気がします。
この表現もよく見かけるけど、真意についてはよくわからないッス。
安全に動かないx86バイナリであれば今までもずっと提供されつづけていたはず。。。
Native Clientがサーバサイドでも動くのであれば、端末からサーバへプラグインを送付して機能させるとかできたら面白そうだなと。
Facebookみたいな独自の拡張仕様を定義しなくてもいいし、OpenSocialのようにブラウザ経由でクライアント側で実行することもできたり。
そのうちARMやPowerPCなんかも対応されるとのことだし、Accept-languageみたいに、自己申告でプラットフォーム種別で与えられたら、対応するバイナリを返せるようにもなるはず。
Native Clientはまだ携帯電話で動かないので、Flashの需要がただちに脅かされることはないと思うのですが、それでもかなりすばらしい技術だと思います。
ちょっと落ち着いて考えてみました。
間違っていたらご指摘ください。
アプリケーション実行環境として他と比べて何が違う?
- Adobe Flash
- すべてのインストラクションセットをセキュアな観点も盛り込まれたレイヤーで処理するもの。
- 新しい土俵を定義したことで、Adobeはその上でなら仕様でもなんでも好き放題できるワンダフルワールドを作り上げてしまいました。
ただ、最近は仕様もオープンになってきて改善されてきていますね。 - Java
- Flash同様に、レイヤーで全ての問題を吸収しようとするが、ご存じのとおりClient側から干されて今はServer側で生きているテクノロジ。
- こちらも最近色々言われて変わりつつあるものの、SUNという企業がコントロールしているワンダフルワールドです。
うっかりレガシーって言おうもんなら色んな人から怒られます。 - ActiveXコントロール
- コントローラ経由でActiveXを起動しレイヤー抜きに実行できる環境を提供した代わりに安全性を宣言だけして済ませようとしたものです。
- Microsoftは俺様は危ないって言ったんだからお前が勝手に信じて実行したコードが危険でも知らないぞ、という自己責任が大切な世界を作り上げて有名になりました。
- Google Native Client
- そもそもアプリケーション自身が自らセキュアに動作すれば問題ないんだから、セキュアにビルドするための技術を提供したものです。
- いくつかの制限・制約さえ把握できれば、これのために新たに覚える技術はないのが良いですね。
コンピュータが悪さする問題はコンピュータが解決するのだ、というもっともらしいコンセプトが新しくも壮大なチャレンジとなっています。
ブラウザ上で動くの?
これはちょっと表現を慎重にしないといけないですね。
FlashやJavaのようなブラウザに対する層があるわけではなく、Native Clientとしてコンパイルされたアプリケーションは単体でも動作します。
ブラウザ上で動く。。。という表現は間違いではないと思うのですが、個人的にしっくりこないのは、Native Clientに対してブラウザがビルディングブロックの下になるという意味ではないから。
あくまでもブラウザの上のプラグインが、これらNative Clientと処理結果を通信する構成になります。
処理が速い!Quakeが動いたらしい!ブラウザで3Dバリバリいけるってこと?
これはCPUリソースをフルに使えるというデモであって、3Dが昨今のゲーム並みにバリバリいけると言うことを示したデモではないようです。
コンパイルされたのはGL Quakeじゃなくて、CPUレンダリング版。
つまりハードウェアアクセラレーションは一切効いていないんです。
毎回レンダリングしなおしてフレームバッファ全とっかえしているように見えます。
おそらくNPAPI経由でこのデータをやり取りする仕様のためではないでしょうか。
OpenGLドライバ経由で動かす場合はブラウザ経由はあきらめて、スタンドアロンアプリケーションとしてSDLでGLコンテキストを持ったウインドウを作らないといけない気がします。
これはWebのOSか?
この表現もよく見かけるけど、真意についてはよくわからないッス。
安全に動かないx86バイナリであれば今までもずっと提供されつづけていたはず。。。
個人的に注目する新しいポイント
Native Clientがサーバサイドでも動くのであれば、端末からサーバへプラグインを送付して機能させるとかできたら面白そうだなと。
Facebookみたいな独自の拡張仕様を定義しなくてもいいし、OpenSocialのようにブラウザ経由でクライアント側で実行することもできたり。
そのうちARMやPowerPCなんかも対応されるとのことだし、Accept-languageみたいに、自己申告でプラットフォーム種別で与えられたら、対応するバイナリを返せるようにもなるはず。
Native Clientはまだ携帯電話で動かないので、Flashの需要がただちに脅かされることはないと思うのですが、それでもかなりすばらしい技術だと思います。
[フレーム]
コメントする