これからは、コレ!旬なIT技術やこれから主流となりつつあるIT技術に関する情報をご紹介します。

2010年03月01日

更新ボタンを押さずに最新情報が表示
~Comet~

プル型とプッシュ型

従来のWebページでは、ユーザがWebページ上のボタンやリンクをクリックしたり、ブラウザの更新ボタンを押したりすることで、ブラウザの画面全てが書き換えられていました。
ブラウザの画面全体が書き換えられることによるサーバの負荷増に対して、解決策として現れた技術がブラウザの画面の一部を書き換えるAjaxです(Ajaxについては、以下のリンクを参照)。Ajaxの登場により、ブラウザの画面全体を毎回更新し、そこに表示される情報全てをやり取りするというデメリットは解決されました。

このように、ユーザの操作によりブラウザの画面を更新することを「プル型」と呼びます。これに対して、これから紹介する、サーバ側の指示をきっかけにブラウザの画面を更新することを「プッシュ型」と呼びます。プル形に対するプッシュ型のWebページのメリットは、ユーザのアクションを必要とせず、ブラウザに最新の情報を表示できることです。

プル型とプッシュ型Webアプリケーションの違い
図1.プル型とプッシュ型Webアプリケーションの違い

Cometとは

Cometとは、サーバでのイベント発生に合わせて、サーバからWebブラウザへデータを送信する、プッシュ型のWebアプリケーションを実現するための技術です。Cometを使用したアプリケーションでは、必要な時にいつでもサーバからWebブラウザへデータを送信することができます。また、サーバとWebブラウザ間の通信はAjaxを利用して行われるため、Webページの一部の情報だけを更新することができます。このため、Cometは「サーバサイドプッシュ」や「リバースAjax」とも呼ばれます。さらに、Cometは、特別なソフトウェアを必要とせず、ブラウザに搭載されたJavaScriptなどの標準化されたWeb技術を使用して実現することができます。
例えば、Cometを使用したアプリケーションでは、以下のようなことが行えます(図2参照)。

  1. Aさんがチャットに発言をする
  2. サーバに新しいデータ(Aさんの発言)が書き込まれる
  3. チャットに参加していたメンバー全員の画面にAさんの発言が表示される(Webページの一部のみが書き換えられる)

Cometを使用したアプリケーションの例
図2.Cometを使用したアプリケーションの例

Cometのメリット

これまでも自動的にWebページの更新を行うことで、サーバからWebブラウザへデータを送信することは可能でした。しかし、この方法では、サーバ側に新しいデータが存在しない場合にも通信が行われるため、サーバやネットワークに余分な負荷がかかっていました。

Cometを用いたWebアプリケーションでは、サーバに新しいデータが書き込まれたタイミングで、Webブラウザへデータを送信します。そのため、サーバやネットワークの負荷を抑えつつ、リアルタイムに情報を発信することができます。
以下の例に挙げているようなWebアプリケーション構築の際には、Cometの活用を検討されてみてはいかがでしょうか。

<Cometが適しているアプリケーションの例>

  • チャット
  • 株価・為替レート通知
  • スポーツの得点通知
  • Emailクライアント
  • オンライン共同作業ツール

2010年3月

ITの可能性が満載のメルマガを、お客様への想いと共にお届けします!

Kobelco Systems Letter を購読