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の利用が始まるかもしれない。

関連リンク

(@IT 西村賢)

情報をお寄せください:

HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

注目のテーマ

ソリューションFLASH

「ITmedia マーケティング」新着記事

2021年の炎上発生件数は1766件、前年対比24.8%増――「デジタル・クライシス白書2022」
2021年のデジタル・クライシス(ソーシャルメディアを中心としたネット上で発生した危機...

若者のインスタ離れを食い止めるためにMetaが下した「古参ユーザー切り捨て」の決断
Metaの若者文化への主要な接点であるInstagramは現在、反撃を目指している。メタバースへ...

2022年のEC売り上げ、6割が「伸びる」と予測――フューチャーショップ調査
コロナ禍でも拡大し続けるEC、ポイントは口コミSNSの活用にありそうです。