出典 しゅってん : フリー百科 ひゃっか 事典 じてん 『ウィキペディア(Wikipedia)』
この項目 こうもく では、Webアプリケーション技術 ぎじゅつ について説明 せつめい しています。その他 た のCometについては「コメット 」をご覧 らん ください。
Comet (コメット)とは、Web アプリケーション を構築 こうちく する際 さい に利用 りよう される技術 ぎじゅつ で、この技術 ぎじゅつ を使 つか うと、サーバ で発生 はっせい したイベント をクライアント からの要請 ようせい なしにクライアント に送信 そうしん することができる。
Comet はこのような通信 つうしん を実現 じつげん するための複数 ふくすう の手法 しゅほう をまとめた概念 がいねん である。これらの手法 しゅほう はブラウザにプラグインを追加 ついか することなく、(JavaScript のような)デフォルトの機能 きのう で実現 じつげん されるものである。理論 りろん 的 てき には Comet は、ブラウザがデータを要求 ようきゅう する形 かたち の既存 きそん のウェブのモデルとは異 こと なっている。実際 じっさい は Comet アプリケーションは Ajax と Long polling を使用 しよう してサーバ上 じょう の新規 しんき データを取得 しゅとく する。
Cometは既存 きそん の技術 ぎじゅつ を利用 りよう してサーバーからの通信 つうしん を実現 じつげん する技術 ぎじゅつ であるが、既存 きそん の技術 ぎじゅつ は本来 ほんらい はサーバーからの通信 つうしん を想定 そうてい したものではなく、そのため不都合 ふつごう も多 おお かった。2011年 ねん には初 はじ めから双方向 そうほうこう 通信 つうしん を想定 そうてい した技術 ぎじゅつ であるWebSocket が定義 ていぎ されている。
従来 じゅうらい の方法 ほうほう では、ウェブページはクライアントからリクエストがあったときのみクライアントに配信 はいしん されていた。クライアントがリクエストするたび、ブラウザはサーバへの HTTP コネクションを生成 せいせい し、ウェブサーバはクライアントにデータを返 かえ し、そのコネクションは閉 と じられる。この方法 ほうほう の欠点 けってん は、ユーザが明示 めいじ 的 てき にページのリフレッシュを行 おこな うか、またはユーザが新 あたら しいページに移動 いどう する場合 ばあい にしか表示 ひょうじ されるページが更新 こうしん されないことである。ページをすべて転送 てんそう するのには長 なが い時間 じかん を要 よう するので、ページのリフレッシュは多大 ただい な遅延 ちえん を生 う みだす。
この問題 もんだい を解決 かいけつ するために、ブラウザに変更 へんこう があった部分 ぶぶん だけをリクエスト・更新 こうしん させる技術 ぎじゅつ である Ajax を用 もち いることができる。この方法 ほうほう だとデータ通信 つうしん 量 りょう が従来 じゅうらい の方法 ほうほう より少 すく なくなるため、遅延 ちえん の度合 どあい も少 すく なくなり、サイト全体 ぜんたい のパフォーマンスは向上 こうじょう するといえる。さらに言 い えば、非同期 ひどうき 通信 つうしん を用 もち いることにより、ユーザは段階 だんかい 的 てき にデータを受信 じゅしん しながら作業 さぎょう をすることが可能 かのう になるため、その意味 いみ でもパフォーマンスは向上 こうじょう する。
しかし Ajax を用 もち いたとしても、クライアントがサーバからデータを取得 しゅとく する前 まえ にはそれに対 たい するリクエストを出 だ さなければならないという苦 くる しい問題 もんだい は依然 いぜん 存在 そんざい する。この問題 もんだい は、例 たと えば「別 べつ のクライアントがデータを送 おく ってきた」というようなサーバ上 じょう でのイベントが発生 はっせい するのを待機 たいき する必要 ひつよう のあるアプリケーションを設計 せっけい するときに大 おお きな障害 しょうがい となる。
サーバ上 じょう でイベントが起 お こったかどうかを周期 しゅうき 的 てき に確認 かくにん させる(いわゆるポールループさせる)ようにアプリケーションを設計 せっけい するのはひとつの解決 かいけつ 策 さく である。しかしこの方法 ほうほう は、アプリケーションは結局 けっきょく サーバ上 じょう のイベントが完了 かんりょう したかどうかの問 と い合 あ わせに多 おお くの時間 じかん を使 つか ってしまうため、あまりエレガントとはいえない。また、ネットワークの帯域 たいいき も多 おお く消費 しょうひ されてしまう。
一般 いっぱん 的 てき に、Web サーバはクライアントからのリクエストを受 う け取 と るとすぐにレスポンスを返 かえ す。
Comet を利用 りよう した Web アプリケーションでは、サーバはクライアントからのリクエストに対 たい してすぐに応答 おうとう せず、保留 ほりゅう 状態 じょうたい にしておき、サーバ上 じょう でなんらかのイベント(チャットで誰 だれ かが発言 はつげん したなど)が発生 はっせい したときにレスポンスを返 かえ す。こうすることによって、サーバで発生 はっせい したイベントを即座 そくざ にクライアントに送信 そうしん することができる。