Chromeでサーバ・クライアントとも実験可能に
Web SocketsでAjaxは不要になるか?
2009/12/11
グーグルのGoogle Chromeチームは12月9日、開発者向けの最新バージョン「Google Chrome developer channel release 4.0.249.0」で、Web Socketsに対応したことを明らかにした。デフォルトで有効となっていて、Pythonで書かれたApache向けモジュール「pywebsocket」と組み合わせることで、Web Socketsを利用したWebアプリケーション実装を始めることができるとしている。
Web SocketsはHTML5関連技術を取りまとめた「Web Applications 1.0」に含まれるサーバ・クライアント(Webブラウザ)間のAPIおよびプロトコル。HTML5に取り組むWHATWGがAPIを、IETFがプロトコルを策定作業中だ。Chrome開発チームの藤島勇造氏らによれば、プロトコルについてはまだ完全にフィックスされておらず、フィードバックを求めているという。
HTTPによる通信は、クライアント(Webブラウザ)からサーバへのリクエストと、それに対するレスポンスを繰り返す通信モデルであるため、サーバとクライアントが協調して動作するWebアプリケーションには強い制限があった。ユーザー操作のたびに画面が切り替わるようにするか、「XHR」(XMLHttpRequest)やロング・ハンギングGETと呼ばれるテクニックで疑似的に双方向通信を実現してきた。AjaxやCometと総称されてきたこれらの手法は、一般化したとはいえ問題を抱えていた。
Web Socketsでは、HTTPに代わるWeb Socketsのコネクションを確立すれば、send()メソッドでクライアントからサーバに任意のデータを送ることができるほか、逆にonmessage()メソッドでサーバからデータを受け取れる。
Web Socketsは、AjaxやCometに比べてシンプルであることが最大のメリットだが、このほかにも通信トラフィックを抑えられるメリットがあるという。Web Socketsプロトコル(ws://というURIスキームを使う)では、いったんコネクションが確立すると、HTTP上でCometを使うのと異なり、HTTPヘッダのオーバーヘッドがない。Google Chromeのプロダクトマネージャ、イアン・フェット(Ian Fette)氏の解説によれば、チャットサーバに対して「hi」と送るだけの通信であっても、CometではHTTPヘッダやクッキーのために容易に1KB程度に膨れあがる。一方、Web Socketsであれば、数バイトで済む。これは同時接続ユーザー数が少ない場合には問題とならないが、数十万ユーザーや数億ユーザーとなってくると大きな違いが出てくるのだという。もちろん、サーバ起点の通信ができないためにクライアント側からポーリングをするモデルでは、その分だけCPUやメモリがムダに消費されてしまうという欠点がある。
非互換の問題を超えて普及するか?
Web Socketsの恩恵を受けるアプリケーションとして、まず思い浮かぶのはGoogle Waveのようなリアルタイム性の高いアプリケーションだ。数文字単位でサーバとクライアントが常に通信を続けるようなアプリケーションでは、CometとWeb Socketsでは大きな差が出そうだ。先日英語向けでサービスを開始した、検索結果にリアルタイムで数秒前のTwitterやMySpaceの投稿やブログを動的ストリームとして表示し続けるようなものでも有効だろう。
いずれにしても、リアルタイム性の高いWebアプリケーションへのニーズが高まれば高まるほど、Web Socketsへの注目は集まるだろう。また今後、帯域が限られたモバイル端末がインターネット利用の中心となってくるとすれば、こうした軽量なプロトコルは、ますます重要性を増していくことだろう。
現在のところ、Web Socketsに対応しているWebブラウザはGoogle Chromeだけだが、Mozilla Firefoxで実装が進められているほか、OperaやWebKitベースのブラウザもこれに続くと見るのが自然だろう。iPhoneやAndroidが対応するのは時間の問題だ。
マイクロソフトがInternet ExplorerでWeb Socketsを実装する計画があるかは不明だ。ただ間違いなく言えるのは、今後Web Socketsの実装が各Webブラウザで進むのだとしても、AjaxとWeb Socketsの両方を使わなければならない期間が存在するということだ。フェット氏は、Google Web Toolkitのようなライブラリで、Web Sockets非対応ブラウザの場合にフォールバックするような形を示唆している。jQueryやprototype.jsなど主要なJavaScriptライブラリでも同様の対応が進めば、WebアプリケーションでのWeb Socketsの利用が始まるかもしれない。
関連リンク
情報をお寄せください:
TechTargetジャパン
- 次のモバイルアプリはどのフレームワークで作る? (2012/5/24)
スマホアプリの開発を容易にするJavaScriptのフレームワークが続々と増えている。それぞれの良さや仕組み、何がどこまでできるのかを徹底解剖する - 「LESS&専用エディター」でCSSをシンプルに書こう (2012/5/23)
「LESS」はCSS初心者に向けた、シンプルなライブラリだ。「LESS」で、変数などのプログラミングの基礎的な考え方もCSSで学ぼう - 学校が世界一のデジタル環境になったら (2012/5/18)
授業はアーカイブに蓄積され、家からも見られる。家族が授業テーマのアイデアを出す。そんな姿が実現されるかもしれない - 1000万ドル調達も夢じゃないクラウドファウンディング (2012/5/15)
クラウドファンディングは、寄付型でも投資型でもない「購入型」が主流。商品を“開発する前に販売”して開発費用を集める逆転のシステムだ
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
