(57)【特許請求の範囲】
【請求項１】
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップと、
前記受信ステップに応じて、前記ブローカ・コンピュータの接続先のうち、前記特定のデータについての前記イベント通知メッセージの送信元である接続先のための登録部に、当該特定のデータについての前記イベント通知メッセージの送信元であることを登録するステップと、
前記特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
各前記接続先について、当該接続先のための登録部を用いて、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを送信するステップと、
を含むメッセージ処理方法。
【請求項２】
ネットワーク中、中継ノードとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを、当該イベント通知メッセージの送信元である接続先について登録している登録部を用いて、各前記接続先について、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記不要イベント通知メッセージを送信するステップと、
前記親ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
各前記接続先について、前記登録部を用いて、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記イベント通知再開リクエストを送信するステップと、
を含むメッセージ処理方法。
【請求項３】
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であって、
前記ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
前記特定のデータの識別子を、不要イベント・リストに登録するステップと、
前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認するステップと、
前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップと、
前記ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
前記特定のデータの識別子を前記不要イベント・リストから削除するステップと、
を含むメッセージ処理方法。
【請求項４】
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であって、
前記ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信するステップと、
前記特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを、前記送信元クライアント端末のＩＰアドレス宛に送信するステップと、
を含むメッセージ処理方法。
【請求項５】
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップと、
前記受信ステップに応じて、前記ブローカ・コンピュータの接続先のうち、前記特定のデータについての前記イベント通知メッセージの送信元である接続先のための登録部に、当該特定のデータについての前記イベント通知メッセージの送信元であることを登録するステップと、
前記特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
各前記接続先について、当該接続先のための登録部を用いて、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを送信するステップと、
を、ブローカ・コンピュータに実行させるためのメッセージ処理プログラム。
【請求項６】
ネットワーク中、中継ノードとして機能するブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを、当該イベント通知メッセージの送信元である接続先について登録している登録部を用いて、各前記接続先について、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記不要イベント通知メッセージを送信するステップと、
前記親ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
各前記接続先について、前記登録部を用いて、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記イベント通知再開リクエストを送信するステップと、
を実行させるためのメッセージ処理プログラム。
【請求項７】
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末に実行させるためのメッセージ処理プログラムであって、
前記ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
前記特定のデータの識別子を、不要イベント・リストに登録するステップと、
前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認するステップと、
前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップと、
前記ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
前記特定のデータの識別子を前記不要イベント・リストから削除するステップと、
を実行させるためのメッセージ処理プログラム。
【請求項８】
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末に実行させるためのメッセージ処理プログラムであって、
前記ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信するステップと、
前記特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを、前記送信元クライアント端末のＩＰアドレス宛に送信するステップと、
を実行させるためのメッセージ処理プログラム。
【請求項９】
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータであって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信するメッセージ送受信部と、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するメッセージ解析部と、
を有し、
前記メッセージ送受信部は、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信し、
前記特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信し、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを送信し、
前記メッセージ解析部は、
前記イベント通知メッセージが受信された場合に、前記ブローカ・コンピュータの接続先のうち、前記特定のデータについての前記イベント通知メッセージの送信元である接続先のための登録部に、当該特定のデータについての前記イベント通知メッセージの送信元であることを登録し、
前記サブスクリプション・リクエストが受信された場合に、各前記接続先について、当該接続先のための登録部を用いて、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認する
ブローカ・コンピュータ。
【請求項１０】
ネットワーク中、中継ノードとして機能するブローカ・コンピュータであって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するメッセージ送受信部と、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを、当該イベント通知メッセージの送信元である接続先について登録している登録部を用いて、各前記接続先について、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認するメッセージ解析部と、
を有し、
前記メッセージ送受信部は、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信し、
前記親ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信し、
前記特定のデータについての前記イベント通知メッセージの送信元であると確認された前記接続先に対して、前記イベント通知再開リクエストを送信するステップと、
前記メッセージ解析部は、
前記イベント通知再開リクエストが受信された場合に、各前記接続先について、前記登録部を用いて、前記特定のデータについての前記イベント通知メッセージの送信元であるか否かを確認する
ブローカ・コンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、ログ収集技術に関する。
【背景技術】
【０００２】
近年、顧客情報などの機密情報の漏洩が問題となっており、情報漏洩の抑止や情報漏洩後の事後対処のために、ファイルなどのコンテンツ利用履歴、すなわちログを収集して管理することが重要となっている。しかしながら、ログの量は膨大になり、必要なログだけを適切に保存することは困難である。また、従来では、ログを一箇所のサーバに集約して、一箇所で保存管理する方式が一般的である。このような方式では、膨大なログを維持管理するという問題に加え、有用な情報を探索することも難しいという問題がある。
【０００３】
一方、受信したい何らかのイベントの条件を示す意味情報を予め登録しておき、イベント送信者からイベントが送信されると、当該イベントの意味情報と、登録された意味情報とを照合し、その照合結果に基づいて、当該イベントをイベント受信者に送信する技術が存在する。このような技術でも、ホップ属性等の様々な属性に基づいて不要なイベントの転送を防止する手法が提案されている。しかしながら、単に不要なイベントの転送を防止するような方策を示しただけであり、ログの収集について考慮したわけではない。具体的には、ログの収集を行っているユーザの、ネットワーク上の位置を無視して、ホップ属性などでイベントの転送を制限しては適切にログの収集ができない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３０２９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、特定のファイルに対して編集などの処理を行うと、特定の受信者について考慮せずに、当該特定のファイルについてのログをイベント通知メッセージとして配信し（publish）、予めブローカに特定のファイルについて興味を有することを登録しているユーザ（subscriber）にルーティングすることによって、ログ収集を行うような分散型イベント配信システムが考えられている。これによって、ユーザ自らが、興味のある（又は重要と考える）ファイルについてのログを個別に収集することができるようになる。このようにログの収集管理の側面では有効であるが、ネットワークを流れるイベント通知メッセージの量が膨大となってしまうという問題がある。
【０００６】
従って、本技術の目的は、上で述べたような分散型イベント配信システムにおいて、送信されるイベント通知メッセージの量を削減するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本技術の第１の側面に係るメッセージ処理方法は、ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であり、（Ａ）特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、（Ｂ）あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を特定のデータの識別子で検索して、特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、（Ｃ）特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、イベント通知メッセージの送信元に対して、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップとを含む。
【０００８】
本技術の第２の側面に係るメッセージ処理方法は、ネットワーク中、中継ノードとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であり、（Ａ）親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、（Ｂ）あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各接続先について、特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、（Ｃ）特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、不要イベント通知メッセージを送信するステップとを含む。
【０００９】
本技術の第３の側面に係るメッセージ処理方法は、ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であり、（Ａ）ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、（Ｂ）特定のデータの識別子を、不要イベント・リストに登録するステップと、（Ｃ）特定のデータについて処理が行われたことを検出した場合、不要イベント・リストを特定のデータの識別子で検索して登録されているか確認するステップと、（Ｄ）特定のデータの識別子が不要イベント・リストに登録済みの場合には、特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップとを含む。
【００１０】
本技術の第４の側面に係るメッセージ処理方法は、ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であり、（Ａ）ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、（Ｂ）特定のデータの識別子とイベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、ブローカ・コンピュータに送信するステップと、（Ｃ）特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを、上記送信元クライアント端末のＩＰアドレス宛に送信するステップとを含む。
【００１１】
本技術の第５の側面に係るメッセージ処理方法は、ネットワークに接続されているブローカ・コンピュータにより実行されるメッセージ処理方法であり、（Ａ）第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、（Ｂ）あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、特定のデータの識別子及び第１の送信元クライアント端末又は第１のユーザの識別子を登録するステップと、（Ｃ）第１の送信元クライアント端末から、当該第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子とイベント通知メッセージの第２の送信元クライアント端末又は第２のユーザの識別子と当該第２の送信元クライアント端末からの特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信するステップと、（Ｄ）データ格納部において、特定のデータの識別子と第１の送信元クライアント端末又は第１のユーザの識別子とを含むサブスクリプションデータに対応付けて第２の送信元クライアント端末又は第２のユーザの識別子を登録するステップと、（Ｅ）特定のデータを処理した第２の送信元クライアント端末から、当該第２の送信元クライアント端末又は第２のユーザの識別子と特定のデータの識別子とを含むイベント通知メッセージを受信すると、データ格納部に格納されている特定のデータについてのサブスクリプションデータに基づきイベント通知メッセージの第１の送信元クライアント端末への送信を中止するステップと、（Ｆ）特定のデータを処理した第３の送信元クライアント端末又は第３のユーザの識別子と特定のデータの識別子とを含むイベント通知メッセージを受信すると、データ格納部に格納されている特定のデータについてのサブスクリプションデータに基づきイベント通知メッセージを第１の送信元クライアント端末へ送信をするステップとを含む。
【発明の効果】
【００１２】
上で述べたような分散型イベント配信システムにおいて、送信されるイベント通知メッセージの量を削減できるようになる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態の簡単な説明を示す図である。
【図２】図２は、第１の実施の形態におけるネットワーク構成例を示す図である。
【図３Ａ】図３Ａは、ブローカ・コンピュータの機能ブロック図である。
【図３Ｂ】図３Ｂは、クライアント端末の機能ブロック図である。
【図４】図４は、サブスクリプション登録時の基本的な動作を説明するための図である。
【図５】図５は、図４の場面におけるクライアント端末の動作を説明するための図である。
【図６】図６は、図４の場面におけるブローカ・コンピュータの動作を説明するための図である。
【図７】図７は、イベント通知メッセージを送信する際の処理内容を示す図である。
【図８】図８は、イベント通知メッセージを送信する際の処理内容を示す図である。
【図９】図９は、図７の場面におけるクライアント端末の動作を説明するための図である。
【図１０】図１０は、図７及び図８の場面におけるブローカ・コンピュータの動作を説明するための図である。
【図１１】図１１は、図７及び図８の場面におけるブローカ・コンピュータの動作を説明するための図である。
【図１２】図１２は、不要イベント通知メッセージを送信する場合の処理について説明するための処理フローを示す図である。
【図１３】図１３は、不要イベント通知メッセージを送信する場合の処理について説明するための処理フローを示す図である。
【図１４】図１４は、不要イベント通知メッセージ送信処理の処理フローを示す図である。
【図１５】図１５は、イベント通知再開メッセージに関する処理の処理フローを示す図である。
【図１６】図１６は、イベント通知再開メッセージに関する処理の処理フローを示す図である。
【図１７】図１７は、図１５及び図１６の場面における最上位のブローカの処理内容を示す図である。
【図１８】図１８は、第２の実施の形態におけるブローカ・コンピュータの機能ブロック図である。
【図１９】図１９は、第２の実施の形態におけるクライアント端末の機能ブロック図である。
【図２０】図２０は、第２の実施の形態におけるネットワーク構成例を示す図である。
【図２１】図２１は、アンサブスクリプション・リクエストを送信する場面の動作を示す図である。
【図２２】図２２は、第１の状態のサブスクリプションデータの一例を示す図である。
【図２３】図２３は、第２の状態のサブスクリプションデータの一例を示す図である。
【図２４】図２４は、サブスクリプション・リクエスト及びＰ２Ｐサブスクリプション・リクエストが送信される場面の動作を示す図である。
【図２５】図２５は、サブスクリプション・リクエスト及びＰ２Ｐサブスクリプション・リクエストが送信される場面の動作を示す図である。
【図２６】図２６は、他のネットワーク構成例を示す図である。
【図２７】図２７は、他のネットワーク構成例を示す図である。
【図２８】図２８は、ネットワークでのメッセージの送信態様を示す図である。
【図２９】図２９は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１４】
図１を用いて本技術の実施の形態を簡単に説明しておく。図１は、ファイルの利用イベントを収集する例を示している。ここで、ユーザＡが、ファイルＡ．ｄｏｃを生成して編集を行い（ステップ（１））、メールにファイルＡ．ｄｏｃを添付してユーザＢに送信する（ステップ（２））。ユーザＢは、ファイルＡ．ｄｏｃが添付されたファイルを受信し（ステップ（３））、文書編集アプリケーションでファイルＡ．ｄｏｃを編集する（ステップ（４））。本実施の形態のシステムによれば、ユーザＢによる編集という操作イベントが自動的にユーザＡに通知される。これによってユーザＡは、ユーザＢがファイルＡ．ｄｏｃに対して編集操作を行ったことを知ることができる。このような通知はログとして蓄積される。また、例えば、ユーザＢは、メールではなくＵＳＢ（Universal Serial Bus）メモリなどのフラッシュメモリ型の記録媒体でファイルＡ．ｄｏｃをユーザＣに渡す（ステップ（５））。ユーザＣは、ユーザＢからＵＳＢメモリ等でファイルＡ．ｄｏｃを受け取ると（ステップ（６））、文書編集アプリケーションでファイルＡ．ｄｏｃの編集を行う（ステップ（７））。このような場合にも、本実施の形態のシステムによれば、ユーザＣによる編集という操作イベントが自動的にユーザＡに通知される。これによってユーザＡは、今度はユーザＣがファイルＡ．ｄｏｃに対して編集操作を行ったことを知ることができる。この通知についてもログとして蓄積される。
【００１５】
以下、このようなログ収集を実現するための具体的構成について説明する。
【００１６】
［実施の形態１］
図２に本実施の形態におけるネットワーク構成例を示す。図２の例では、クライアント端末Ａは、中間のブローカ・コンピュータであるブローカＡに接続されており、ブローカＡは、最上位のブローカ・コンピュータであるブローカＣに接続されている。また、クライアント端末Ｂ及びＣは、中間のブローカ・コンピュータであるブローカＢに接続されており、ブローカＢは、ブローカＣに接続されている。本実施の形態では、説明の便宜上このような木構造のネットワークを一例として説明するが、ネットワークトポロジには無関係である。例えば、メッシュ形のネットワークであっても良い。
【００１７】
次に、ブローカＡ乃至Ｃのブローカ・コンピュータの機能ブロック図について図３Ａを用いて説明する。ブローカ・コンピュータ１００は、（Ａ）ネットワークからメッセージを受信し、またメッセージをネットワークに送信するメッセージ送受信部１１０と、（Ｂ）メッセージ送受信部１１０が受信したメッセージを解析し、メッセージ送受信部１１０により送信すべきメッセージを生成する処理などを実施するメッセージ解析部１２０と、（Ｃ）メッセージ解析部１２０によって管理及び更新されるルーティングテーブル１３０とを有する。ルーティングテーブル１３０は、ブローカ・コンピュータ１００のメインメモリや二次記憶装置などのデータ記憶装置に格納される。ルーティングテーブル１３０は、当該ブローカ・コンピュータ１００の接続ノード毎に接続ノード情報１３１０を含む。接続ノード情報１３１０は、接続しているノードのＩＰアドレス１３１１と、接続しているノードが親ノードであるか否かを表す親ノードフラグ１３１２と、接続しているノードで興味のあるファイル等のファイル名（すなわち識別子）のリストであるサブスクリプション・リスト１３１３と、イベント逆経路決定機構１３１４とを含む。
【００１８】
イベント逆経路決定機構１３１４は、例えば接続しているノードから受信したイベント通知メッセージに係るイベント（具体的にはイベントに係るファイルのファイル名）のリストである。これによって、接続しているノードから過去にどのようなイベントについて通知があったのかを確認することができる。より具体的には、特定のイベントについて過去にイベント通知メッセージを受信したことがあるかを確認することができる。なお、イベント逆経路決定機構１３１４は、このようなリストではなく、誤りが発生する可能性はあるがブルームフィルタ（Bloom Filter）を採用することができる。すなわち、ブルームフィルタを用いることによって、特定のイベントについて過去イベント通知メッセージを受信したことがある（Ｔｒｕｅ）又は無い（Ｆａｌｓｅ）という結果を得ることができる。ブルームフィルタについては、既によく知られた技術であるから、これ以上述べない。
【００１９】
次に、クライアント端末２００の機能ブロック図を図３Ｂに示す。クライアント端末２００は、（Ａ）ネットワークからメッセージを受信し、ネットワークに対してメッセージを送信するメッセージ送受信部２１０と、（Ｂ）メッセージ送受信部２１０が受信したメッセージを解析し、メッセージ送受信部２１０により送信すべきメッセージを生成する処理などを実施するメッセージ解析部２２０と、（Ｃ）ユーザからの指示やファイルの編集などを行う他のアプリケーション・プログラムによるファイルの編集や更新などのイベントを検出し、メッセージ解析部２２０に通知するインタフェース部２３０と、（Ｄ）メッセージ解析部２２０により管理及び更新されるルーティングテーブル２４０と、（Ｅ）イベントのデータを蓄積するログ格納部２５０とを有する。ルーティングテーブル２４０は、クライアント端末のメインメモリや二次記憶装置などのデータ記憶装置に格納される。そして、ルーティングテーブル２４０は、当該クライアント端末が接続しているノード毎に接続ノード情報２４１０を含む。接続ノード情報２４１０は、接続しているノードのＩＰアドレス２４１１と、イベントが発生してもイベント通知メッセージを送信する必要がないと指示されているイベント（具体的にはファイル）のリストである不要イベント・リスト２４１２とを含む。
【００２０】
次に、図４乃至図１７を用いて図２に示したようなシステム構成についての処理フローを説明する。まず図４を用いてサブスクリプション登録時の基本的な動作について説明する。クライアント端末ＡのユーザＡは、クライアント端末Ａを操作して、特定のファイル（例えばＡ．ｄｏｃ）を生成し、データ格納部に保存する。クライアント端末Ａは、ユーザからの指示に応じて、ファイルＡ．ｄｏｃを生成し、データ格納部に格納する（ステップＳ１）。
【００２１】
また、ユーザＡは、クライアント端末Ａを操作して、ログを収集すべきと判断したファイルＡ．ｄｏｃのログ収集指示を入力し、クライアント端末Ａは、ユーザからファイルＡ．ｄｏｃのログ収集指示の入力を受け付ける（ステップＳ３）。そして、クライアント端末Ａは、ログを収集すべきファイルのファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージを生成して、ブローカＡに送信する（ステップＳ５）。  
【００２２】
ブローカＡは、クライアント端末Ａから、ログを収集すべきファイルのファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージを受信する（ステップＳ７）。そして、ブローカＡは、ルーティングテーブル１３０において、クライアント端末Ａについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３にファイル名Ａ．ｄｏｃを登録することによって、サブスクリプション登録を行う（ステップＳ９）。また、ブローカＡは、親ノードフラグ１３１２がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報１３１０が存在するか判断し、親ノードが存在する場合には、当該親ノード（図２の場合ブローカＣ）に対して、ステップＳ７で受信したサブスクリプション・メッセージに含まれるファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージを生成し、送信する（ステップＳ１１）。
【００２３】
ブローカＣは、ブローカＡから、ログを収集すべきファイルのファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージを受信する（ステップＳ１３）。そして、ブローカＣは、ルーティングテーブル１３０において、ブローカＡについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３にファイル名Ａ．ｄｏｃを登録することによって、サブスクリプション登録を行う（ステップＳ１５）。
【００２４】
なお、ブローカＣでも、親ノードフラグ１３１２がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報１３１０が存在するかを判断する。しかし、図２の例ではブローカＣは最上位のブローカ・コンピュータであるから、上位のブローカ・コンピュータに、サブスクリプション・メッセージを送信することはない。
【００２５】
また、本実施の形態では、クライアント端末ＡのユーザＡは、クライアント端末Ａを操作して、クライアント端末ＢのユーザＢ宛にファイルＡ．ｄｏｃを送信したものとする（ステップＳ１７）。他の手法によってファイルＡ．ｄｏｃをユーザＢに渡すようにしても良い。例えば、フラッシュメモリ型の記録媒体や光ディスクその他の記録媒体などを手渡しするような場合もある。
【００２６】
次に、図５を用いて、図４の場面におけるクライアント端末Ａの動作についてより詳しく説明する。まず、ユーザＡからの指示に応じて、他のアプリケーション・プログラムによりファイルＡ．ｄｏｃを生成し、データ格納部に格納する（ステップＳ２０）。この処理は、インタフェース部２３０自体の処理ではないので、点線ブロックで示している。次に、インタフェース部２３０は、ユーザＡからファイルＡ．ｄｏｃの指定を含むログ収集指示の入力を受け付ける（ステップＳ２１）。但し、インタフェース部２３０が、ログ収集指示の代わりに、所定形式のファイルの保存など、予め定められたアクションを検出して、自動的にステップＳ２３の処理を実施するようにしても良い。さらに、生成されたファイルの内容を解析して、例えば機密や秘密といった文言が含まれていることを検出した場合に自動的にステップＳ２３の処理を実施するようにしても良い。このように、ユーザからの指定により又は自動的にログを収集すべきファイルを特定する。
【００２７】
そして、インタフェース部２３０は、ファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージの送信依頼を、メッセージ解析部２２０に出力する（ステップＳ２３）。これに対して、メッセージ解析部２２０は、インタフェース部２３０からサブスクリプション・メッセージの送信依頼を受信し（ステップＳ２５）、ファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージを生成する（ステップＳ２７）。なお、宛先ブローカのアドレスについては、ルーティングテーブル２４０の接続ノード情報２４１０に含まれるＩＰアドレスを読み出して、サブスクリプション・メッセージに設定する。そして、メッセージ解析部２２０は、生成したサブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼をメッセージ送受信部２１０に出力する（ステップＳ２９）。
【００２８】
メッセージ送受信部２１０は、メッセージ解析部２２０から、サブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼を受信し（ステップＳ３１）、ブローカＡ宛に送信する（ステップＳ３３）。
【００２９】
このような処理を実施することによって、ユーザが興味を持っており、ログを収集するファイルについてサブスクリプションをブローカに登録することができる。
【００３０】
次に、図６を用いて、図４の場面におけるブローカ・コンピュータ（ブローカＡ乃至Ｃ）の動作についてより詳しく説明する。ブローカ・コンピュータのメッセージ送受信部１１０は、接続されているノードからサブスクリプション・メッセージを受信すると（ステップＳ４１）、当該サブスクリプション・メッセージをメッセージ解析部１２０に出力する（ステップＳ４３）。メッセージ解析部１２０は、サブスクリプション・メッセージをメッセージ送受信部１１０から受信すると（ステップＳ４５）、ルーティングテーブル１３０において、当該サブスクリプション・メッセージの送信元ノードについての接続ノード情報１３１０におけるサブスクリプション・リスト１３１３にファイル名Ａ．ｄｏｃを追加登録する（ステップＳ４７）。さらに、メッセージ解析部１２０は、親ノードフラグ１３１２がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報１３１０が存在するか判断し、親ノードが存在する場合には、当該親ノードに対して、ステップＳ４５で受信したサブスクリプション・メッセージに含まれるファイル名Ａ．ｄｏｃを含むサブスクリプション・メッセージを生成し、送信する（ステップＳ４９）。親ノードのＩＰアドレスについては、当該親ノードの接続ノード情報１３１０に含まれるＩＰアドレス１３１１を読み出し、サブスクリプション・メッセージに設定する。ステップＳ４９については、親ノードが存在しない場合には、スキップする。
【００３１】
そして、メッセージ解析部１２０は、生成されたサブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼を、メッセージ送受信部１１０に出力する（ステップＳ５１）。メッセージ送受信部１１０は、メッセージ解析部１２０から、生成されたサブスクリプション・メッセージ及び当該サブスクリプション・メッセージの送信依頼を受信し（ステップＳ５３）、親ノード宛に送信する（ステップＳ５５）。
【００３２】
なお、ステップＳ５１の後には、本来さらに処理を実施する必要がある。しかし、現段階では、その前提となる処理の説明が完了していないので、後に説明する。
【００３３】
自身の親ノードが存在しない、すなわち最上位のブローカ・コンピュータである場合には、ブローカ・コンピュータは、後に述べる処理をさらに実施する。
【００３４】
次に、図７及び図８を用いてイベント通知メッセージを配信する際の処理について説明する。ここでは、クライアント端末Ｂにおいて、ファイルＡ．ｄｏｃの編集が行われるものとする。具体的には、図４のステップＳ７に応じて、クライアント端末Ｂは、クライアント端末Ａから送られてきたファイルＡ．ｄｏｃを受信し、データ格納部に格納する（ステップＳ６１）。クライアント端末ＢのユーザＢは、クライアント端末Ｂの他のアプリケーション・プログラムに対してファイルＡ．ｄｏｃの編集処理を指示し、クライアント端末Ｂの他のアプリケーション・プログラムは、ファイルＡ．ｄｏｃの編集処理を実施する。編集だけを対象とするものではなく、例えば印刷やコピーをも対象としても良い。本実施の形態では編集を代表例として示すこととする。
【００３５】
そうすると、クライアント端末Ｂは、ファイルＡ．ｄｏｃに対して編集処理が行われたことを検出する（ステップＳ６３）。そして、クライアント端末Ｂは、ファイル名Ａ．ｄｏｃが、ルーティングテーブル２４０のブローカＢについての接続ノード情報２４１０における不要イベント・リスト２４１２に登録されているかを確認する（ステップＳ６５）。ファイル名Ａ．ｄｏｃが不要イベント・リスト２４１２に登録されている場合には、その接続ノードに対してはイベント通知メッセージを送信しない。この処理については後に述べる。ここでは、不要イベント・リスト２４１２にはファイル名Ａ．ｄｏｃは登録されていないものとする。
【００３６】
そこで、クライアント端末Ｂは、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成し、ブローカＢにイベント通知メッセージを送信する（ステップＳ６７）。イベント通知メッセージには、どのような処理（例えば編集など）を行ったかといったデータを含むようにしても良い。
【００３７】
これに対して、ブローカＢは、クライアント端末Ｂからイベント通知メッセージを受信し（ステップＳ６９）、ルーティングテーブル１３０において、イベント通知メッセージの送信元の接続ノード情報１３１０におけるイベント逆経路決定機構１３１４に、イベント通知メッセージについてのイベント（ここではファイル名Ａ．ｄｏｃ）を登録する（ステップＳ７１）。イベント逆経路決定機構１３１４が受信イベント・リストであればそのままこのイベントを登録し、ブルームフィルタであればこのイベントが発生したことを学習させる。
【００３８】
そして、ブローカＢは、ルーティングテーブル１３０において親ノードフラグ１３１２がオンにセットされていない配下の他のノード（例えばクライアント端末Ｃ）が存在するか判断する。配下の他のノードが存在する場合には、ブローカＢは、そのノードについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３に、イベント通知メッセージに含まれるファイル名Ａ．ｄｏｃが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する（ステップＳ７３）。ここではサブスクリプションが登録されていないものとし、配下の他のノードに対してイベント通知メッセージを送信しないものとする。
【００３９】
さらに、ブローカＢは、ルーティングテーブル１３０において親ノードフラグ１３１２がオンにセットされているノードが存在するか確認し、存在する場合には、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成し、親ノードフラグ１３１２がオンにセットされているノード（ここではブローカＣ）のＩＰアドレス宛にイベント通知メッセージを送信する（ステップＳ７５）。
【００４０】
これに対して、ブローカＣは、ブローカＢから、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを受信する（ステップＳ７７）。処理は端子Ａを介して図８の処理に移行する。
【００４１】
ブローカＣは、ルーティングテーブル１３０において、送信元の接続ノード情報１３１０のイベント逆経路決定機構１３１４に、受信したイベント通知メッセージに係るイベント（ここではファイル名Ａ．ｄｏｃ）を登録する（ステップＳ７９）。イベント逆経路決定機構１３１４が受信イベント・リストであればそのままこのイベントを登録し、ブルームフィルタであればこのイベントが発生したことを学習させる。また、ブローカＣは、ルーティングテーブル１３０において親ノードフラグ１３１２がオンにセットされていない配下の他のノード（例えばブローカＡ）が存在するか判断する。配下の他のノードが存在する場合には、ブローカＣは、そのノードについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３に、イベント通知メッセージに含まれるファイル名Ａ．ｄｏｃが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する（ステップＳ８１）。ここでは、図６のステップＳ４７においてサブスクリプションの登録がなされているものとする。なお、ファイルＡ．ｄｏｃについてのサブスクリプションの登録がなされていない場合の処理については後に説明する。
【００４２】
ファイルＡ．ｄｏｃについてのサブスクリプションの登録がなされている場合には、ブローカＣは、ファイルＡ．ｄｏｃについてのサブスクリプションの登録がなされている接続ノードについての接続ノード情報１３１０に含まれるＩＰアドレス１３１１を読み出す。また、ブローカＣは、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成し、読み出したＩＰアドレス１３１１宛にイベント通知メッセージを送信する（ステップＳ８３）。なお、図示していないがブローカＢと同様に、親ノードフラグ１３１２がオンにセットされている接続ノードが存在するか確認する。ブローカＣの場合には親ノードは設定されていないので、親ノードへイベント通知メッセージを転送する処理は行われない。
【００４３】
ブローカＡは、ブローカＣからイベント通知メッセージを受信する（ステップＳ８５）。そして、ブローカＡは、ルーティングテーブル１３０において、配下のノードの接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３に、受信したイベント通知メッセージに係るイベント（ここではファイル名Ａ．ｄｏｃ）が登録されているか確認する（ステップＳ８７）。サブスクリプションが登録されている接続ノードが存在する場合には、ブローカＡは、この接続ノード（ここではクライアント端末Ａ）のＩＰアドレス１３１１を読み出し、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成し、読み出したＩＰアドレス１３１１宛にイベント通知メッセージを送信する（ステップＳ８９）。
【００４４】
クライアント端末Ａは、ブローカＡからイベント通知メッセージを受信し（ステップＳ９１）、ログ格納部２５０に、イベント通知メッセージについてのイベント（例えばファイル名Ａ．ｄｏｃ）をログ格納部２５０に格納する（ステップＳ９３）。
【００４５】
以上のように、ファイルＡ．ｄｏｃを編集したクライアント端末Ｂから、イベント通知メッセージが、サブスクリプションの登録を行ったクライアント端末Ａへ送信される。
【００４６】
次に、図９を用いて、図７の場面におけるクライアント端末Ｂの動作について説明する。クライアント端末Ｂのインタフェース部２３０は、他のアプリケーション・プログラムによるファイルＡ．ｄｏｃの編集処理を検出する（ステップＳ１０１）。そうすると、インタフェース部２３０は、ファイル名Ａ．ｄｏｃについてのイベント通知メッセージの送信依頼をメッセージ解析部２２０に出力する（ステップＳ１０３）。
【００４７】
メッセージ解析部２２０は、インタフェース部２３０から、イベント通知メッセージの送信依頼を受信すると（ステップＳ１０５）、当該送信依頼のイベント（ファイル名Ａ．ｄｏｃ）が、ルーティングテーブル２４０の接続ノード情報２４１０における不要イベント・リスト２４１２に登録されているか確認する（ステップＳ１０７）。不要イベント・リスト２４１２に登録されているイベントの場合には、その接続ノードにはイベント通知メッセージを送信しない。一方、不要イベント・リスト２４１２に登録されていないイベントの場合には、メッセージ解析部２２０は、その接続ノードの接続ノード情報２４１０におけるＩＰアドレス２４１１を読み出して、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成する（ステップＳ１０９）。そして、メッセージ解析部２２０は、読み出したＩＰアドレス２４１１宛にイベント通知メッセージを送信するように、イベント通知メッセージ及び当該イベント通知メッセージの送信依頼をメッセージ送受信部２１０に送信する（ステップＳ１１１）。
【００４８】
メッセージ送受信部２１０は、メッセージ解析部２２０からイベント通知メッセージ及び当該イベント通知メッセージの送信依頼を受信し（ステップＳ１１３）、当該送信依頼に従って、イベント通知メッセージを、指定のＩＰアドレス２４１１宛（すなわち接続されているブローカＡ宛）に送信する（ステップＳ１１５）。
【００４９】
このようにすれば適切にイベント通知メッセージが配信されるようになる。
【００５０】
次に、図１０及び図１１を用いて、図７及び図８の場面におけるブローカ・コンピュータの動作について説明する。まず、ブローカ・コンピュータのメッセージ送受信部１１０は、他のノードからイベント通知メッセージを受信し（ステップＳ１２１）、当該イベント通知メッセージをメッセージ解析部１２０に出力する（ステップＳ１２３）。
【００５１】
メッセージ解析部１２０は、メッセージ送受信部１１０からイベント通知メッセージを受信し（ステップＳ１２５）、ルーティングテーブル１３０において、送信元ノードについての接続ノード情報１３１０のイベント逆経路決定機構１３１４に、イベント通知メッセージに係るイベント（ファイル名Ａ．ｄｏｃ）を登録する（ステップＳ１２７）。
【００５２】
さらに、メッセージ解析部１２０は、親ノードフラグ１３１２がオンになっておらず、送信元ノード以外の接続ノード（すなわち配下の他の接続ノード）の接続ノード情報１３１０におけるサブスクリプション・リスト１３１３に、イベント通知メッセージに係るイベント（ファイル名Ａ．ｄｏｃ）が登録されているか確認する（ステップＳ１２９）。登録されていない場合には（ステップＳ１３１：Ｎｏルート）、処理は端子Ｂを介して図１１の処理に移行する。一方、本イベントがサブスクリプション・リスト１３１３に登録されている接続ノードが存在する場合には（ステップＳ１３１：Ｙｅｓルート）、メッセージ解析部１２０は、本イベントがサブスクリプション・リスト１３１３に登録されている接続ノードのＩＰアドレス１３１１を読み出し、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成する。そして、メッセージ解析部１２０は、読み出したＩＰアドレス宛にイベント通知メッセージを送信するように、イベント通知メッセージ及び当該イベント通知メッセージの送信依頼を、メッセージ送受信部１１０に送信する（ステップＳ１３３）。そして処理は端子Ｂを介して図１１の処理に移行する。
【００５３】
メッセージ送受信部１１０は、メッセージ解析部１２０からイベント通知メッセージ及び当該イベント通知メッセージの送信依頼を受信し（ステップＳ１３５）、指定されたＩＰアドレス宛にイベント通知メッセージを送信する（ステップＳ１３７）。
【００５４】
例えば、ブローカＢで処理を行う場合に、クライアント端末ＣもファイルＡ．ｄｏｃについてサブスクリプションを登録している場合には、クライアント端末Ｃにもイベント通知メッセージが送信される。
【００５５】
図１１の処理の説明に移行して、メッセージ解析部１２０は、今回受信したイベント通知メッセージが、本ブローカ・コンピュータの下流（すなわち親ノードフラグ１３１２がオンに設定されていないノード）からのイベント通知メッセージであり、接続ノード情報１３１０においてオンになっている親ノードフラグ１３１２が存在しない、すなわち自ノードが最上位ノードであるか確認する（ステップＳ１３９）。このような条件を満たしている場合には（ステップＳ１４１：Ｙｅｓルート）、メッセージ解析部１２０は、ファイル名Ａ．ｄｏｃで、送信元ノード以外の接続ノードの接続ノード情報１３１０におけるサブスクリプション・リスト１３１３を検索し、いずれのサブスクリプション・リスト１３１３にもファイル名Ａ．ｄｏｃが登録されていないという条件を満たしているかを確認し、この条件をさらに満たす場合には、不要イベント通知メッセージ送信処理を実施する（ステップＳ１４３）。この不要イベント通知メッセージ送信処理については、後に詳しく述べる。なお、ステップＳ１４３の条件を満たさない場合には、不要イベント通知メッセージ送信処理を行わない。
【００５６】
一方、ステップＳ１３９における条件を満たしていない場合には（ステップＳ１４１：Ｎｏルート）、メッセージ解析部１２０は、親ノードフラグ１３１２がオンになっている接続ノード情報１３１０におけるＩＰアドレス１３１１を読み出し、ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを生成する。そして、メッセージ解析部１２０は、読み出したＩＰアドレス宛にイベント通知メッセージを送信するように、イベント通知メッセージ及び当該イベント通知メッセージの送信依頼を、メッセージ送受信部１１０に出力する（ステップＳ１４５）。
【００５７】
メッセージ送受信部１１０は、メッセージ解析部１２０から、イベント通知メッセージ及びイベント通知メッセージの送信依頼を受信し（ステップＳ１４７）、指定ＩＰアドレス宛にイベント通知メッセージを送信する（ステップＳ１４９）。ブローカＢであれば、ブローカＣが親ノードであるから、この親ノードであるブローカＣにイベント通知メッセージを送信する。
【００５８】
このようにすれば、適切にイベント通知メッセージが配信されるようになる。
【００５９】
次に、図１２乃至図１４を用いて、不要イベント通知メッセージが送信される場面について説明する。
【００６０】
クライアント端末ＢのユーザＢが、他のアプリケーション・プログラムにファイルＢ．ｄｏｃの編集を指示し、クライアント端末Ｂの他のアプリケーション・プログラムは、ユーザＢからの編集指示を受け付け、編集処理を実施する（図１２：ステップＳ１５１）。クライアント端末Ｂのインタフェース部２３０は、ファイルＢ．ｄｏｃの編集等を検出し、メッセージ解析部２２０にファイルＢ．ｄｏｃについてのイベント通知メッセージの送信依頼を出力する。メッセージ解析部２２０は、ファイルＢ．ｄｏｃについてのイベント通知メッセージの送信依頼を受信すると、不要イベント・リスト２４１２をファイル名Ｂ．ｄｏｃで検索し、今回検出したイベント（ここではファイル名Ｂ．ｄｏｃ）が不要イベント・リスト２４１２に登録されているか確認する（ステップＳ１５３）。通常初期的には不要イベント・リスト２４１２には何も登録されていないので、ファイル名Ｂ．ｄｏｃは不要イベント・リスト２４１２に登録されていないと判断したものとする。そうすると、メッセージ解析部２２０は、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを生成し、メッセージ送受信部２１０に、接続されているブローカＢに送信させる（ステップＳ１５５）。
【００６１】
ブローカＢは、クライアント端末Ｂから、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを受信する（ステップＳ１５７）。そうすると、ブローカＢは、ルーティングテーブル１３０において、イベント通知メッセージの送信元ノードの接続ノード情報１３１０におけるイベント逆経路決定機構１３１４に、イベント通知メッセージについてのイベント（ここではファイル名Ｂ．ｄｏｃ）を登録する（ステップＳ１５９）。
【００６２】
ブローカＢは、ルーティングテーブル１３０において親ノードフラグ１３１２がオンにセットされていない配下の他のノード（例えばクライアント端末Ｃ）が存在するか判断する。そして、ブローカＢは、配下の他のノードが存在する場合には、そのノードについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３に、イベント通知メッセージに含まれるファイル名Ｂ．ｄｏｃが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する（ステップＳ１６１）。ここではサブスクリプションが登録されていないものとし、配下の他のノードに対してイベント通知メッセージを送信しないものとする。
【００６３】
さらに、ブローカＢは、ルーティングテーブル１３０において親ノードフラグ１３１２がオンにセットされているノードが存在するか確認し、存在する場合には、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを生成し、親ノードフラグ１３１２がオンにセットされているノード（ここではブローカＣ）のＩＰアドレス宛にイベント通知メッセージを送信する（ステップＳ１６３）。
【００６４】
これに対して、ブローカＣは、ブローカＢから、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを受信する（ステップＳ１６５）。処理は端子Ｃを介して図１３の処理に移行する。
【００６５】
図１３の処理の説明に移行して、ブローカＣは、ルーティングテーブル１３０において、イベント通知メッセージの送信元ノードの接続ノード情報１３１０におけるイベント逆経路決定機構１３１４に、イベント通知メッセージについてのイベント（ここではファイル名Ｂ．ｄｏｃ）を登録する（ステップＳ１６７）。また、ブローカＣは、ルーティングテーブル１３０において親ノードフラグ１３１２がオンにセットされていない配下の他のノード（例えばブローカＡ）が存在するか判断する。そして、配下の他のノードが存在する場合には、ブローカＣは、そのノードについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３に、イベント通知メッセージに含まれるファイル名Ｂ．ｄｏｃが登録されているか否かを判断することにより、配下の他のノードに本イベントのサブスクリプションが登録されているかを確認する（ステップＳ１６９）。ファイル名Ｂ．ｄｏｃは、まだいずれの接続ノードについての接続ノード情報１３１０のサブスクリプション・リスト１３１３にも登録されていないものとする。
【００６６】
ファイル名Ｂ．ｄｏｃについてのサブスクリプションが登録されていない場合には、ブローカＣは、図１１のステップＳ１４３で触れた不要イベント通知メッセージ送信処理を実施して、ファイル名Ｂ．ｄｏｃを含む不要イベント通知メッセージを生成し、ファイルＢ．ｄｏｃを送信してきたことがある接続ノードであるブローカＢを特定し、当該ブローカＢに不要イベント通知メッセージを送信する（ステップＳ１７１）。不要イベント通知メッセージについては、後に説明する。
【００６７】
ブローカＢは、ブローカＡから不要イベント通知メッセージを受信する（ステップＳ１７３）。そして、ブローカＢは、不要イベント通知メッセージの送信元ノード以外の接続ノードの接続ノード情報１３１０におけるイベント逆経路決定機構１３１４にて、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを送信してきたことがあるか確認して、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを送信してきたことがある接続ノードを、不要イベント通知メッセージの送信先として特定する（ステップＳ１７５）。ここでは送信先はクライアント端末Ｂと特定されたものとする。そして、ブローカＢは、不要イベント通知メッセージをクライアント端末Ｂに送信する（ステップＳ１７７）。
【００６８】
クライアント端末Ｂは、ブローカＢから不要イベント通知メッセージを受信する（ステップＳ１７９）。そして、クライアント端末Ｂは、ルーティングテーブル２４０において、送信元ノードについての接続ノード情報２４１０の不要イベント・リスト２４１２に、不要イベント通知メッセージで通知されたイベント（すなわちファイル名Ｂ．ｄｏｃ）を登録する（ステップＳ１８１）。
【００６９】
このように、どのユーザも配信を希望していないイベントについては、クライアント端末側でイベント通知メッセージを送信しないように、不要イベント・リストに登録しておく。これによって不要なメッセージの数を削減できるようになる。
【００７０】
次に、図１４を用いて、上で述べた不要イベント通知メッセージ送信処理の内容を説明する。ブローカＣのメッセージ解析部１２０は、親ノードが無く且つ特定のイベント（例えばファイルＢ．ｄｏｃ）のサブスクリプションが存在していない場合、受信したイベント通知メッセージに係るイベント（例えばファイルＢ．ｄｏｃ）から、イベント通知メッセージの送信元ノード以外の接続ノードの接続ノード情報１３１０におけるイベント逆経路決定機構１３１４で、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを送信してきた接続ノードを、不要イベント通知メッセージの送信先として特定する（ステップＳ１９１）。
【００７１】
また、メッセージ解析部１２０は、特定された接続ノードのＩＰアドレス１３１１も読み出し、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを生成し（ステップＳ１９３）、当該不要イベント通知メッセージをＩＰアドレス１３１１宛に送信するように、不要イベント通知メッセージ及び当該不要イベント通知メッセージの送信依頼を、メッセージ送受信部１１０に出力する（ステップＳ１９５）。
【００７２】
メッセージ送受信部１１０は、メッセージ解析部１２０から不要イベント通知メッセージ及び不要イベント通知メッセージの送信依頼を受信し（ステップＳ１９７）、指定ＩＰアドレス宛に不要イベント通知メッセージを送信する（ステップＳ１９９）。
【００７３】
このようにすれば、適切に不要イベント通知メッセージを送信することができるようになる。
【００７４】
次に、新たにファイルＢ．ｄｏｃについてサブスクリプションを登録するユーザが出現した場合の処理について図１５乃至図１７を用いて説明する。
【００７５】
まず、例えばクライアント端末ＡのユーザＡから、クライアント端末Ａは、ファイルＢ．ｄｏｃのログ収集指示を受け付け（ステップＳ２０１）、当該ファイル名Ｂ．ｄｏｃを含むサブスクリプション・リクエストを生成して、接続ノードのブローカＡに送信する（ステップＳ２０３）。ブローカＡは、クライアント端末Ａから、ログを収集すべきファイルのファイル名Ｂ．ｄｏｃを含むサブスクリプション・メッセージを受信する（ステップＳ２０５）。そして、ブローカＡは、ルーティングテーブル１３０において、クライアント端末Ａについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３にファイル名Ｂ．ｄｏｃを登録することによって、サブスクリプション登録を行う（ステップＳ２０７）。また、ブローカＡは、親ノードフラグ１３１２がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報１３１０が存在するか判断する。親ノードが存在する場合には、ブローカＡは、当該親ノード（図２の場合ブローカＣ）に対して、ステップＳ２０５で受信したサブスクリプション・メッセージに含まれるファイル名Ｂ．ｄｏｃを含むサブスクリプション・メッセージを生成し、送信する（ステップＳ２０９）。
【００７６】
ブローカＣは、ブローカＡから、ログを収集すべきファイルのファイル名Ｂ．ｄｏｃを含むサブスクリプション・メッセージを受信する（ステップＳ２１１）。
【００７７】
そして、ブローカＣは、ルーティングテーブル１３０において、ブローカＡについての接続ノード情報１３１０に含まれるサブスクリプション・リスト１３１３にファイル名Ｂ．ｄｏｃを登録することによって、サブスクリプション登録を行う（ステップＳ２１３）。ここまでは図４の処理内容と同じである。
【００７８】
なお、ブローカＣでも、親ノードフラグ１３１２がオンにセットされている、すなわち親ノードとして指定されている接続ノードについての接続ノード情報１３１０が存在するか判断する。しかし、ブローカＣは最上位のブローカ・コンピュータであるから、上位のブローカ・コンピュータに、サブスクリプション・メッセージを送信することはない。
【００７９】
また、ブローカＣは、サブスクリプション・リクエストの送信元ノード以外の他のノードの接続ノード情報１３１０におけるサブスクリプション・リスト１３１３に、ファイル名Ｂ．ｄｏｃが登録済みであるか確認する（ステップＳ２１４）。
【００８０】
ステップＳ２１１より前に、既に他の接続ノードからファイル名Ｂ．ｄｏｃを含むサブスクリプション・リクエストを受信している場合には、既に不要イベント通知メッセージを送信している可能性があるので、本ステップで確認している。
【００８１】
よって、ブローカＣは、他の接続ノードについてファイル名Ｂ．ｄｏｃのサブスクリプションが未登録であると確認された場合には、送信元ノード（ここではブローカＡ）以外の接続ノードについての接続ノード情報１３１０におけるイベント逆経路決定機構１３１４に対してファイル名Ｂ．ｄｏｃを問い合わせることによって、ファイルＢ．ｄｏｃについて過去にイベント通知メッセージを送信してきたことがある接続ノードをイベント通知元として特定する（ステップＳ２１５）。上で述べたように、他の接続ノードについてファイル名Ｂ．ｄｏｃのサブスクリプションが未登録である場合には、まだ誰もイベント通知メッセージを受信するようになっていない。そして、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを送信してきたことがある接続ノードが特定できれば、この接続ノードの方向には、ファイルＢ．ｄｏｃを編集等していたクライアント端末が存在する。このクライアント端末の不要イベント・リスト２４１２にはファイル名Ｂ．ｄｏｃが登録されてしまっている可能性があるので、以下の処理で不要イベント・リスト２４１２からファイル名Ｂ．ｄｏｃを削除する。処理は、端子Ｄを介して図１６の処理に移行する。
【００８２】
図１６の処理の説明に移行して、ブローカＣは、イベント通知元が特定できた場合には、ファイル名Ｂ．ｄｏｃを含むイベント通知再開メッセージを生成し、イベント通知元（ここではブローカＢ）に送信する（ステップＳ２１７）。ブローカＢは、ブローカＣから、ファイル名Ｂ．ｄｏｃを含むイベント通知再開メッセージを受信すると（ステップＳ２１９）、イベント通知再開メッセージの送信元ノード以外の接続ノードの接続ノード情報１３１０におけるイベント逆経路決定機構１３１４で、ファイル名Ｂ．ｄｏｃを含むイベント通知メッセージを送信してきたことがある接続ノードを、イベント通知元として特定する（ステップＳ２２１）。そして、ブローカＢは、ファイル名Ｂ．ｄｏｃを含むイベント通知再開メッセージを生成し、イベント通知元であるクライアント端末Ｂに送信する（ステップＳ２２３）。
【００８３】
クライアント端末Ｂのメッセージ送受信部２１０は、ブローカＢから、ファイル名Ｂ．ｄｏｃを含むイベント通知再開メッセージを受信すると（ステップＳ２２５）、メッセージ解析部２２０に当該イベント通知再開メッセージを出力する。メッセージ解析部２２０は、当該イベント通知再開メッセージに含まれるファイル名Ｂ．ｄｏｃで、ルーティングテーブル２４０において、イベント通知再開メッセージの送信元ノードについての接続ノード情報２４１０における不要イベント・リスト２４１２を検索し、該当するデータを削除する（ステップＳ２２７）。
【００８４】
このようにすれば、次回クライアント端末ＢでファイルＢ．ｄｏｃが編集される場合等には、イベント通知メッセージが配信されるようになる。
【００８５】
なお、図１５及び図１６の処理の場面において、ブローカＣの詳細な動作について図１７を用いて説明しておく。なお、以下説明する処理は、図６で示した処理の後に実施される処理である。
【００８６】
ブローカ・コンピュータのメッセージ解析部１２０は、親ノードフラグ１３１２がオンにセットされている接続ノード情報１３１０が存在していない、すなわち親ノードが存在していない場合、サブスクリプション・リクエストの送信元ノード以外の他のノードの接続ノード情報１３１０におけるサブスクリプション・リスト１３１３に、ファイル名Ａ．ｄｏｃが登録済みであるか確認する（ステップＳ２４１）。ファイル名Ａ．ｄｏｃが登録済みである場合には、以下の処理は実施されない。
【００８７】
サブスクリプション・リクエストの送信元ノード以外の他のノードのいずれの接続ノード情報１３１０においても、サブスクリプション・リスト１３１３にファイル名Ａ．ｄｏｃが未登録であれば、メッセージ解析部１２０は、サブスクリプション・リクエストの送信元ノード以外の接続ノードについての接続ノード情報１３１０におけるイベント逆経路決定機構１３１４に対してファイル名Ｂ．ｄｏｃを問い合わせる。これによって、メッセージ解析部１２０は、ファイルＡ．ｄｏｃについて過去にイベント通知メッセージを送信してきたことがある接続ノードをイベント通知元として特定する（ステップＳ２４３）。ファイル名Ａ．ｄｏｃを含むイベント通知メッセージを送信してきたことがある接続ノードが特定できれば、この接続ノードの方向には、ファイルＡ．ｄｏｃを編集していたクライアント端末が存在する。このクライアント端末の不要イベント・リスト２４１２にはファイル名Ａ．ｄｏｃが登録されてしまっている可能性があるので、不要イベント・リスト２４１２からファイル名Ａ．ｄｏｃを削除することにする。
【００８８】
メッセージ解析部１２０は、イベント通知元が特定できた場合には、当該イベント通知元のＩＰアドレス１３１１を読み出し、ファイル名Ａ．ｄｏｃを含むイベント通知再開メッセージを生成する（ステップＳ２４５）。そして、メッセージ解析部１２０は、イベント通知元のＩＰアドレス宛にイベント通知再開メッセージを送信するように、生成されたイベント通知再開メッセージ及び当該イベント通知再開メッセージの送信依頼をメッセージ送受信部１１０に出力する（ステップＳ２４７）。
【００８９】
メッセージ送受信部１１０は、イベント通知再開メッセージ及び当該イベント通知再開メッセージの送信依頼を受信し（ステップＳ２４９）、指定ＩＰアドレス宛に、イベント通知再開メッセージを送信する（ステップＳ２５１）。
【００９０】
以上のような処理を実施すれば、適切にイベント通知メッセージの配信が再開される。
【００９１】
以上のような処理を実施すれば、不必要なイベント通知メッセージが配信されなくなるので、ネットワークを流れるメッセージの量を削減することができるようになる。
【００９２】
［実施の形態２］
本実施の形態では、ネットワークに流れるメッセージの量をさらに削減する構成を採用する。具体的には、ブローカ・コンピュータ１０００は、図１８に示すような構成を有する。
【００９３】
ブローカ・コンピュータ１０００は、（Ａ）ネットワークからメッセージを受信し、またメッセージをネットワークに送信するメッセージ送受信部１１０と、（Ｂ）メッセージ送受信部１１０が受信したメッセージを解析し、メッセージ送受信部１１０により送信すべきメッセージを生成する処理等を実施するメッセージ解析部１２２と、（Ｃ）メッセージ解析部１２２によって管理及び更新されるルーティングテーブル１４０とを有する。メッセージ送受信部１１０自体は、第１の実施の形態と同じである。ルーティングテーブル１４０は、第１の実施の形態とは異なっているので、メッセージ解析部１２２についてもその機能は異なっている。
【００９４】
ルーティングテーブル１４０は、ブローカ・コンピュータ１０００のデータ記憶装置に格納される。ルーティングテーブル１４０は、当該ブローカ・コンピュータ１０００の接続ノード毎に接続ノード情報１４１０を含む。接続ノード情報１４１０は、接続しているノードのＩＰアドレス１４１１と、接続しているノードが親ノードであるか否かを表す親ノードフラグ１４１２と、接続しているノードで興味のあるファイル等のファイル名（すなわち識別子）で表されるイベントと本データの所有者のユーザＩＤと例外的にイベント通知メッセージを転送しないこととする送信元ノードのリストである例外ノードリストとを含むサブスクリプションデータ１４１３と、イベント逆経路決定機構１４１４とを含む。
【００９５】
サブスクリプションデータ１４１３は、例えばイベントと所有者との組み合わせ毎に、必要なセット数用意される。ＩＰアドレス１４１１と親ノードフラグ１４１２とイベント逆経路決定機構１４１４とは、第１の実施の形態と同様である。
【００９６】
また、クライアント端末３０００は、図１９に示すように、（Ａ）ネットワークからメッセージを受信し、ネットワークに対してメッセージを送信するメッセージ送受信部３１０と、（Ｂ）メッセージ送受信部３１０が受信したメッセージを解析し、メッセージ送受信部３１０により送信すべきメッセージを生成する処理等を実施するメッセージ解析部３２０と、（Ｃ）ユーザからの指示やファイルの編集などを行う他のアプリケーション・プログラムによるファイルの編集や更新などのイベントを検出し、メッセージ解析部３２０に通知するインタフェース部３３０と、（Ｄ）メッセージ解析部３２０により管理及び更新されるルーティングテーブル３４０と、（Ｅ）イベントについてのログを格納するログ格納部３５０とを有する。メッセージ送受信部３１０とログ格納部３５０とは第１の実施の形態と対応する要素と同様である。
【００９７】
ルーティングテーブル３４０は、図１９に示すように、クライアント端末のデータ記憶装置に格納される。そして、ルーティングテーブル３４０は、当該クライアント端末が接続しているノード毎に接続ノード情報３４１０を含む。接続ノード情報３４１０は、接続しているノードのＩＰアドレス３４１１と、イベントが発生してもイベント通知メッセージを送信する必要がないと指示されているイベント（又はファイル）のリストである不要イベント・リスト３４１２とを含む。さらに、接続されている特別のノードとして、ピアツーピアでイベント通知メッセージを送信するクライアント端末が存在する場合には、当該クライアント端末用の接続ノード情報３４２０をも含む。この接続ノード情報３４２０は、接続されているノードのＩＰアドレス３４２１と、サブスクリプションの対象であるファイル名のリストであるサブスクリプション・リスト３４２２とを含む。
【００９８】
本実施の形態では、図２０に示すように、１つのブローカＣに、クライアント端末Ａ及びＢが接続されている例を示す。ここでクライアント端末Ａは、ログを収集するクライアント端末であり、クライアント端末Ｂは、イベント通知メッセージを配信するクライアント端末であるとする。
【００９９】
次に、図２０に示したシステムの動作について説明する。基本的な動作は第１の実施の形態と同様であるが、クライアント端末Ｂからクライアント端末Ａが、イベント通知メッセージを直接受信できるようにする機構を導入するに当たって変更された部分がある。この変更された部分を特に説明する。
【０１００】
まず、サブスクリプション・リクエストを送信する場面の基本的な処理は、第１の実施の形態と同じである。
【０１０１】
但し、サブスクリプション・メッセージは、ログ収集対象ファイルのファイル名だけではなく、サブスクリプションの所有者（owner）の識別子（所有者ＩＤと呼ぶ）を含むものとする。所有者ＩＤは、ユーザのＩＤの場合もあればクライアント端末のＩＤの場合もある。そして、ブローカ・コンピュータ１０００は、サブスクリプションデータ１４１３として、上で述べたようにファイル名と所有者ＩＤとを対応付けて、ルーティングテーブル１４０に登録する。
【０１０２】
一方、イベント通知メッセージは、編集等が行われたファイル名に加えて、本イベントの所有者（owner）の識別子（以下、ユーザＩＤと呼ぶ。）及びＩＰアドレスを含む。ユーザＩＤは、ユーザのＩＤの場合もあればクライアント端末のＩＤの場合もある。このように、サブスクリプションを登録した者（subscriber）に、イベントの所有者の識別子及びＩＰアドレスが通知されることになる。
【０１０３】
このような設定の下、本実施の形態の主要な処理について図２１乃至図２８を用いて説明する。ユーザから指示等に応じて又はインタフェース部３３０がイベント通知メッセージの受信頻度等に応じて自動的に判断して、特定のクライアント端末（ここではクライアント端末Ｂとする）からの特定のイベント通知メッセージが直接配信されるように、ブローカＣ及び特定のクライアント端末に要求するものとする。これによって、イベント通知メッセージの、ブローカ経由での配信量が削減されるようになり、全体としてもメッセージの数が削減される。
【０１０４】
まず、クライアント端末Ａのインタフェース部３３０は、ユーザなどから、イベント通知メッセージに係るイベント（ここではファイル名）及び当該イベント通知メッセージの送信元クライアント端末のＩＤ（以下、除外ユーザＩＤ）の指定を受け付け、ファイル名及び除外ユーザＩＤをメッセージ解析部３２０に出力して、アンサブスクリプション・リクエストの送信を依頼する。メッセージ解析部３２０は、ファイル名及び除外ユーザＩＤを受信すると、受信したファイル名、所有者ＩＤ（すなわち、本メッセージの送信元のＩＤ。ここでは０００Ａ。）及び受信した除外ユーザＩＤ（ここでは０００Ｂ）を含むアンサブスクリプション・リクエストを生成する。さらに、メッセージ解析部３２０は、ルーティングテーブル３４０において、ブローカＣについての接続ノード情報３４１０からＩＰアドレス３４１１を読み出す。そして、メッセージ解析部３２０は、当該ＩＰアドレス宛にサブスクリプション・リクエストを送信するように、生成したアンサブスクリプション・リクエスト及び当該アンサブスクリプション・リクエストの送信依頼をメッセージ送受信部３１０に出力する。メッセージ送受信部３１０は、メッセージ解析部３２０から、アンサブスクリプション・リクエスト及び当該アンサブスクリプション・リクエストの送信依頼を受信すると、指定ＩＰアドレス３４１１宛（すなわち、接続している親ノードであるブローカＣに）、アンサブスクリプション・リクエストを送信する（図２１：ステップＳ２６１）。
【０１０５】
ブローカＣのメッセージ送受信部１１０は、クライアント端末Ａから、ファイル名、所有者ＩＤ及び除外ユーザＩＤを含むアンサブスクリプション・リクエストを受信すると（ステップＳ２６３）、メッセージ解析部１２２に出力する。メッセージ解析部１２２は、ルーティングテーブル１４０において送信元ノードの接続ノード情報１４１０を特定し、当該接続ノード情報１４１０に含まれるサブスクリプションデータ１４１３のうち、受信したファイル名及び所有者ＩＤについてのサブスクリプションデータ１４１３を特定し、特定されたサブスクリプションデータ１４１３に含まれる例外ノードリストに、除外ユーザＩＤを追加登録する（ステップＳ２６５）。
【０１０６】
具体的には、サブスクリプションデータ１４１３は、図２２の状態から図２３の状態に変化する。図２２は、サブスクリプション・リクエストで、ユーザＡ（所有者ＩＤ＝０００Ａ）が、ファイルＡ．ｄｏｃのサブスクリプションを登録した状態である。そして、今回のアンサブスクリプション・リクエストを受信すると、図２３に示すように、同じサブスクリプションデータ１４１３において、除外ユーザＩＤである「０００Ｂ」が、例外ノードリストに追加登録される。
【０１０７】
さらに、メッセージ解析部１２２は、ルーティングテーブル１４０において、親ノードフラグ１４１２がオンにセットされている接続ノード情報１４１０を検索し、親ノードフラグ１４１２がオンにセットされている接続ノード情報１４１０が存在する、すなわち親ノードが存在するか確認する。親ノードが存在する場合には、メッセージ解析部１２２は、当該親ノードのＩＰアドレス１４１１を読み出し、受信したファイル名、所有者ＩＤ及び除外ユーザＩＤを含むアンサブスクリプション・リクエストを生成する。そして、メッセージ解析部１２２は、読み出したＩＰアドレス１４１１宛にアンサブスクリプション・リクエストを送信するように、生成したアンサブスクリプション・リクエスト及びその送信依頼をメッセージ送受信部１１０に出力する。メッセージ送受信部１１０は、アンサブスクリプション・リクエスト及びその送信依頼を受信すると、指定ＩＰアドレス宛に、アンサブスクリプション・リクエストを送信する（ステップＳ２６７）。親ノードが存在しない場合にはアンサブスクリプション・リクエストを転送することはない。なお、図２０の例では、ブローカＣの親ノードは存在しないので、処理はアンサブスクリプション・リクエストを転送することなく終了する。
【０１０８】
一方、クライアント端末Ａのメッセージ解析部３２０は、ファイル名（ここではＡ．ｄｏｃ）、本サブスクリプションの所有者ＩＤ（ユーザＡのユーザＩＤ「０００Ａ」）及びクライアント端末ＡのＩＰアドレスを含むＰ２Ｐ（ピアツーピア：peer to peer）サブスクリプション・リクエストを生成する。そして、メッセージ解析部３２０は、イベント通知メッセージに含まれるクライアント端末ＢのＩＰアドレス宛にＰ２Ｐサブスクリプション・リクエストを送信するように、生成したＰ２Ｐサブスクリプション・リクエスト及び当該リクエストの送信依頼をメッセージ送受信部３１０に出力する。メッセージ送受信部３１０は、指定ＩＰアドレス宛、すなわちクライアント端末Ｂに、Ｐ２Ｐサブスクリプション・リクエストを送信する（ステップＳ２６９）。この段階にて、クライアント端末Ａのメッセージ解析部３２０は、ルーティングテーブル３４０において、クライアント端末Ｂのための接続ノード情報を格納するようにしても良い。この際少なくともクライアント端末ＢのＩＰアドレスを格納しておく。
【０１０９】
クライアント端末Ｂのメッセージ送受信部３１０は、クライアント端末Ａから、ファイル名（ここではＡ．ｄｏｃ）、所有者ＩＤ（ここでは「０００Ａ」）及びクライアント端末ＡのＩＰアドレスを含むＰ２Ｐサブスクリプション・リクエストを受信し（ステップＳ２７１）、メッセージ解析部３２０に出力する。メッセージ解析部３２０は、Ｐ２Ｐサブスクリプション・リクエストを受信すると、当該Ｐ２Ｐサブスクリプション・リクエストに応答するための接続ノード情報３４２０をルーティングテーブル３４０に追加する（ステップＳ２７３）。具体的には、Ｐ２Ｐサブスクリプション・リクエストに含まれる、クライアント端末ＡのＩＰアドレスを、ＩＰアドレス３４２１として設定し、ファイル名Ａ．ｄｏｃ及び所有者ＩＤ「０００Ａ」を、サブスクリプション・リスト３４２２に登録する。
【０１１０】
このような処理を実施することによって、以下に述べるようにクライアント端末Ｂで次にファイルＡ．ｄｏｃについて編集などが行われた場合には、直接イベント通知メッセージがクライアント端末Ａに配信されるようになる。
【０１１１】
次に、図２４乃至図２８を用いて、クライアント端末ＢにおいてファイルＡ．ｄｏｃに対して編集などが行われた場面における処理内容について説明する。クライアント端末ＢのユーザＢは、クライアント端末Ｂで実行されている他のアプリケーション・プログラムにファイルＡ．ｄｏｃの編集等を実施させる。これに対して、インタフェース部３３０は、ファイルＡ．ｄｏｃの編集等を検出し（ステップＳ２８１）、メッセージ解析部３２０に、ファイルＡ．ｄｏｃの編集を検出したことを通知する。メッセージ解析部３２０は、ファイルＡ．ｄｏｃの編集の検出を通知されると、当該ファイルＡ．ｄｏｃが不要イベント・リスト３４１２に登録されているか確認する（ステップＳ２８３）。ファイル名Ａ．ｄｏｃが不要イベント・リスト３４１２に登録されていれば、その接続ノードについてはイベント通知メッセージを配信しない。ここでは、不要イベント・リスト３４１２に、ファイル名Ａ．ｄｏｃは登録されていないものとする。
【０１１２】
ファイル名Ａ．ｄｏｃが登録されていなければ、メッセージ解析部３２０は、ブローカＣのＩＰアドレスをブローカＣの接続ノード情報３４１０から読み出し、ファイル名Ａ．ｄｏｃ、イベントの所有者ＩＤ「０００Ｂ」及びクライアント端末ＢのＩＰアドレスを含むイベント通知メッセージを生成する。そして、メッセージ解析部３２０は、ブローカＣのＩＰアドレス宛にイベント通知メッセージを送信するように、生成したイベント通知メッセージ及びその送信依頼をメッセージ送受信部３１０に出力する。メッセージ送受信部３１０は、メッセージ解析部３２０から、イベント通知メッセージ及びその送信依頼を受信し、ブローカＣへ送信する（ステップＳ２８５）。クライアント端末Ｂは、さらに端子Ｅ以降の処理を実施するが、ここでは先にブローカＣの処理内容を説明する。
【０１１３】
ブローカＣのメッセージ送受信部１１０は、クライアント端末Ｂからイベント通知メッセージを受信すると（ステップＳ２８７）、メッセージ解析部１２２に出力する。メッセージ解析部１２２は、メッセージ送受信部１１０からイベント通知メッセージを受信すると、ルーティングテーブル１４０において、イベント通知メッセージの送信元の接続ノード情報１４１０におけるイベント逆経路決定機構１４１４に、イベント通知メッセージに係るイベント（ファイル名Ａ．ｄｏｃ）を登録する（ステップＳ２８９）。さらに、メッセージ解析部１２２は、親ノードフラグ１４１２がオンに設定されていない接続ノード情報１４１０、すなわち配下の他のノードを検索する。そして、メッセージ解析部１２２は、該当する接続ノード情報１４１０が存在する場合には、イベント通知メッセージのイベント（ファイル名Ａ．ｄｏｃ）が当該接続ノード情報１４１０におけるサブスクリプションデータ１４１３に含まれているか確認する（ステップＳ２９１）。例えば、ブローカＣに接続している他のクライアント端末が存在するか確認するものである。
【０１１４】
イベント通知メッセージのイベント（ファイル名Ａ．ｄｏｃ）がサブスクリプションデータ１４１３に含まれている場合には、メッセージ解析部１２２は、イベント通知メッセージに含まれる所有者ＩＤが、このサブスクリプションデータ１４１３の例外ノードリストに含まれるか確認する（ステップＳ２９３）。このステップについては、ステップＳ２９１でイベント通知メッセージのイベントがサブスクリプションデータ１４１３に含まれない場合には、実施されない。例えば、サブスクリプションデータ１４１３に図２３に示すようなデータが登録されているとすると、イベント通知メッセージの所有者ＩＤが「０００Ｂ」であれば、例外ノードリストに登録されていることになる。処理は端子Ｆを介して図２５の処理に移行する。
【０１１５】
図２５の処理の説明に移行して、イベント通知メッセージにおける送信元の所有者ＩＤが、対応する例外ノードリストに登録されていない場合には、メッセージ解析部１２２は、ステップＳ２９１で特定されたサブスクリプションに係るＩＰアドレスを接続ノード情報１４１０から抽出し、ファイル名Ａ．ｄｏｃ、所有者ＩＤ「０００Ｂ」及びクライアント端末ＢのＩＰアドレスを含むイベント通知メッセージを生成する。また、メッセージ解析部１２２は、生成したイベント通知メッセージを配下の他のノードのＩＰアドレス宛に送信するように、イベント通知メッセージ及びその送信依頼をメッセージ送受信部１１０に出力する。メッセージ送受信部１１０は、メッセージ解析部１２２から、イベント通知メッセージ及びその送信依頼を受信すると、指定ＩＰアドレス宛に、イベント通知メッセージを送信する（ステップＳ２９５）。ステップＳ２９５は、例外ノードリストにイベント通知メッセージにおける送信元の所有者ＩＤが登録されているサブスクリプションについては実施されない。
【０１１６】
また、メッセージ解析部１２２は、親ノードフラグ１４１２がオンにセットされている接続ノードが存在するか、すなわち親ノードが存在するか確認し、親ノードが存在する場合には、当該親ノードのＩＰアドレスを読み出す。そして、メッセージ解析部１２２は、ファイル名Ａ．ｄｏｃ、所有者ＩＤ「０００Ｂ」及びクライアント端末ＢのＩＰアドレスを含むイベント通知メッセージを生成する。そして、メッセージ解析部１２２は、生成したイベント通知メッセージを親ノードのＩＰアドレス宛に送信するように、イベント通知メッセージ及びその送信依頼をメッセージ送受信部１１０に出力する。メッセージ送受信部１１０は、メッセージ解析部１２２から、イベント通知メッセージ及びその送信依頼を受信すると、指定ＩＰアドレス宛に、イベント通知メッセージを送信する（ステップＳ２９７）。親ノードが存在しない場合にはステップＳ２９７は実行されない。
【０１１７】
また、クライアント端末Ｂのメッセージ解析部３２０は、Ｐ２Ｐサブスクリプション・リクエストに応じて生成した接続ノード情報３４２０がルーティングテーブル３４０に保持されている場合には、当該接続ノード情報３４２０のサブスクリプション・リスト３４２２についても、本イベント（ここではファイル名Ａ．ｄｏｃ）が登録されているか確認する。ファイル名Ａ．ｄｏｃが登録されている場合には、メッセージ解析部３２０は、ファイル名Ａ．ｄｏｃ及び本イベントの所有者ＩＤ（ここでは「０００Ｂ」）を含むＰ２Ｐイベント通知メッセージを生成し、クライアント端末ＡのＩＰアドレスを読み出す。そして、メッセージ解析部３２０は、クライアント端末ＡのＩＰアドレス宛にＰ２Ｐイベント通知メッセージを送信するように、Ｐ２Ｐイベント通知メッセージ及びその送信依頼を、メッセージ送受信部３１０に出力する。メッセージ送受信部３１０は、メッセージ解析部３２０から、Ｐ２Ｐイベント通知メッセージ及びその送信依頼を受信すると、指定ＩＰアドレス宛にＰ２Ｐイベント通知メッセージを送信する（ステップＳ２９９）。
【０１１８】
クライアント端末Ａのメッセージ送受信部３１０は、クライアント端末ＢからＰ２Ｐイベント通知メッセージを受信すると、メッセージ解析部３２０に出力する。メッセージ解析部３２０は、Ｐ２Ｐイベント通知メッセージに係るイベント（ファイル名Ａ．ｄｏｃ）などをログ格納部３５０に格納する（ステップＳ３０１）。
【０１１９】
このような処理を行うことによって、例えば頻繁にクライアント端末ＢがファイルＡ．ｄｏｃを編集するような場合、ブローカＣを経由してイベント通知メッセージを送信するよりも、ネットワーク全体のメッセージ送信量を削減することができる。
【０１２０】
なお、図２１で示したように、除外ユーザＩＤを含むアンサブスクリプション・リクエストを用いることで、サブスクリプション全てを削除せずに済むようになる。具体的には、図２６に示すように、図２１の単純化された状態ではなく、ブローカＣにさらにクライアント端末Ｅが接続されており、さらにクライアント端末Ｅが、クライアント端末Ｂと同様にファイルＡ．ｄｏｃを編集するような場面を想定する。このような場合、ファイルＡ．ｄｏｃについてのサブスクリプションを全て削除してしまうと、クライアント端末Ｂからのイベント通知メッセージがクライアント端末Ａに送信されなくなる。一方、上で述べたように例外ノードリストにクライアント端末ＢのＩＤ「０００Ｂ」を登録することによって、それ以外のＩＤ「０００Ｅ」などがイベント通知メッセージに含まれる場合については、通常どおりイベント通知メッセージが配信されるようになる。一方、クライアント端末Ｂからは、Ｐ２Ｐイベント通知メッセージが配信される。なお、クライアント端末Ａ以外にファイルＡ．ｄｏｃについてサブスクリプションを登録しているクライアント端末がないことを検出したブローカＣは、クライアント端末Ｂに対して不要イベント通知メッセージを送信して、ブローカＣのための接続ノード情報３４１０における不要イベント・リスト３４１２にファイル名Ａ．ｄｏｃを登録してしまえば、よりイベント通知メッセージの送信量を削減することができる。
【０１２１】
なお、ブローカＣが１段だけの場合ではなく、２段以上であっても処理は同様に行われる。図２７及び図２８を用いて簡単に説明する。図２７に示すように、ブローカＣの配下にクライアント端末Ａ及びＥが接続されており、ブローカＣの親ノードとしてブローカＦが接続されており、当該ブローカＦの配下にクライアント端末Ｂ及びＧが接続されているものとする。また、クライアント端末Ｂ及びＧは、ファイルＡ．ｄｏｃに対して編集など行い、クライアント端末Ａ及びＥは、ファイルＡ．ｄｏｃについてサブスクリプションを登録しているものとする。但し、クライアント端末Ａは、クライアント端末ＢからＰ２Ｐイベント通知メッセージを配信されるように例外ノードリストにクライアント端末ＢのＩＤ「０００Ｂ」を登録しているものとする。そうすると、ブローカＣの吹き出しで示すように、クライアント端末Ａについてのサブスクリプションデータには、ファイル名Ａ．ｄｏｃ、所有者ＩＤ「０００Ａ」及び例外ノードリストとしてＩＤ「０００Ｂ」が含まれる。また、クライアント端末Ｅについてのサブスクリプションデータには、ファイルＡ．ｄｏｃ及び所有者ＩＤ「０００Ｅ」が含まれる。一方、ブローカＦの吹き出しで示すように、ブローカＣについてのサブスクリプションデータとしては、ブローカＣにおけるクライアント端末Ａ及びＥについてのサブスクリプションデータと同じものが含まれる。
【０１２２】
このような場合には、図２８に示すように、クライアント端末Ｂからクライアント端末ＡへはＰ２Ｐイベント通知メッセージｄが送信される。クライアント端末Ｂからクライアント端末Ｅへは、通常のイベント通知メッセージａが送信される。また、クライアント端末Ｇからクライアント端末Ｅ及びＡには、通常のイベント通知メッセージｂ及びｃが送信される。
【０１２３】
以上述べたような処理を行うことによって、ネットワーク全体のメッセージ送信量を削減できる。
【０１２４】
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成に一致するわけではない。また、処理フローについても処理結果が変わらない限り、実行順番を入れ替えたり、並列実行するようにしても良い。
【０１２５】
さらに、最上位の親ノードか否かの判断については、親ノードフラグではなく別途設定を行っておき、その設定に基づいて判断するようにしても良い。また、全てのノードで同じプログラムを実行するが、そのノードの役割に応じて上で述べた機能のみが用いられるような実現方法を採用しても良い。
【０１２６】
なお、上で述べたクライアント端末及びブローカ・コンピュータは、コンピュータ装置であって、図２９に示すように、メモリ２５０１とプロセッサ（ＣＰＵ２５０３）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【０１２７】
ＨＤＤ２５０５とメモリ２５０１との少なくともいずれかは、データ格納部として機能する。
【０１２８】
以上述べた本実施の形態をまとめると、以下のようになる。
【０１２９】
実施の形態の第１の側面に係るメッセージ処理方法は、ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であり、（Ａ）特定のデータの識別子を含み且つ当該特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージを受信する受信ステップと、（Ｂ）あるデータの識別子を含み且つ当該あるデータについて興味があることを表すサブスクリプションデータが格納されているデータ格納部を特定のデータの識別子で検索して、特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、（Ｃ）特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、イベント通知メッセージの送信元に対して、特定のデータの識別子を含む不要イベント通知メッセージを送信するステップとを含む。
【０１３０】
このように不要イベント通知メッセージを送信することによって、イベント通知メッセージの送信側でイベント通知メッセージを送信しなくなる。よって、メッセージの送信量を削減することができる。
【０１３１】
また、実施の形態の第１の側面において、上で述べた受信ステップに応じて、本ブローカ・コンピュータの接続先のうち特定のデータについてのイベント通知メッセージの送信元に係る接続先についての逆経路決定機構に、当該特定のデータについてのイベント通知メッセージを受信したことを登録するステップと、特定のデータの識別子を含み且つ当該特定のデータについて興味があることを表すサブスクリプション・リクエストを受信するステップと、各接続先の逆経路決定機構により特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、特定のデータの識別子を含み且つ特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するイベント通知再開リクエストを送信するステップとをさらに含むようにしても良い。後から、イベント通知メッセージが必要になる場合についても対処することができる。
【０１３２】
実施の形態の第２の側面に係るメッセージ処理方法は、ネットワーク中、中継ノードとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であり、（Ａ）親ブローカ・コンピュータから、特定のデータの識別子を含む不要イベント通知メッセージを受信するステップと、（Ｂ）あるデータの識別子を含み且つ当該あるデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各接続先について、特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、（Ｃ）特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、不要イベント通知メッセージを送信するステップとを含む。
【０１３３】
このように不要イベント通知メッセージを中継することによって、特定のデータに対して編集などの処理を行うクライアント端末でイベント通知メッセージを送信しないように設定させられるようになる。すなわち、メッセージの送信量を削減することができる。
【０１３４】
実施の形態の第２の側面において、親ブローカ・コンピュータから、特定のデータの識別子を含み且つ特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するイベント通知再開リクエストを受信するステップと、逆経路決定機構により各接続先について特定のデータについてのイベント通知メッセージを受信したか否かを確認するステップと、特定のデータについてのイベント通知メッセージを受信したと確認された接続先に対して、イベント通知再開リクエストを送信するステップとをさらに含むようにしてもよい。これによって、適切にイベント通知メッセージの配信を再開させることができるようになる。
【０１３５】
実施の形態の第３の側面に係るメッセージ処理方法は、ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であり、（Ａ）ブローカ・コンピュータから、特定のデータの識別子を含む不要イベント通知メッセージを受信するステップと、（Ｂ）特定のデータの識別子を、不要イベント・リストに登録するステップと、（Ｃ）特定のデータについて処理が行われたことを検出した場合、不要イベント・リストを特定のデータの識別子で検索して登録されているか確認するステップと、（Ｄ）特定のデータの識別子が不要イベント・リストに登録済みの場合には、特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止（すなわち送信せずに処理を取りやめる）するステップとを含む。
【０１３６】
このようにすれば無駄なイベント通知メッセージの送信量を削減することができる。
【０１３７】
実施の形態の第３の側面において、ブローカ・コンピュータから、特定のデータの識別子を含み且つ特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するイベント通知再開リクエストを受信するステップと、特定のデータの識別子を不要イベント・リストから削除するステップとをさらに含むようにしてもよい。これによって、適切にイベント通知メッセージの配信を再開することができる。
【０１３８】
本技術の第４の側面に係るメッセージ処理方法は、ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であり、（Ａ）ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、（Ｂ）特定のデータの識別子とイベント通知メッセージの送信元クライアント端末又はユーザの識別子とを含み且つ当該送信元クライアント端末からの特定のデータについてのイベント通知メッセージが不要であることを通知するためのアンサブスクリプション・リクエストを、ブローカ・コンピュータに送信するステップと、（Ｃ）特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを、送信元クライアント端末のＩＰアドレス宛に送信するステップとを含む。
【０１３９】
このようにすればブローカで中継されるイベント通知メッセージの送信量が削減される。
【０１４０】
実施の形態の第５の側面に係るメッセージ処理方法は、ネットワークに接続されているブローカ・コンピュータにより実行されるメッセージ処理方法であり、（Ａ）第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子を含み且つ当該特定のデータについて興味があることを表すサブスクリプション・リクエストを受信するステップと、（Ｂ）あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子とを含み且つ当該あるデータについて興味があることを表すサブスクリプションデータが格納されるデータ格納部に、特定のデータの識別子及び第１の送信元クライアント端末又は第１のユーザの識別子を登録するステップと、（Ｃ）第１の送信元クライアント端末から、当該第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子とイベント通知メッセージの第２の送信元クライアント端末又は第２のユーザの識別子とを含み且つ当該第２の送信元クライアント端末からの特定のデータについてのイベント通知メッセージが不要であることを通知するためのアンサブスクリプション・リクエストを受信するステップと、（Ｄ）データ格納部において、特定のデータの識別子と第１の送信元クライアント端末又は第１のユーザの識別子とを含むサブスクリプションデータに対応付けて第２の送信元クライアント端末又は第２のユーザの識別子を登録するステップと、（Ｅ）特定のデータを処理した第２の送信元クライアント端末から、当該第２の送信元クライアント端末又は第２のユーザの識別子と特定のデータの識別子とを含むイベント通知メッセージを受信すると、データ格納部に格納されている特定のデータについてのサブスクリプションデータに基づきイベント通知メッセージの第１の送信元クライアント端末への送信を中止（すなわち送信せずに処理を取りやめる）するステップと、（Ｆ）特定のデータを処理した第３の送信元クライアント端末又は第３のユーザの識別子と特定のデータの識別子とを含むイベント通知メッセージを受信すると、データ格納部に格納されている特定のデータについてのサブスクリプションデータに基づきイベント通知メッセージを第１の送信元クライアント端末へ送信をするステップとを含む。
【０１４１】
このようにすればイベント通知メッセージの送信を適切に制御して、ネットワーク内におけるメッセージの送信量を削減することができるようになる。
【０１４２】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【０１４３】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１４４】
（付記１）
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップと、
を、ブローカ・コンピュータに実行させるためのメッセージ処理プログラム。
【０１４５】
（付記２）
前記受信ステップに応じて、前記本ブローカ・コンピュータの接続先のうち前記特定のデータについての前記イベント通知メッセージの送信元に係る接続先についての逆経路決定機構に、当該特定のデータについての前記イベント通知メッセージを受信したことを登録するステップと、
前記特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
各前記接続先の前記逆経路決定機構により前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを送信するステップと、
をさらに、前記ブローカ・コンピュータに実行させるための付記１記載のメッセージ処理プログラム。
【０１４６】
（付記３）
ネットワーク中、中継ノードとして機能するブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各前記接続先について、前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信するステップと、
を実行させるためのメッセージ処理プログラム。
【０１４７】
（付記４）
前記親ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
前記逆経路決定機構により各前記接続先について前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記イベント通知再開リクエストを送信するステップと、
をさらに実行させるための付記３記載のメッセージ処理プログラム。
【０１４８】
（付記５）
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末に実行させるためのメッセージ処理プログラムであって、
前記ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
前記特定のデータの識別子を、不要イベント・リストに登録するステップと、
前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認するステップと、
前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップと、
を実行させるためのメッセージ処理プログラム。
【０１４９】
（付記６）
前記ブローカ・コンピュータから、前記特定のデータの識別子と前記特定のデータについて処理が行われたことを表すイベントの通知の再開を要求するデータとを含むイベント通知再開リクエストを受信するステップと、
前記特定のデータの識別子を前記不要イベント・リストから削除するステップと、
をさらに実行させるための付記５記載のメッセージ処理プログラム。
【０１５０】
（付記７）
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末に実行させるためのメッセージ処理プログラムであって、
前記ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信するステップと、
前記特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを、前記送信元クライアント端末のＩＰアドレス宛に送信するステップと、
を実行させるためのメッセージ処理プログラム。
【０１５１】
（付記８）
ネットワークに接続されているブローカ・コンピュータに実行させるためのメッセージ処理プログラムであって、
第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、前記特定のデータの識別子及び前記第１の送信元クライアント端末又は第１のユーザの識別子を登録するステップと、
前記第１の送信元クライアント端末から、当該第１の送信元クライアント端末又は第１のユーザの識別子と前記特定のデータの識別子とイベント通知メッセージの第２の送信元クライアント端末又は第２のユーザの識別子と当該第２の送信元クライアント端末からの前記特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信するステップと、
前記データ格納部において、前記特定のデータの識別子と前記第１の送信元クライアント端末又は第１のユーザの識別子とを含むサブスクリプションデータに対応付けて前記第２の送信元クライアント端末又は第２のユーザの識別子を登録するステップと、
前記特定のデータを処理した前記第２の送信元クライアント端末から、当該第２の送信元クライアント端末又は第２のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージの前記第１の送信元クライアント端末への送信を中止するステップと、
前記特定のデータを処理した第３の送信元クライアント端末又は第３のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージを前記第１の送信元クライアント端末へ送信をするステップと、
を実行させるためのメッセージ処理プログラム。
【０１５２】
（付記９）
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信する受信ステップと、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するステップと、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信するステップと、
を含むメッセージ処理方法。
【０１５３】
（付記１０）
ネットワーク中、中継ノードとして機能するブローカ・コンピュータにより実行されるメッセージ処理方法であって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各前記接続先について、前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するステップと、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信するステップと、
を含むメッセージ処理方法。
【０１５４】
（付記１１）
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であって、
前記ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するステップと、
前記特定のデータの識別子を、不要イベント・リストに登録するステップと、
前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認するステップと、
前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止するステップと、
を含むメッセージ処理方法。
【０１５５】
（付記１２）
ネットワークを介してブローカ・コンピュータに接続されるクライアント端末により実行されるメッセージ処理方法であって、
前記ブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するステップと、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信するステップと、
前記特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを、前記送信元クライアント端末のＩＰアドレス宛に送信するステップと、
を含むメッセージ処理方法。
【０１５６】
（付記１３）
ネットワークに接続されているブローカ・コンピュータにより実行されるメッセージ処理方法であって、
第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するステップと、
あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、前記特定のデータの識別子及び前記第１の送信元クライアント端末又は第１のユーザの識別子を登録するステップと、
前記第１の送信元クライアント端末から、当該第１の送信元クライアント端末又は第１のユーザの識別子と前記特定のデータの識別子とイベント通知メッセージの第２の送信元クライアント端末又は第２のユーザの識別子と当該第２の送信元クライアント端末からの前記特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信するステップと、
前記データ格納部において、前記特定のデータの識別子と前記第１の送信元クライアント端末又は第１のユーザの識別子とを含むサブスクリプションデータに対応付けて前記第２の送信元クライアント端末又は第２のユーザの識別子を登録するステップと、
前記特定のデータを処理した前記第２の送信元クライアント端末から、当該第２の送信元クライアント端末又は第２のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージの前記第１の送信元クライアント端末への送信を中止するステップと、
前記特定のデータを処理した第３の送信元クライアント端末又は第３のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージを前記第１の送信元クライアント端末へ送信をするステップと、
を含むメッセージ処理方法。
【０１５７】
（付記１４）
ネットワーク中、親ブローカが設定されていないブローカとして機能するブローカ・コンピュータであって、
特定のデータの識別子と当該特定のデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信するメッセージ送受信部と、
あるデータの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されているデータ格納部を前記特定のデータの識別子で検索して、前記特定のデータの識別子を含むサブスクリプションデータが存在するか確認するメッセージ解析部と、
を有し、
前記特定のデータの識別子を含むサブスクリプションデータが存在しない場合に、前記メッセージ送受信部は、前記イベント通知メッセージの送信元に対して、前記特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを送信する
ブローカ・コンピュータ。
【０１５８】
（付記１５）
ネットワーク中、中継ノードとして機能するブローカ・コンピュータであって、
親ブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するメッセージ送受信部と、
あるデータの識別子と当該あるデータについて処理が行われたことを表すイベント通知とを含むイベント通知メッセージを受信したことを当該イベント通知メッセージの送信元に係る接続先について登録している逆経路決定機構により、各前記接続先について、前記特定のデータについての前記イベント通知メッセージを受信したか否かを確認するメッセージ解析部と、
を有し、
前記メッセージ送受信部は、
前記特定のデータについての前記イベント通知メッセージを受信したと確認された前記接続先に対して、前記不要イベント通知メッセージを送信する
ブローカ・コンピュータ。
【０１５９】
（付記１６）
ネットワークを介して接続されるブローカ・コンピュータから、特定のデータの識別子と送信不要であることを表す不要イベント通知とを含む不要イベント通知メッセージを受信するメッセージ送受信部と、
前記特定のデータの識別子を、不要イベント・リストに登録するメッセージ解析部と、
を有し、
前記メッセージ解析部は、前記特定のデータについて処理が行われたことを検出した場合、前記不要イベント・リストを前記特定のデータの識別子で検索して登録されているか確認し、前記特定のデータの識別子が前記不要イベント・リストに登録済みの場合には、前記特定のデータについて処理が行われたことを表すイベントを通知するイベント通知メッセージの送信を中止させる
クライアント端末。
【０１６０】
（付記１７）
ネットワークを介して接続されるブローカ・コンピュータから、特定のデータを処理したクライアント端末又は当該クライアント端末のユーザの識別子及びＩＰアドレスと前記特定のデータの識別子とを含むイベント通知メッセージを受信するメッセージ送受信部と、
前記特定のデータの識別子と前記イベント通知メッセージの送信元クライアント端末又はユーザの識別子と当該送信元クライアント端末からの前記特定のデータについての前記イベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを生成し、前記メッセージ送受信部に、前記メッセージ解析部により生成された前記アンサブスクリプション・リクエストを、前記ブローカ・コンピュータに送信させるメッセージ解析部と、
を有し、
前記メッセージ解析部は、さらに、
前記特定のデータの識別子と本クライアント端末のＩＰアドレスとを含むピアツーピア・サブスクリプション・リクエストを生成し、前記メッセージ送受信部に、前記送信元クライアント端末のＩＰアドレス宛に送信させる
をクライアント端末。
【０１６１】
（付記１８）
ブローカ・コンピュータであって、
第１の送信元クライアント端末又は第１のユーザの識別子と特定のデータの識別子と当該特定のデータについて興味があることを表すデータとを含むサブスクリプション・リクエストを受信するメッセージ送受信部と、
あるデータの識別子と興味を有するユーザのクライアント端末又はユーザの識別子と当該あるデータについて興味があることを表すデータとを含むサブスクリプションデータが格納されるデータ格納部に、前記特定のデータの識別子及び前記第１の送信元クライアント端末又は第１のユーザの識別子を登録するメッセージ解析部と、
を有し、
前記メッセージ送受信部は、
前記第１の送信元クライアント端末から、当該第１の送信元クライアント端末又は第１のユーザの識別子と前記特定のデータの識別子とイベント通知メッセージの第２の送信元クライアント端末又は第２のユーザの識別子と当該第２の送信元クライアント端末からの前記特定のデータについてのイベント通知メッセージが不要であることを通知するためのデータとを含むアンサブスクリプション・リクエストを受信し、
前記メッセージ解析部は、
前記データ格納部において、前記特定のデータの識別子と前記第１の送信元クライアント端末又は第１のユーザの識別子とを含むサブスクリプションデータに対応付けて前記第２の送信元クライアント端末又は第２のユーザの識別子を登録し、
前記メッセージ送受信部が、前記特定のデータを処理した前記第２の送信元クライアント端末から、当該第２の送信元クライアント端末又は第２のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージの前記第１の送信元クライアント端末への送信を中止させ、
前記メッセージ送受信部が、前記特定のデータを処理した第３の送信元クライアント端末又は第３のユーザの識別子と前記特定のデータの識別子とを含むイベント通知メッセージを受信すると、前記データ格納部に格納されている前記特定のデータについての前記サブスクリプションデータに基づき前記イベント通知メッセージを前記第１の送信元クライアント端末へ送信させる、
ブローカ・コンピュータ。
【符号の説明】
【０１６２】
１００  ブローカ・コンピュータ    １１０  メッセージ送受信部
１２０  メッセージ解析部    １３０  ルーティングテーブル
２００  クライアント端末    ２１０  メッセージ送受信部
２２０  メッセージ解析部    ２３０  インタフェース部
２４０  ルーティングテーブル    ２５０  ログ格納部
【図１】
0005458944.tif 000002
【図２】
0005458944.tif 000003
【図３Ａ】
0005458944.tif 000004
【図３Ｂ】
0005458944.tif 000005
【図４】
0005458944.tif 000006
【図５】
0005458944.tif 000007
【図６】
0005458944.tif 000008
【図７】
0005458944.tif 000009
【図８】
0005458944.tif 000010
【図９】
0005458944.tif 000011
【図１０】
0005458944.tif 000012
【図１１】
0005458944.tif 000013
【図１２】
0005458944.tif 000014
【図１３】
0005458944.tif 000015
【図１４】
0005458944.tif 000016
【図１５】
0005458944.tif 000017
【図１６】
0005458944.tif 000018
【図１７】
0005458944.tif 000019
【図１８】
0005458944.tif 000020
【図１９】
0005458944.tif 000021
【図２０】
0005458944.tif 000022
【図２１】
0005458944.tif 000023
【図２２】
0005458944.tif 000024
【図２３】
0005458944.tif 000025
【図２４】
0005458944.tif 000026
【図２５】
0005458944.tif 000027
【図２６】
0005458944.tif 000028
【図２７】
0005458944.tif 000029
【図２８】
0005458944.tif 000030
【図２９】
0005458944.tif 000031