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の利用が始まるかもしれない。
関連リンク
情報をお寄せください:
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|
キャリアアップ
- - PR -
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
「イカゲーム」人気にドミノ・ピザも便乗 NetflixとCM共同制作の狙いは?
ケイト・トランブル氏がDomino’sのCMO(最高マーケティング責任者)に正式に就任して初...
2024年記憶に残った「生成AI活用事例」は? 課長以上に聞くマーケトレンド
アイブリッジは、マーケティング業務に携わっている従業員数100人以上の企業在籍の課長以...
IT部門にも教えたい 生成AIをマーケティングと営業に適用する最もふさわしいやり方
マーケティング、営業、カスタマーサポートなど顧客エンゲージメント領域における生成AI...