(57)【要約】【課題】複数の端末装置に実装されたＷｅｂブラウザがＷｅｂサーバに設けられたメッセージ中継サーバを介してメッセージのやりとりをすることにより各Ｗｅｂブラウザの同期をとるシステムにおいて、メッセージ中継サーバの負担を軽減する。【解決手段】メッセージ中継サーバ２００は、各端末装置１２０から送信されてきた、該端末装置１２０におけるＷｅｂブラウザ３００に実装されたいずれかのアプリケーションソフトウェア３０４の動作により生じた上り通信メッセージを、受信順にキューに記憶する。端末装置に実装されたＷｅｂブラウザ３００は、各アプリケーションソフトウェアについて、該アプリケーションソフトウェアがメッセージ中継サーバ２００上のキューのどの位置までのメッセージを読み込んだかを管理し、下り通信用リクエストを送信する際に、メッセージ中継サーバ２００に通知する。【選択図】図１
2010225106.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置と、
ネットワークを介して前記複数の端末装置と接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバであって、キューを有し、端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順に前記キューに記憶すると共に、端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させるメッセージ中継サーバを備えた前記Ｗｅｂサーバとを有するシステムにおいて、
前記端末装置は、
自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアに対して、ウェブブラザ毎、かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤを付与するアプリケーションＩＤ管理部と、
各前記アプリケーションＩＤと、該アプリケーションＩＤに対応するアプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、前記メッセージ中継サーバから最後に受信した当該メッセージタイプを有するメッセージの、前記メッセージ中継サーバの前記キューにおける位置を示す位置情報であるポインタとを対応付けて記憶するポインタ記憶部とを備え、
自身のＷｅｂブラウザに実装されたいずれかのアプリケーションソフトウェアの動作によりメッセージが生じた際に、該メッセージのメッセージタイプと、該アプリケーションソフトウェアの前記アプリケーションＩＤと、メッセージ内容とが含まれる前記上り通信メッセージを前記メッセージ中継サーバに送信し、
所定時間間隔で、前記ポインタ記憶部を参照して、自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプとアプリケーションＩＤとポインタとを対応付けてなるアプリケーションリクエストが含まれる前記下り通信用リクエストを作成して前記メッセージ中継サーバに送信し、
該下り通信用リクエストに応じて前記メッセージ中継サーバから返送された、前記キューにおける位置情報とメッセージタイプとメッセージ内容とを対応付けてなる下り通信メッセージを含むレスポンスから、各下り通信メッセージに含まれるメッセージ内容を、該メッセージ内容に対応するメッセージタイプと同一のメッセージタイプを取り扱うアプリケーションソフトウェアに分配すると共に、前記レスポンスから、メッセージタイプ毎の前記位置情報の最大値を取得して、該最大値で前記ポインタ記憶部における該メッセージタイプに対応するポインタを更新し、
前記メッセージ中継サーバは、
前記上り通信メッセージを受信した際に、該上り通信メッセージと、該上り通信メッセージの受信順に対応した位置情報とを対応付けて前記キューに記憶し、
前記下り通信用リクエストを受信した際に、該下り通信用リクエストに含まれる各アプリケーションリクエストに対して、前記キューから、該アプリケーションリクエストに含まれるポインタが示す位置情報より大きい値を有し、かつ、該アプリケーションリクエストに含まれるメッセージタイプと同一のメッセージタイプに対応する位置情報を選出すると共に、選出したすべての位置情報について、該位置情報と、該位置情報に対応するメッセージタイプと、該位置情報に対応するメッセージ内容とからなる下り通信メッセージを作成して、位置情報の値の小さい順に前記レスポンスとして、リクエスト元の端末装置に送信することを特徴とするシステム。
【請求項２】
前記メッセージ中継サーバは、前記キューから、前記下り通信用リクエストに含まれる各アプリケーションリクエストに対して位置情報を選出する際に、該アプリケーションリクエストに含まれるアプリケーションＩＤと異なるアプリケーションＩＤに対応した各位置情報から選出することを特徴とする請求項１または２に記載のシステム。
【請求項３】
前記端末装置は、
自身から送信したメッセージを受信すると設定された際に、前記アプリケーションリクエストに含まれるアプリケーションＩＤを、前記アプリケーションＩＤ管理部が付与することのない特殊ＩＤに変更してから前記下り通信用リクエストを前記メッセージ中継サーバに送信することを特徴とする請求項２に記載のシステム。
【請求項４】
前記端末装置の前記アプリケーションＩＤ管理部は、終了されたアプリケーションソフトウェアが再度起動されたときに、該アプリケーションソフトウェアに対して、付与したことの無いアプリケーションＩＤを付与し直すことを特徴とする請求項２または３に記載のシステム。
【請求項５】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置とネットワークを介して接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバに設けられたメッセージ中継サーバであって、
端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順に記憶するキューと、
端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させる下り通信レスポンス部とを有し、
前記上り通信メッセージは、該メッセージを発生させたアプリケーションソフトウェアに付与された、Ｗｅｂブラウザ毎かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤと、該アプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、メッセージ内容とが含まれており、
前記下り通信用リクエストは、当該端末装置のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプと、アプリケーションＩＤと、当該端末装置が最後に受信した当該メッセージタイプを有するメッセージの、前記キューにおける位置を示す位置情報であるポインタとを対応付けてなるアプリケーションリクエストが含まれており、
前記キューは、端末装置からの上り通信メッセージと、該上り通信メッセージの受信順に対応した位置情報とを対応付けて記憶し、
前記下り通信レスポンス部は、端末装置から下り通信用リクエストを受信した際に、該下り通信用リクエストに含まれる各アプリケーションリクエストに対して、前記キューから、該アプリケーションリクエストに含まれるポインタが示す位置情報より大きい値を有し、かつ、該アプリケーションリクエストに含まれるメッセージタイプと同一のメッセージタイプに対応する位置情報を選出すると共に、選出したすべての位置情報について、該位置情報と、該位置情報に対応するメッセージタイプと、該位置情報に対応するメッセージ内容とからなる下り通信メッセージを作成して、位置情報の値の小さい順に前記レスポンスとして、リクエスト元の端末装置に送信することを特徴とするメッセージ中継サーバ。
【請求項６】
前記下り通信レスポンス部は、前記キューから、前記下り通信用リクエストに含まれる各アプリケーションリクエストに対して位置情報を選出する際に、該アプリケーションリクエストに含まれるアプリケーションＩＤと異なるアプリケーションＩＤに対応した各位置情報から選出することを特徴とする請求項５に記載のメッセージ中継サーバ。
【請求項７】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置と、
ネットワークを介して前記複数の端末装置と接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバであって、キューを有し、端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順に前記キューに記憶すると共に、端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させるメッセージ中継サーバを備えた前記Ｗｅｂサーバとを有するシステムにおける前記端末装置であって、
自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアに対して、ウェブブラザ毎、かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤを付与するアプリケーションＩＤ管理部と、
各前記アプリケーションＩＤと、該アプリケーションＩＤに対応するアプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、前記メッセージ中継サーバから最後に受信した当該メッセージタイプを有するメッセージの、前記メッセージ中継サーバの前記キューにおける位置を示す位置情報であるポインタとを対応付けて記憶するポインタ記憶部とを備え、
自身のＷｅｂブラウザに実装されたいずれかのアプリケーションソフトウェアの動作によりメッセージが生じた際に、該メッセージのメッセージタイプと、該アプリケーションソフトウェアの前記アプリケーションＩＤと、メッセージ内容とが含まれる前記上り通信メッセージを前記メッセージ中継サーバに送信し、
所定時間間隔で、前記ポインタ記憶部を参照して、自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプとアプリケーションＩＤとポインタとを対応付けてなるアプリケーションリクエストが含まれる前記下り通信用リクエストを作成して前記メッセージ中継サーバに送信し、
該下り通信用リクエストに応じて前記メッセージ中継サーバから返送された、前記キューにおける位置情報とメッセージタイプとメッセージ内容とを対応付けてなる下り通信メッセージを含むレスポンスから、各下り通信メッセージに含まれるメッセージ内容を、該メッセージ内容に対応するメッセージタイプと同一のメッセージタイプを取り扱うアプリケーションソフトウェアに分配すると共に、前記レスポンスから、メッセージタイプ毎の前記位置情報の最大値を取得して、該最大値で前記ポインタ記憶部における該メッセージタイプに対応するポインタを更新することを特徴とする端末装置。
【請求項８】
自身から送信したメッセージを受信すると設定された際に、前記アプリケーションリクエストに含まれるアプリケーションＩＤを、前記アプリケーションＩＤ管理部が付与することのない特殊ＩＤに変更してから前記下り通信用リクエストを前記メッセージ中継サーバに送信することを特徴とする請求項７に記載の端末装置。
【請求項９】
前記アプリケーションＩＤ管理部は、終了されたアプリケーションソフトウェアが再度起動されたときに、該アプリケーションソフトウェアに対して、付与したことの無いアプリケーションＩＤを付与し直すことを特徴とする請求項７または８に記載の端末装置。
【請求項１０】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置とネットワークを介して接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバに設けられたメッセージ中継サーバによるメッセージ中継方法において、
端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順にキューに記憶する記憶処理と、
端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させる下り通信レスポンス処理とを有し、
前記上り通信メッセージは、該メッセージを発生させたアプリケーションソフトウェアに付与された、Ｗｅｂブラウザ毎かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤと、該アプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、メッセージ内容とが含まれており、
前記下り通信用リクエストは、当該端末装置のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプと、アプリケーションＩＤと、当該端末装置が最後に受信した当該メッセージタイプを有するメッセージの、前記キューにおける位置を示す位置情報であるポインタとを対応付けてなるアプリケーションリクエストが含まれており、
前記記憶処理は、端末装置からの上り通信メッセージと、該上り通信メッセージの受信順に対応した位置情報とを対応付けて前記キューに記憶し、
前記下り通信レスポンス処理は、端末装置から下り通信用リクエストを受信した際に、該下り通信用リクエストに含まれる各アプリケーションリクエストに対して、前記キューから、該アプリケーションリクエストに含まれるポインタが示す位置情報より大きい値を有し、かつ、該アプリケーションリクエストに含まれるメッセージタイプと同一のメッセージタイプに対応する位置情報を選出すると共に、選出したすべての位置情報について、該位置情報と、該位置情報に対応するメッセージタイプと、該位置情報に対応するメッセージ内容とからなる下り通信メッセージを作成して、位置情報の値の小さい順に前記レスポンスとして、リクエスト元の端末装置に送信することを特徴とするメッセージ中継方法。
【請求項１１】
前記下り通信レスポンス処理は、前記キューから、前記下り通信用リクエストに含まれる各アプリケーションリクエストに対して位置情報を選出する際に、該アプリケーションリクエストに含まれるアプリケーションＩＤと異なるアプリケーションＩＤに対応した各位置情報から選出することを特徴とする請求項１０に記載のメッセージ中継方法。
【請求項１２】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置と、
ネットワークを介して前記複数の端末装置と接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバであって、キューを有し、端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順に前記キューに記憶すると共に、端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させるメッセージ中継サーバを備えた前記Ｗｅｂサーバとを有するシステムにおける前記端末装置によるメッセージ送受信方法であって、
該端末装置のＷｅｂブラウザに実装された各アプリケーションソフトウェアに対して、ウェブブラザ毎、かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤを付与する処理と、
各前記アプリケーションＩＤと、該アプリケーションＩＤに対応するアプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、前記メッセージ中継サーバから最後に受信した当該メッセージタイプを有するメッセージの、前記メッセージ中継サーバの前記キューにおける位置を示す位置情報であるポインタとを対応付けて記憶する処理と、
該端末装置のＷｅｂブラウザに実装されたいずれかのアプリケーションソフトウェアの動作によりメッセージが生じた際に、該メッセージのメッセージタイプと、該アプリケーションソフトウェアの前記アプリケーションＩＤと、メッセージ内容とが含まれる前記上り通信メッセージを前記メッセージ中継サーバに送信する処理と、
所定時間間隔で、自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプとアプリケーションＩＤとポインタとを対応付けてなるアプリケーションリクエストが含まれる前記下り通信用リクエストを作成して前記メッセージ中継サーバに送信する処理と、
前記下り通信用リクエストに応じて前記メッセージ中継サーバから返送された、前記キューにおける位置情報とメッセージタイプとメッセージ内容とを対応付けてなる下り通信メッセージを含むレスポンスから、各下り通信メッセージに含まれるメッセージ内容を、該メッセージ内容に対応するメッセージタイプと同一のメッセージタイプを取り扱うアプリケーションソフトウェアに分配すると共に、前記レスポンスから、メッセージタイプ毎の前記位置情報の最大値を取得して、該最大値で、当該メッセージタイプに対応するポインタを更新する処理とを有することを特徴とするメッセージ送受信方法。
【請求項１３】
当該端末装置自身から送信したメッセージを受信すると設定された際に、前記アプリケーションリクエストに含まれるアプリケーションＩＤを、全てのアプリケーションソフトウェアに付与されることのない特殊ＩＤに変更してから前記下り通信用リクエストを前記メッセージ中継サーバに送信することを特徴とする請求項１２に記載の端末装置。
【請求項１４】
終了されたアプリケーションソフトウェアが再度起動されたときに、該アプリケーションソフトウェアに対して、付与したことの無いアプリケーションＩＤを付与し直すことを特徴とする請求項１２または１３に記載のメッセージ送受信方法。
【請求項１５】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置とネットワークを介して接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバにメッセージ中継処理を実行させるプログラムであって、
前記メッセージ中継処理は、
端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順にキューに記憶する記憶処理と、
端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させる下り通信レスポンス処理とを有し、
前記上り通信メッセージは、該メッセージを発生させたアプリケーションソフトウェアに付与された、Ｗｅｂブラウザ毎かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤと、該アプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、メッセージ内容とが含まれており、
前記下り通信用リクエストは、当該端末装置のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプと、アプリケーションＩＤと、当該端末装置が最後に受信した当該メッセージタイプを有するメッセージの、前記キューにおける位置を示す位置情報であるポインタとを対応付けてなるアプリケーションリクエストが含まれており、
前記記憶処理は、端末装置からの上り通信メッセージと、該上り通信メッセージの受信順に対応した位置情報とを対応付けて前記キューに記憶し、
前記下り通信レスポンス処理は、端末装置から下り通信用リクエストを受信した際に、該下り通信用リクエストに含まれる各アプリケーションリクエストに対して、前記キューから、該アプリケーションリクエストに含まれるポインタが示す位置情報より大きい値を有し、かつ、該アプリケーションリクエストに含まれるメッセージタイプと同一のメッセージタイプに対応する位置情報を選出すると共に、選出したすべての位置情報について、該位置情報と、該位置情報に対応するメッセージタイプと、該位置情報に対応するメッセージ内容とからなる下り通信メッセージを作成して、位置情報の値の小さい順に前記レスポンスとして、リクエスト元の端末装置に送信することを特徴とするプログラム。
【請求項１６】
前記下り通信レスポンス処理は、前記キューから、前記下り通信用リクエストに含まれる各アプリケーションリクエストに対して位置情報を選出する際に、該アプリケーションリクエストに含まれるアプリケーションＩＤと異なるアプリケーションＩＤに対応した各位置情報から選出することを特徴とする請求項１５に記載のプログラム。
【請求項１７】
ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザであって、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えた前記Ｗｅｂブラウザが実装された複数の端末装置と、
ネットワークを介して前記複数の端末装置と接続され、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能なウェブサーバであって、キューを有し、端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順に前記キューに記憶すると共に、端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させるメッセージ中継サーバを備えた前記Ｗｅｂサーバとを有するシステムにおける前記端末装置にメッセージ送受信処理を実行させるプログラムであって、
前記メッセージ送受信処理は、
該端末装置のＷｅｂブラウザに実装された各アプリケーションソフトウェアに対して、ウェブブラザ毎、かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤを付与する処理と、
各前記アプリケーションＩＤと、該アプリケーションＩＤに対応するアプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、前記メッセージ中継サーバから最後に受信した当該メッセージタイプを有するメッセージの、前記メッセージ中継サーバの前記キューにおける位置を示す位置情報であるポインタとを対応付けて記憶する処理と、
該端末装置のＷｅｂブラウザに実装されたいずれかのアプリケーションソフトウェアの動作によりメッセージが生じた際に、該メッセージのメッセージタイプと、該アプリケーションソフトウェアの前記アプリケーションＩＤと、メッセージ内容とが含まれる前記上り通信メッセージを前記メッセージ中継サーバに送信する処理と、
所定時間間隔で、自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプとアプリケーションＩＤとポインタとを対応付けてなるアプリケーションリクエストが含まれる前記下り通信用リクエストを作成して前記メッセージ中継サーバに送信する処理と、
前記下り通信用リクエストに応じて前記メッセージ中継サーバから返送された、前記キューにおける位置情報とメッセージタイプとメッセージ内容とを対応付けてなる下り通信メッセージを含むレスポンスから、各下り通信メッセージに含まれるメッセージ内容を、該メッセージ内容に対応するメッセージタイプと同一のメッセージタイプを取り扱うアプリケーションソフトウェアに分配すると共に、前記レスポンスから、メッセージタイプ毎の前記位置情報の最大値を取得して、該最大値で、当該メッセージタイプに対応するポインタを更新する処理とを有することを特徴とするプログラム。
【請求項１８】
当該端末装置自身から送信したメッセージを受信すると設定された際に、前記アプリケーションリクエストに含まれるアプリケーションＩＤを、全てのアプリケーションソフトウェアに対して付与されることのない特殊ＩＤに変更してから前記下り通信用リクエストを前記メッセージ中継サーバに送信することを特徴とする請求項１７に記載のプログラム。
【請求項１９】
終了されたアプリケーションソフトウェアが再度起動されたときに、該アプリケーションソフトウェアに対して、付与したことの無いアプリケーションＩＤを付与し直すことを特徴とする請求項１７または１８に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の端末がＷｅｂサーバを介して会議などの協働作業を実施する技術に関する。
【背景技術】
【０００２】
インターネットの発展により、ユーザがコンピュータに実装されたＷｅｂブラウザを利用してＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）上に配置されたＷｅｂページを閲覧することは一般的に行われている。近年、Ｗｅｂブラウザは、コンピュータとして一般的なＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）のみならず、携帯電話やゲーム端末、テレビ器、ビデオ機器などにも実装されるようになっている。
【０００３】
また従来、遠隔に離れたユーザ同士がネットワークを介して会議などの共同作業を実施するための遠隔協働システムが提案されている。遠隔協働システムの利用形態として、ユーザ同士が同じ資料や図表などを同時に参照、描画したり、ファイルを互いに送受信したりする遠隔会議システムがある。このような遠隔会議システムでは、予めまたは一時的にユーザ同士である期間内の１つのグループを形成し、そのグループに属しているユーザ間で、各端末上で行った操作を操作メッセージとしてやりとりし、各端末で操作メッセージに対応した操作を再現することで遠隔に離れたユーザ間の会議を実現する。このようなグループの参加および期間はセッションとして管理され、セッションが継続している間は、そのセッションのメンバが操作メッセージをやりとりできるように制御される。
【０００４】
一般的に、このような遠隔協働システムを実現するために、ユーザが利用する端末で動作するプログラムは、上り通信として自端末で行われた操作を操作メッセージとして他の端末に送信し、下り通信として他の端末から送信された操作メッセージを受信してメッセージに記述されている操作内容を自端末上で実行する機能を持つ。
【０００５】
特許文献１には、Ｗｅｂブラウザをクライアントプログラムとして用いた遠隔協働システムが提案されている。このシステムでは、Ｗｅｂサーバ上に配置された表データが更新されるたびに、そのＵＲＬはメッセージとして各端末に送信される。各端末において、Ｗｅｂブラウザは、メッセージが示すＵＲＬを表示して更新された表データを表示する。
【０００６】
また、特許文献２には、Ｗｅｂブラウザにより表示中のＷｅｂページに対してある端末のユーザが行ったスクロールやクリック、テキスト入力などの操作をメッセージとして他の端末に送信し、メッセージを受信した他の端末のＷｅｂブラウザはそのメッセージに記述されている内容に従って操作を再現することで、表示中のＷｅｂページに対する操作を各端末間で同期させるシステムが開示されている。
【０００７】
Ｗｅｂブラウザをクライアントプログラムとして利用し、遠隔協働システムにおける操作の同期を実現するためには、メッセージの送信処理（上り通信）及び受信処理（下り通信）の機能を各端末のＷｅｂブラウザ上に実装する必要がある。Ｗｅｂブラウザは、他の端末のＷｅｂブラウザと直接通信する機能を備えていないため、通常、Ｗｅｂブラウザ間でやりとりされるメッセージを中継する手段（以下メッセージ中継サーバという）をＷｅｂサーバに実装し、該メッセージ中継サーバによりＷｅｂブラウザ間のメッセージを中継する。
【０００８】
ＷｅｂブラウザとＷｅｂサーバとの通信には、ＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）プロトコルが利用される。該プロトコルでは、基本的にＷｅｂブラウザがリクエストの送信元となり、ＷｅｂサーバはＷｅｂブラウザからのリクエストを受け取ってからそのリクエストに応じた処理を実施する。したがって、上述したメッセージの上り通信については、通常、ＷｅｂブラウザがＨＴＴＰリクエストを用いてメッセージ中継サーバにメッセージを届ける。一方、下り通信については、メッセージ中継サーバが能動的にＷｅｂブラウザに向かって通信を開始する手段がないため、通常の手段では実現できない。
【０００９】
特許文献２には、下り通信を実現するための手法が提案されている。この手法では、メッセージ中継サーバは各ブラウザが上がり通信で送信してきたメッセージを保持しておき、Ｗｅｂブラウザは、下り通信のために所定の間隔でメッセージ中継サーバにリクエスト（以下、下り通信用リクエストという）を送信する。そして、メッセージ中継サーバは、Ｗｅｂブラウザからの下り通信用リクエストを受信すると、該リクエストへのレスポンスとして、保持しているメッセージをリクエスト元のＷｅｂブラウザに送信する。これにより、完全なリアルタイムではないが所定間隔の遅延をおいて下り通信が実現され、各Ｗｅｂブラウザはメッセージを取得することが可能になる。この手法を、以下ポーリング手法という。
【００１０】
上記ポーリング手法を適用したシステムでは、メッセージ中継サーバがＷｅｂブラウザからの上り通信で受信したメッセージをすぐに他のＷｅｂブラウザに送信することができず、Ｗｅｂブラウザからの定期的な下り通信用リクエストを待つ必要がある。また、メッセージ中継サーバに既にメッセージがあるか否かに関らず、各Ｗｅｂブラウザは任意のタイミングで上り通信でメッセージをサーバに送信する。したがって、Ｗｅｂブラウザからのメッセージを一定期間蓄積するバッファをメッセージ中継サーバに備える必要がある。このバッファは、通常、Ｗｅｂブラウザから受け取ったメッセージを受け取った順に蓄積し、Ｗｅｂブラウザからの下り通信用リクエストがあった時に受け取った順に送信するキューとして実装される。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−２５９３２３号公報
【特許文献２】特表２００２−５１４３３２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
協働作業のセッションに多人数が同時に参加できるシステムの場合、セッション開始当初から全てのＷｅｂブラウザがそのセッションに参加しているとは限らず、セッションの途中で参加するＷｅｂブラウザが随時増減する可能性がある。途中でセッションに参加したＷｅｂブラウザも他のＷｅｂブラウザと同じ状態にしなければ協働作業が成り立たないため、途中から参加したＷｅｂブラウザに対して、以前送受信されたメッセージを全て送信して、そのメッセージの内容を実行させて他のＷｅｂブラウザと同じ状態にするための追い付き処理が行われる。この追い付き処理を実現するためには、セッション開始時からの全てのメッセージを保存しておく必要がある。
【００１３】
また、協働作業で行う作業は、ドキュメントのレビュー、ＣＡＤなどの設計図面の閲覧、オンラインチャット、ファイルの配信など多岐にわたり、Ｗｅｂブラウザにおいてはそれらに対応するアプリケーションも異なる。それぞれのアプリケーションは、各作業を実施するためにメッセージの送受信を行うが、それぞれのアプリケーションが送受信するメッセージの形式はアプリケーション毎に決まっており、ほとんどの場合、異なるアプリケーション同士ではメッセージ内容の互換性はない。したがって、メッセージ中継サーバはキューで管理するメッセージをアプリケーション毎に管理する必要がある。また、全てのＷｅｂブラウザで同じアプリケーションが動作しているとは限らず、この場合、各Ｗｅｂブラウザで受信を必要とするメッセージが異なる。
これらの理由により、メッセージ中継サーバではセッション毎にメッセージ蓄積用のキューを用意し、当該キューにおいては、各Ｗｅｂブラウザの追い付き処理用にセッション開始からの全てのメッセージを保存しておく必要がある上に、Ｗｅｂブラウザが通常の状態か追い付き処理中かを管理する必要がある。また、Ｗｅｂブラウザ毎に、アプリケーション毎にキューのどの位置にそのＷｅｂブラウザの当該アプリケーションが必要としているメッセージが保存されているかを管理する必要がある。
【００１４】
このようなキューの管理処理をメッセージ中継サーバで一元的に実装した場合、全てのＷｅｂブラウザ及びそのＷｅｂブラウザ上で動作しているアプリケーションの状態の追跡および監視をする必要がある。また、一般にＷｅｂブラウザは、ユーザの操作やネットワークの障害などによりその動作が急に停止したりするなどのことにより、その状態を把握できなくなる事態が多々発生する。さらに、メッセージ中継サーバでは、全てのアプリケーション毎にどこまでキューを読み込んだかを逐一管理する必要がある。これでは利用者や端末が増えるとサーバ上での管理が非常に複雑になり、遠隔協働サービスの継続が難しくなる。
【００１５】
本発明は、上記事情に鑑みてなされたものであり、遠隔協働システムにおいて、メッセージの管理を簡単にし、メッセージ中継サーバの負荷を軽減できる技術を提供する。
【課題を解決するための手段】
【００１６】
本発明の１つの態様は、システムである。このシステムは、複数の端末装置と、該複数の端末装置とネットワークを介して接続されたＷｅｂサーバを有する。
端末装置は、ユーザ同士が協働作業をするためのユーザインタフェースとして利用し、前記協働作業を行うための１つ以上のアプリケーションソフトウェアを備えたＷｅｂブラウザが実装されている。
【００１７】
Ｗｅｂサーバは、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）を介して各前記Ｗｅｂブラウザと通信可能であり、メッセージ中継サーバが設けられている。このメッセージ中継サーバは、キューを有し、端末装置に実装されたＷｅｂブラウザ上のアプリケーションソフトウェアの動作により生じ、該端末装置から送信されてきた上り通信メッセージを受信順に前記キューに記憶すると共に、端末装置からの下り通信用リクエストに応じて前記キューに記憶された上り通信メッセージからレスポンスを作成して該端末装置に送信することにより、前記複数の端末装置に実装されたＷｅｂブラウザを同期動作させる。
【００１８】
端末装置は、アプリケーションＩＤ管理部とポインタ記憶部を備える。アプリケーションＩＤ管理部は、該端末装置のＷｅｂブラウザに実装された各アプリケーションソフトウェアに対して、ウェブブラザ毎、かつアプリケーションソフトウェア毎に異なるアプリケーションＩＤを付与する。ポインタ記憶部は、各前記アプリケーションＩＤと、該アプリケーションＩＤに対応するアプリケーションソフトウェアが取り扱うメッセージのメッセージタイプと、前記メッセージ中継サーバから最後に受信した当該メッセージタイプを有するメッセージの、前記メッセージ中継サーバの前記キューにおける位置を示す位置情報であるポインタとを対応付けて記憶する。
【００１９】
端末装置は、自身のＷｅｂブラウザに実装されたいずれかのアプリケーションソフトウェアの動作によりメッセージが生じた際に、該メッセージのメッセージタイプと、該アプリケーションソフトウェアの前記アプリケーションＩＤと、メッセージ内容とが含まれる前記上り通信メッセージを前記メッセージ中継サーバに送信する。
【００２０】
また、端末装置は、所定時間間隔で、前記ポインタ記憶部を参照して、自身のＷｅｂブラウザに実装された各アプリケーションソフトウェアの、メッセージタイプとアプリケーションＩＤとポインタとを対応付けてなるアプリケーションリクエストが含まれる前記下り通信用リクエストを作成して前記メッセージ中継サーバに送信する。その後、該下り通信用リクエストに応じて前記メッセージ中継サーバから返送された、前記キューにおける位置情報とメッセージタイプとメッセージ内容とを対応付けてなる下り通信メッセージを含むレスポンスから、各下り通信メッセージに含まれるメッセージ内容を、該メッセージ内容に対応するメッセージタイプと同一のメッセージタイプを取り扱うアプリケーションソフトウェアに分配すると共に、前記レスポンスから、メッセージタイプ毎の前記位置情報の最大値を取得して、該最大値で前記ポインタ記憶部における該メッセージタイプに対応するポインタを更新する。
前記メッセージ中継サーバは、前記上り通信メッセージを受信した際に、該上り通信メッセージと、該上り通信メッセージの受信順に対応した位置情報とを対応付けて前記キューに記憶し、
【００２１】
前記下り通信用リクエストを受信した際に、該下り通信用リクエストに含まれる各アプリケーションリクエストに対して、前記キューから、該アプリケーションリクエストに含まれるポインタが示す位置情報より大きい値を有し、かつ、該アプリケーションリクエストに含まれるメッセージタイプと同一のメッセージタイプに対応する位置情報を選出すると共に、選出したすべての位置情報について、該位置情報と、該位置情報に対応するメッセージタイプと、該位置情報に対応するメッセージ内容とからなる下り通信メッセージを作成して、位置情報の値の小さい順に前記レスポンスとして、リクエスト元の端末装置に送信する。
【００２２】
なお、上記態様のシステムを方法や装置に置き換えて表現したもの、該システムに含まれるメッセージ中継サーバと端末装置、及びコンピュータをメッセージ中継サーバまたは端末装置として動作せしめるプログラムも、本発明の態様としては有効である。
【発明の効果】
【００２３】
本発明にかかる技術によれば、遠隔協働システムにおいて、メッセージ中継サーバは、各Ｗｅｂブラウザの動作の状態やそのＷｅｂブラウザ上で動作しているアプリケーションの種類、各アプリケーションがどこまでキューの中のメッセージを読み込んだかを管理する必要が無くなり、その実装を簡単にすることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態にかかるシステムを示す図である。
【図２】図１に示すシステムのＷｅｂサーバにおけるメッセージ中継サーバを示す図である。
【図３】図１に示すシステムの端末装置におけるＷｅｂブラウザを示す図である。
【図４】図２に示すメッセージ中継サーバにおけるセッション開始時の処理を示すフローチャートである。
【図５】メッセージ中継サーバのセッション管理部により管理されているセッションＩＤとユーザＩＤの例を示す図である。
【図６】メッセージ中継サーバのセッション管理部が作成したキューの初期状態の例を示す図である。
【図７】メッセージが蓄積されたときのキューの例を示す図である。
【図８】端末装置において、アプリケーションの処理開始時におけるＷｅｂブラウザの処理を示すフローチャートである。
【図９】端末装置のポインタ記憶部に記憶された内容の例を示す図である。
【図１０】上り通信時におけるＷｅｂブラウザの処理を示すフローチャートである。
【図１１】上り通信メッセージの一例を示す図である。
【図１２】上り通信時におけるメッセージ中継サーバの処理を示すフローチャートである。
【図１３】下り通信に関してのＷｅｂブラウザの処理を示すフローチャートである。
【図１４】下り通信用リクエストの例を示す図である。
【図１５】下り通信用リクエストへのレスポンスの例を示す図である。
【図１６】Ｗｅｂブラウザにおけるポインタ記憶部の更新後の例を示す図である。
【図１７】下り通信時におけるメッセージ中継サーバの処理を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、図面を参照しながら、本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【００２６】
図１は、本発明の実施の形態にかかるシステム１００を示す。システム１００は、遠隔に離れたユーザ同士が協働作業を実施するためのものであり、Ｗｅｂサーバ１１０と、複数の端末装置１２０とを備え、Ｗｅｂサーバ１１０と各端末装置１２０は、インターネットなどのネットワーク１３０を介して接続されている。
【００２７】
各端末装置１２０には、ユーザ同士が協働作業をするためのユーザインタフェースとして利用するＷｅｂブラウザ３００が実装されており、これらのＷｅｂブラウザ３００は、例えばＨＴＴＰプロトコルを用いてＷｅｂサーバ１１０と通信する。Ｗｅｂサーバ１１０には、各Ｗｅｂブラウザ３００間のメッセージを中継するメッセージ中継サーバ２００が設けられている。
【００２８】
図２は、メッセージ中継サーバ２００を示す。メッセージ中継サーバ２００は、セッション管理部２１０と、メッセージ受信部２２０と、送信メッセージ蓄積部２３０と、キュー記憶部２４０と、下り通信レスポンス部２５０を有する。下り通信レスポンス部２５０は、送信メッセージ選択部２５２と、メッセージ送信部２５４を備える。
【００２９】
セッション管理部２１０は、ユーザ同士の協働作業のセッションを管理し、セッションと後述するキューとの関係を保持する。メッセージ受信部２２０は、各端末装置１２０、具体的にはこれらの端末装置１２０におけるＷｅｂブラウザ３００から上り通信で送信してきたメッセージ（以下上り通信メッセージという）を受信する。送信メッセージ蓄積部２３０は、メッセージ受信部２２０が受信した上り通信メッセージをキュー記憶部２４０に記憶させる。キュー記憶部２４０は、セッション毎に用意されたキュー２４２を有し、各キュー２４２には、該セッションに属する各Ｗｅｂブラウザ３００からの上り通信メッセージが受信順に記憶されている。送信メッセージ選択部２５２は、Ｗｅｂブラウザ３００からの下り通信用リクエストに応じて、キュー記憶部２４０に記憶された上りメッセージの中から、下り通信用リクエストをしたＷｅｂブラウザ３００に送信すべきメッセージを選択する。送信メッセージ選択部２５２は、送信メッセージ選択部２５２が選択したメッセージを、下り通信用リクエストをしたＷｅｂブラウザ３００に送信する。
【００３０】
図３は、各端末装置１２０に実装されたＷｅｂブラウザ３００を示す。Ｗｅｂブラウザ３００は、当該Ｗｅｂブラウザ３００を利用するユーザを示すユーザＩＤを管理するユーザＩＤ管理部３０２と、協働作業をするための処理を実行するための複数のアプリケーションソフトウェア（以下単にアプリケーションという）３０４と、該Ｗｅｂブラウザ３００上で動作する各アプリケーション３０４を管理するためのアプリケーション管理部３０６と、各アプリケーション３０４を一意に指定するためのアプリケーションＩＤ（一時ＩＤともいう）を管理する一時ＩＤ管理部３０８と、各アプリケーション３０４で生成されたメッセージを上り通信としてメッセージ中継サーバ２００に送信するための上り通信部３１０と、メッセージ中継サーバ２００にリクエスト（下り通信用リクエスト）を送信してメッセージを取得するための下り通信部３１２と、メッセージ中継サーバ２００へ下り通信用リクエストを送信する間隔（リクエスト間隔）を管理する下りタイミング管理部３１４と、下り通信部３１２が取得したメッセージを、該メッセージに対応したアプリケーション３０４に分配するメッセージ分配部３１６と、上記メッセージがメッセージ中継サーバ２００上のキューにおける位置情報と、該メッセージを処理するアプリケーション３０４とを関連付けて蓄積するポインタ記憶部３２０とを備える。
【００３１】
Ｗｅｂブラウザ３００の上記各機能ブロックは、一般にＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）と呼ばれる記述方法で定義され、さらにはＪａｖａ（登録商標）Ｓｃｒｉｐｔ、ＡｃｔｉｖｅＸ、Ｆｌａｓｈなどと一般的に呼称されるＷｅｂブラウザ上でプログラムを動作させる仕組みを用いて実装される。
【００３２】
次いで、メッセージ中継サーバ２００とＷｅｂブラウザ３００の動作と共に、メッセージ中継サーバ２００とＷｅｂブラウザ３００の各機能ブロックの詳細を説明する。
【００３３】
図４は、メッセージ中継サーバ２００でのセッション開始時の処理を示すフローチャートである。
まず、メッセージ中継サーバ２００において、セッション管理部２１０は、遠隔協働作業のセッションを作成する（Ｓ１００）。この時、セッションの開始方法については従来知られている任意の手法を用いてもよい。例えば、セッション管理部２１０と電話回線交換機とが接続された状態において、電話による通話の開始をセッションの開始とし、通話者同士をセッションの参加者とすればよい。また、別途、端末装置１２０上のＷｅｂブラウザ３００からセッション管理部２１０に接続し、Ｗｅｂブラウザ３００側の操作によってセッションの開始とセッションの参加者が定義されるようにしてもよい。
【００３４】
セッション管理部２１０は、当該セッションを示すＩＤ（セッションＩＤ）と、ユーザを識別するためのＩＤ（ユーザＩＤ）とを関連付けて管理する。なお、セッションＩＤとユーザＩＤを関連付けて記憶する手段としては、セッション管理部２１０自身であってもよいし、メッセージ中継サーバ２００に設けられた別の記憶手段や、メッセージ中継サーバ２００以外のデータベースサーバといった別のサーバであってもよい。
【００３５】
図５は、セッション管理部２１０により管理されているセッションＩＤとユーザＩＤの例を示す。
図示の例では、「Ｕｓｅｒ１」と「Ｕｓｅｒ２」はセッション「０００００１」に参加しており、「ＵｓｅｒＡ」、「ＵｓｅｒＢ」、「ＵｓｅｒＣ」はセッション「０００００２」に参加している。
【００３６】
セッションが開始されると、セッション管理部２１０は、セッション毎に、該セッションのセッションＩＤに対応するキューを作成する（Ｓ１０２）。図６は、セッション管理部２１０がセッション「０００００１」に対して作成したキューの例を示す。
【００３７】
図６に示すように、セッション管理部２１０が作成したキュー２４２には、Ｗｅｂブラウザ３００から上り通信で送信されてきたメッセージ毎に、「シーケンス番号」と、「一時ＩＤ」と、「メッセージタイプ」と、「メッセージ内容」とを対応付けて格納するように構成されている。これらの各項目の意味については後述する。
【００３８】
セッション管理部２１０がキューを作成した段階では、まだメッセージが１つも蓄積されていない。その後、協働作業の開始に従って、各端末装置１２０におけるＷｅｂブラウザ３００からメッセージがメッセージ中継サーバ２００に送信される。メッセージ中継サーバ２００において、送信メッセージ蓄積部２３０は、メッセージ受信部２２０により受信したメッセージを、キュー記憶部２４０における当該キューに蓄積させる。
【００３９】
図７は、メッセージがある程度蓄積された後のキューの例を示す。これも、セッション「０００００１」のキューの一例である。
【００４０】
１列目の「シーケンス番号」は、メッセージの受信順に対応し、本実施の形態においては、０から始まり１ずつインクリメントする整数が用いられる。２列目の「一時ＩＤ」は、当該メッセージを送信したＷｅｂブラウザ３００上で動作するアプリケーションを示すＩＤであり詳細については後述する。３列目の「メッセージタイプ」は、そのメッセージを用いるアプリケーションの種別を表す文字列である。４列目の「メッセージ内容」はメッセージの本体であり、文字だけでなく任意のデータを値であり得る。なお、「「一時ＩＤ」と、「メッセージタイプ」と、「メッセージ内容」は、端末装置１２０から送信されてきた上り通信メッセージに含まれたものである。
【００４１】
図７に示すように、例えば、シーケンス番号「０」のメッセージは、一時ＩＤ「Ａ０００１」を持つアプリケーションから送信されており、メッセージタイプは「ＣＨＡＴ」でメッセージ内容として「ＨＥＬＬＯ」が指定されている。
【００４２】
また、シーケンス番号「３」のメッセージは、一時ＩＤ「Ｂ０００２」を持つアプリケーションから送信されており、メッセージタイプは「ＦＩＬＥ」でメッセージ内容として「ＦＩＬＥ＝ＢＣＤ．ＢＩＮ」が指定されている。
【００４３】
図８は、端末装置１２０において、アプリケーション３０４の処理開始時におけるＷｅｂブラウザ３００の処理を示すフローチャートである。アプリケーション３０４の処理は、例えば端末装置１２０のユーザがＷｅｂブラウザ３００を用いて起動することにより開始される（Ｓ１１０）。アプリケーション３０４の起動の仕方は、通常のＷｅｂブラウザと同様である。例えば、ＷｅｂブラウザにＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）を指定することで、当該ＵＲＬに関連づけられたＨＴＭＬが読み込まれ、ＨＴＭＬ上の定義に応じてＷｅｂブラウザ３００の各機能ブロックが動作する。この仕組みは通常のＷｅｂブラウザを利用した操作と同様であり、ここでは詳細な説明を省略する。
【００４４】
アプリケーションの処理が開始されると、アプリケーション管理部３０６は、ユーザＩＤ管理部３０２を用いて、当該Ｗｅｂブラウザ３００を利用しているユーザのユーザＩＤを取得する（Ｓ１１２）。ユーザＩＤの取得方法は、従来知られている種々の方法を用いることができる。例えば、ＨＴＭＬ中に記述されている、ユーザＩＤを示す文字列を取得する方法や、Ｗｅｂブラウザに一般的に備えられているＣｏｏｋｉｅという仕組みを利用する方法や、ユーザに入力を促すなどの方法が考えられる。
【００４５】
次に、アプリケーション管理部３０６は、当該Ｗｅｂブラウザ３００上で動作するアプリケーション３０４を初期化すると共に、一時ＩＤ管理部３０８から各アプリケーション３０４の一時ＩＤを取得する（Ｓ１１４）。
【００４６】
一時ＩＤは、Ｗｅｂブラウザ３００上で動作しているアプリケーション３０４を一意に識別するために利用するものである。一時ＩＤ管理部３０８は、アプリケーション３０４に対して、Ｗｅｂブラウザ３００毎にかつアプリケーション毎に異なる一時ＩＤを付与する。同じユーザが複数のＷｅｂブラウザ３００を利用して同じアプリケーション３０４を使っている場合でも、Ｗｅｂブラウザ３００毎にそれぞれ異なる一時ＩＤが生成される。また、同一Ｗｅｂブラウザ３００においてもＵＲＬの変更などにより一度アプリケーション３０４が終了され、アプリケーション３０４が再度起上げされた場合には、前の一時ＩＤと異なる一時ＩＤが生成される。
【００４７】
一時ＩＤの生成は、例えば、メッセージ中継サーバ２００上で現在時刻とＩＰアドレス、乱数などを元に基となる文字列を作成し、Ｗｅｂブラウザ３００上でアプリケーション３０４毎に基となる文字列に番号を追加して一時ＩＤを生成するなどの方法が考えられる。勿論、Ｗｅｂブラウザ３００の一時ＩＤ管理部３０８により、自身が設けられた端末装置１２０のＩＰアドレスと現在時刻と乱数などを元に基となる文字列を作成するようにしてもよい。
【００４８】
次に、アプリケーション管理部３０６は、ステップＳ１１４で取得した各一時ＩＤを、該一時ＩＤに対応するアプリケーション３０４に渡す（Ｓ１１６）。
【００４９】
各アプリケーション３０４は、渡された一時ＩＤを記憶し、自身固有の初期化処理を実施する。初期化完了後、該アプリケーション３０４は、初期化の完了と、自身が使用するメッセージタイプとをアプリケーション管理部３０６に通知する。これにより、アプリケーション管理部３０６は、各アプリケーション３０４のメッセージタイプを取得する（ステップＳ１１８）。
【００５０】
なお、メッセージタイプは、異なるアプリケーション３０４ではメッセージタイプが異なる条件を満たせば、いかなる文字列であってもよい。
【００５１】
アプリケーション管理部３０６は、アプリケーション３０４からメッセージタイプを受け取ると、ポインタ記憶部３２０に、当該アプリケーション３０４の一時ＩＤと、メッセージタイプと、初期ポインタとを対応付けて記憶させる（Ｓ１２０）。なお、本実施の形態において、初期ポインタとして、メッセージ中継サーバ２００のキューにおける「シーケンス番号」の開始値「０」より１つ小さい「−１」が用いられる。なお、ポインタの意義については後述する。
【００５２】
図９は、ポインタ記憶部３２０の記憶内容の一例を示す。図示のように、ポインタ記憶部３２０は、アプリケーション３０４の一時ＩＤと、メッセージタイプと、ポインタとを対応付けて記憶している。例えば、一時ＩＤ「Ｃ００００１」と、メッセージタイプ「ＣＨＡＴ」と、ポインタ「−１」とが対応付けられている。これは、一時ＩＤが「Ｃ００００１」であるアプリケーションの使用するメッセージタイプが「ＣＨＡＴ」であり、ポインタが初期ポインタの「−１」であることを示す。
【００５３】
同様に、一時ＩＤ「Ｃ００００２」と、メッセージタイプ「ＤＯＣ」と、ポインタ「−１」とが対応付けられている。これは、一時ＩＤが「Ｃ００００２」であるアプリケーションの使用するメッセージタイプが「ＤＯＣ」であり、ポインタが初期ポインタの「−１」であることを示す。
【００５４】
協働作業の開始にしたがって、各端末装置１２０において操作がなされ、Ｗｅｂブラウザ３００から上り通信でメッセージがメッセージ中継サーバ２００に送信され、また下り通信でメッセージ中継サーバ２００からＷｅｂブラウザ３００へメッセージが送信される。
【００５５】
まず、上り通信について説明する。
図１０は、上り通信時におけるＷｅｂブラウザ３００の処理を示すフローチャートである。Ｗｅｂブラウザ３００において、ユーザの操作などに伴ってアプリケーション３０４からメッセージの送信が生じた際に（Ｓ１３０）、当該アプリケーション３０４は、メッセージの内容と、エコーバックフラグをアプリケーション管理部３０６に出力する（Ｓ１３２）。なお、エコーバックフラグは、アプリケーション３０４がメッセージを送信した場合に該メッセージを自分自身で取得するか否かを示す真／偽値である。詳細については後述するが、本実施の形態において、エコーバックフラグが真であるメッセージがメッセージ中継サーバ２００に送信された場合に、このメッセージは、後に下り通信で、該メッセージを上り通信で送信したＷｅｂブラウザ３００に戻されるようになっている。
【００５６】
アプリケーション管理部３０６は、アプリケーション３０４からのエコーバックフラグを確認し、その値が真であるときには、当該メッセージに対応する一時ＩＤを、アプリケーション３０４の一時ＩＤから、一時ＩＤ管理部３０８が生成しない特殊ＩＤ（例えば「０」）に変更して、上り通信部３１０を介して該メッセージを送信する（Ｓ１３４：Ｙｅｓ、Ｓ１３６、Ｓ１３８）。
【００５７】
一方、アプリケーション３０４からのエコーバックフラグの値が偽であるときには、アプリケーション管理部３０６は、当該アプリケーション３０４の一時ＩＤでメッセージを送信する（Ｓ１３４：Ｎｏ、Ｓ１３８）。
【００５８】
なお、ステップＳ１３８において送信されるメッセージは、ユーザＩＤ管理部３０２から取得されたユーザＩＤと、一時ＩＤ（エコーバックフラグが偽の場合は特殊ＩＤ）と、メッセージタイプと、メッセージ内容とからなる。上り通信部３１０は、上り通信用ＨＴＴＰリクエストによりメッセージを送信する。
【００５９】
図１１は、上り通信用ＨＴＴＰリクエストの一例を示す。この例では、メッセージ中継サーバ２００のメッセージ受信部２２０を示す「／Ｕｐ」に対して、ユーザＩＤが「Ｕｓｅｒ１」であり、メッセージタイプが「ＣＨＡＴ」であり、一時ＩＤが「Ｃ０００１」であり、メッセージ内容が「こんばんは」であるメッセージが送信される。なお、エコーバックフラグの値が真である場合には、この一時ＩＤの部分は例えば「０」になる。
【００６０】
図１２は、上り通信時におけるメッセージ中継サーバ２００の処理を示すフローチャートである。メッセージ中継サーバ２００において、メッセージ受信部２２０により、上り通信用ＨＴＴＰリクエストを受信する（Ｓ１４０）。メッセージ受信部２２０は、受信したリクエストを送信メッセージ蓄積部２３０に出力する。
【００６１】
送信メッセージ蓄積部２３０は、渡されたリクエストからユーザＩＤ、メッセージタイプ、一時ＩＤ（特殊ＩＤを含む）を取り出すと共に、セッション管理部２１０に問合せをし、該ユーザＩＤに対応するセッションＩＤを取得する（Ｓ１４２、Ｓ１４４）。そして、送信メッセージ蓄積部２３０は、キュー記憶部２４０における、該セッションＩＤに対応するキューを特定し、該キューのシーケンス番号の最大値を取得する（Ｓ１４６、Ｓ１４８）。
【００６２】
送信メッセージ蓄積部２３０は、取得したシーケンス番号に最大値に１を加算して、加算後のシーケンス番号で該メッセージをキューに追加する（Ｓ１５２）。具体的には、加算後のシーケンス番号と、一時ＩＤと、メッセージタイプと、メッセージ内容とを対応付けてキューに保存する。
【００６３】
次いで、下り通信について説明する。
図１３は、下り通信について、Ｗｅｂブラウザ３００の処理を示すフローチャートである。Ｗｅｂブラウザ３００において、アプリケーション管理部３０６は、下り通信の開始を下りタイミング管理部３１４に指示する（Ｓ１５０）。このとき、アプリケーション管理部３０６は、ユーザＩＤ管理部３０２からユーザＩＤを取得して下りタイミング管理部３１４に渡す。その後、下り通信のタイミングは、下りタイミング管理部３１４により管理される。
【００６４】
アプリケーション管理部３０６から下り通信の開始が指示されると、下りタイミング管理部３１４は、ポインタ記憶部３２０に登録されている各メッセージタイプとポインタと一時ＩＤを取得する（Ｓ１５２）。下りタイミング管理部３１４は、ステップＳ１５４で取得した各メッセージタイプとポインタと一時ＩＤを下り通信部３１２に出力して、下り通信用のＨＴＴＰリクエストを送信させる（Ｓ１５４）。
【００６５】
図１４は、下り通信用のＨＴＴＰリクエストの一例を示す。なお、分かりやすいように、この例は、下り通信用のＨＴＴＰリクエストの主な部分のみを記述したものである。この例では、メッセージ中継サーバ２００のメッセージ送信部２５４を示す「／Ｄｏｗｎ」に対して、ユーザＩＤが「Ｕｓｅｒ１」であり、１つ目のメッセージタイプ、及びそれに対応する一時ＩＤとポインタがそれぞれ「ＣＨＡＴ」、「Ｃ０００１」、「−１」であり、２つ目のメッセージタイプ、及びそれに対応する一時ＩＤ、ポインタがそれぞれ「ＤＯＣ」、「Ｃ０００２」、「−１」であるリクエストが送信される。
【００６６】
メッセージ中継サーバ２００は、下り通信用のＨＴＴＰリクエストに応じて、蓄積しているメッセージのうちから送信すべきメッセージを選出して、レスポンスとしてリクエストの送信元のＷｅｂブラウザ３００に送信する。メッセージ中継サーバ２００によるメッセージの選出処理については、後にメッセージ中継サーバ２００の処理を説明する際に詳細に説明する。ここで図１５を参照してメッセージ中継サーバ２００からのレスポンスの一例を説明する。
【００６７】
図１５に示すレスポンスは、メッセージ中継サーバ２００のキュー記憶部２４０に図７に示すキューが記憶されており、図１４に示す下り通信用のＨＴＴＰリクエストに対してメッセージ中継サーバ２００が送信したものである。レスポンスにおいて、１つのメッセージは、シーケンス番号と、メッセージタイプと、メッセージ内容から構成される。メッセージ間には、区切りを示す文字列が設けられている。なお、図示の例では、メッセージの区切りを示す文字列として、＜――区切り――＞が用いられているが、メッセージの区切りを示すことができれば、いかなる文字列であってもよい。
【００６８】
図１５に示す例の場合、シーケンス番号が「０」、「１」、「２」に夫々対応するメッセージが選出され送信されている。なお、レスポンスにおいて、メッセージは、シーケンス番号が小さいほど先になるように配列されている。
【００６９】
図１３に戻り、Ｗｅｂブラウザ３００における下り通信処理を引き続き説明する。
Ｗｅｂブラウザ３００において、下り通信部３１２は、メッセージ中継サーバ２００からのレスポンスを受信すると、レスポンスを解析して中に含まれたメッセージを１つずつ取り出してメッセージ分配部３１６に出力する（Ｓ１５６、Ｓ１５８）。
【００７０】
メッセージ分配部３１６は、下り通信部３１２から受け取った各メッセージについて、受信順（すなわちレスポンス中の配列順）に、ポインタ記憶部３２０に記憶された、該メッセージのメッセージタイプと同一のメッセージタイプに対応するポインタの値を、そのメッセージのシーケンス番号に書き換える（Ｓ１６０）。また、メッセージ分配部３１６は、ポインタ記憶部３２０から、上記ポインタと同じ行に記憶された一時ＩＤを取得して、該一時ＩＤを有するアプリケーション３０４に当該メッセージの内容を出力する（Ｓ１６２）。各アプリケーション３０４は、メッセージの内容に従ってそれぞれ処理を実行する。
【００７１】
ステップＳ１５８における書換えがなされた後、図９に示すポインタ記憶部３２０の記憶内容は、図１６に示すようになる。図１６に示すように、メッセージタイプ「ＣＨＡＴ」と一時ＩＤ「Ｃ０００１」に対応するポインタが「２」になっており、メッセージタイプ「ＤＯＣ」と一時ＩＤ「Ｃ０００２」に対応するポインタが「１」になっている。
【００７２】
その後、一定時間の経過後に、ステップＳ１５２から処理が繰り返される（Ｓ１６４、Ｓ１５２〜）。
【００７３】
なお、分かりやすいように、図１３は、メッセージ中継サーバ２００からのレスポンスにメッセージが含まれている場合のフローチャートを示している。ステップＳ１５６で受け取ったレスポンスにメッセージが含まれている場合には、ステップＳ１５８〜ステップＳ１６２の処理が行われずに、所定時間経過後に、ステップＳ１５２からの処理が繰り返される。
【００７４】
図１７は、下り通信時にメッセージ中継サーバ２００の処理を示すフローチャートである。メッセージ中継サーバ２００において、メッセージ送信部２５４は、上述した下り通信用のＨＴＴＰリクエストを受信すると、リクエストからユーザＩＤと、メッセージタイプと、一時ＩＤと、ポインタとを取り出して送信メッセージ選択部２５２に渡す（Ｓ１７０、Ｓ１７２）。以下、下り通信用のＨＴＴＰリクエスト中のメッセージタイプ、一時ＩＤ、ポインタを夫々リクエストメッセージタイプ、リクエスト一時ＩＤ、リクエストポインタと呼ぶ。
【００７５】
送信メッセージ選択部２５２は、セッション管理部２１０に問い合わせをし、メッセージ送信部２５４から受け取ったユーザＩＤに対応するセッションＩＤを取得する（Ｓ１７４）。そして、各リクエストポインタのうちの最小値を取得ポインタとして、該取得ポインタより大きいシーケンス番号に対応するメッセージが、ステップＳ１７４で取得したセッションＩＤに対応するキューにあるか否かを確認する（Ｓ１７６、Ｓ１７８）。
【００７６】
該当するメッセージがある場合、送信メッセージ選択部２５２は、取得ポインタに１を加算して、加算後の取得ポインタと同じシーケンス番号のメッセージを取得する（Ｓ１７８：Ｙｅｓ、Ｓ１８０、Ｓ１８２）。
【００７７】
送信メッセージ選択部２５２は、ステップＳ１８２で取得したメッセージのメッセージタイプと同一のリクエストメッセージタイプがあるか否かを確認し（Ｓ１８４）、無い場合には、ステップＳ１７８からの処理に戻る一方（Ｓ１８４：Ｎｏ、Ｓ１７８〜）、ある場合には、該リクエストメッセージタイプに対応するリクエスト一時ＩＤと、ステップＳ１８２で取得したメッセージの一時ＩＤが一致するか否かをさらに確認する（Ｓ１８４：Ｙｅｓ、Ｓ１８６）。送信メッセージ選択部２５２は、一時ＩＤが一致する場合には、ステップＳ１７８からの処理に戻る一方（Ｓ１８６：Ｙｅｓ、Ｓ１７８〜）、一時ＩＤが一致しない場合には、該リクエストメッセージタイプに対応するリクエストポインタと、ステップＳ１８２で取得したメッセージのシーケンス番号とを比較する（Ｓ１８６：Ｎｏ、Ｓ１８８）。
【００７８】
送信メッセージ選択部２５２は、ステップＳ１８８における比較の結果、シーケンス番号がリクエストポインタ以下であるときには、ステップＳ１７８からの処理に戻る（Ｓ１８８：Ｎｏ、Ｓ１７８〜）一方、シーケンス番号がリクエストポインタより大きいときには、当該シーケンス番号を、選択シーケンス番号として記憶しておくと共に、ステップＳ１７８からの処理に戻る（Ｓ１８８：Ｙｅｓ、Ｓ１９０、Ｓ１７８〜）。
【００７９】
処理が進み、キューには、取得ポインタより大きいシーケンス番号に対応するメッセージが無くなると（Ｓ１７８：Ｎｏ）、送信メッセージ選択部２５２は、ステップＳ１９０で記憶したすべての選択シーケンス番号に対応するメッセージをキューから取得してメッセージ送信部２５４に渡す（Ｓ１９６）。メッセージ送信部２５４は、送信メッセージ選択部２５２からのすべてのメッセージを、シーケンス番号が小さい順に並べて、図１５に示すレスポンスを作成して、下り通信用のＨＴＴＰリクエストの送信元のＷｅｂブラウザ３００に送信する（Ｓ９８）。
【００８０】
なお、図１７に示していないが、リクエストポインタより大きいシーケンス番号に対応するメッセージがキューに無いときに（Ｓ１７８：Ｎｏ）、選択シーケンス番号が１つもない場合には、送信メッセージ選択部２５２は、送信するメッセージがない旨をメッセージ送信部２５４に通知し、メッセージ送信部２５４は、メッセージが含まれないレスポンスをＷｅｂブラウザ３００に返す。
【００８１】
このように、本実施の形態のシステム１００において、各Ｗｅｂブラウザ３００は、自身に実装された各アプリケーション３０４を、Ｗｅｂブラウザ毎およびアプリケーション毎に異なる一時ＩＤで管理すると共に、該アプリケーション３０４が、メッセージ中継サーバ２００のキューに格納されたメッセージのうちのどのメッセージまで受信したかを示すポインタ（すなわち最後に受信したメッセージのシーケンス番号）を管理する。そして、上がり通信でメッセージ中継サーバ２００にメッセージを送信する際に、メッセージ内容と共に、該メッセージを送信するアプリケーション３０４の一時ＩＤ、メッセージタイプも送信する。
【００８２】
メッセージ中継サーバ２００は、Ｗｅｂブラウザ３００ブラウザからの上がり通信でメッセージを受信すると、セッション毎に設けられたキューに、受信順に１つずつインクリメントするシーケンス番号と、一時ＩＤと、メッセージタイプと、メッセージ内容とを対応付けて蓄積する。
【００８３】
そして、下り通信に際して、Ｗｅｂブラウザ３００は、自身に実装されたすべてのアプリケーション３０４について、メッセージタイプ、一時ＩＤ、ポインタをメッセージ中継サーバ２００に送信して下り通信用のＨＴＴＰリクエストをする。ここで、１組の「メッセージタイプ、一時ＩＤ、ポインタ」をアプリケーションリクエストと呼ぶ。
【００８４】
メッセージ中継サーバ２００は、下り通信用のＨＴＴＰリクエストを受信すると、各アプリケーションリクエストについて、キューから、該アプリケーションリクエストに含まれるポインタより大きいシーケンス番号を有するメッセージのうちの、該アプリケーションリクエストのメッセージタイプと同一のメッセージタイプを有し、かつアプリケーションリクエストの一時ＩＤと異なるイメージを選出して、レスポンスを作成する。
【００８５】
また、Ｗｅｂブラウザ３００は、レスポンスを受信すると、受信したメッセージのシーケンス番号でポインタを更新する。
こうすることにより、Ｗｅｂブラウザ３００は、自身に実装された各アプリケーション３０４が、メッセージ中継サーバ２００に蓄積されたメッセージのうちの、どのメッセージまで受信したかを管理し、メッセージ中継サーバ２００の負担を軽減することができる。
また、アプリケーション３０４は、自身が送信したメッセージも受信する必要がある場合、エコーバックフラグの値を真にすれば、該アプリケーション３０４は、当該メッセージを上り通信でメッセージ中継サーバ２００に送信する際に、メッセージの一時ＩＤを特殊ＩＤに変更する。こうすることにより、メッセージ中継サーバ２００のキューには、このメッセージが特殊ＩＤで記憶され、下り通信の際に、図１７に示すフローチャートにおけるＳ１８６の比較結果が「Ｎｏ」となる。そのため、このメッセージは、該メッセージを送信したＷｅｂブラウザ３００にも返送される。
これにより、例えば一時退室などで一度セッションから抜けたＷｅｂブラウザが再度同じセッションに参加した場合などにおいて、過去に自分が送信したメッセージも再度受信することができ、追い付き処理を簡単に実現することができる。
【００８６】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、さまざまな変更、増減を加えてもよい。これらの変更、増減が加えられた変形例も本発明の範囲にあることは当業者に理解されるところである。
【００８７】
例えば、本実施の形態のシステム１００において、上り通信部３１０と下り通信部３１２が別々になっているが、これらを１つにまとめてもよい。勿論、メッセージ中継サーバ２００におけるメッセージ受信部２２０とメッセージ送信部２５４を１つにまとめてもよい。
【００８８】
また、メッセージ中継サーバ２００のキュー記憶部２４０において、各キューのメッセージタイプ毎のシーケンス番号の最大値を別途保管しておき、下り通信時に、この最大値とリクエストポインタとを比較して、どのメッセージタイプのメッセージが返信対象になるかの判別をより速くできるようにしてもよい。
【符号の説明】
【００８９】
１００  システム
１１０  Ｗｅｂサーバ
１２０  端末装置
１３０  ネットワーク
２００  メッセージ中継サーバ
２１０  セッション管理部
２２０  メッセージ受信部
２３０  送信メッセージ蓄積部
２４０  キュー記憶部
２４２  キュー
２５０  下り通信レスポンス部
２５２  送信メッセージ選択部
２５４  メッセージ送信部
３００  Ｗｅｂブラウザ
３０２  ユーザＩＤ管理部
３０４  アプリケーション
３０６  アプリケーション管理部
３０８  一時ＩＤ管理部
３１０  上り通信部
３１２  下り通信部
３１４  下りタイミング管理部
３１６  メッセージ分配部
３２０  ポインタ記憶部
【図１】
2010225106.tif 000003
【図２】
2010225106.tif 000004
【図３】
2010225106.tif 000005
【図４】
2010225106.tif 000006
【図５】
2010225106.tif 000007
【図６】
2010225106.tif 000008
【図７】
2010225106.tif 000009
【図８】
2010225106.tif 000010
【図９】
2010225106.tif 000011
【図１０】
2010225106.tif 000012
【図１１】
2010225106.tif 000013
【図１２】
2010225106.tif 000014
【図１３】
2010225106.tif 000015
【図１４】
2010225106.tif 000016
【図１５】
2010225106.tif 000017
【図１６】
2010225106.tif 000018
【図１７】
2010225106.tif 000019