(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記イベントを処理するモジュールを、前記複数のノードのうち前記モジュールに定義された属性に対応する属性のノードに配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行することを特徴とするイベント収集方法。
【請求項２】
前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行し、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする請求項１に記載のイベント収集方法。
【請求項３】
コンピュータに、
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記イベントを処理するモジュールを、前記複数のノードのうち前記モジュールに定義された属性に対応する属性のノードに配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行させることを特徴とするイベント収集プログラム。
【請求項４】
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記イベントを処理するモジュールを、前記複数のノードのうち前記モジュールに定義された属性に対応する属性のノードに配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント収集方法、イベント収集プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
センサノードによってセンシングされたセンシングデータをイベントとして採取するセンサネットワークが知られている。かかるセンサネットワークを介してサーバノードに採取されたイベントに応じて各種のサービス、例えばアラートの発信や機器の制御などが提供される。
【０００３】
このように、センサノードからのイベントをサーバノードに収集させる場合には、全てのイベントがサーバノードに集中して通知されることになる。このため、サーバノードの負荷が増大するとともに、ネットワークのトラフィックの増加に伴ってネットワーク帯域も逼迫する。
【０００４】
かかるサーバノードの負荷とネットワークトラフィックとを抑制する技術の一例として、次のような技術が提案されている。一例としては、データをフィルタリングするフィルタエージェントを消費ノードからデータ生産ノードへ転送することによってシステムパフォーマンスおよび／またはリソース消費を改善するシステムが挙げられる。他の一例としては、スクリプトを入れ子構造とし、スクリプトの一部を下位ノードである中間ノードやセンサノードに実行させるセンサネットワークシステムが挙げられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９７６０３号公報
【特許文献２】特開２００６−３４４０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、サーバノードの負荷とネットワークトラフィックとを抑制する技術の一例として、次のような技術が考えられる。すなわち、イベントの発生状況やセンサネットワークのトポロジに応じてイベントの収集経路を決定しておき、その収集経路に基づいて、中間ノードやセンサノードなどの下位ノードにイベントを処理するモジュールを分散配備する技術が一例として考えられる。
【０００７】
しかしながら、上記の考案技術を実現するためには、ネットワークのトポロジが構築されていることを要するが、ノードの追加や削除など、ネットワーク経路が変更されるごとにトポロジが構築されるとは限らない。このため、上記の考案技術では、ネットワーク経路の変化に応じてモジュールを適切に配備することができない場合があった。
【０００８】
開示の技術は、上記に鑑みてなされたものであって、ネットワーク経路の変化に応じてモジュールを適切に配備することができるイベント収集方法、イベント収集プログラム及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願の開示するイベント収集方法は、コンピュータが実行するイベント収集方法であって、一つの態様において、ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信する。また、イベント収集方法は、受信した経路情報に基づいて、前記複数のノード間の接続情報を生成する。また、イベント収集方法は、生成した接続情報によって示されるノード間でイベントが送信される場合に、前記イベントを処理するモジュールを、前記複数のノードのうち前記モジュールに定義された属性に対応する属性のノードに配備可能か否か判定する。また、イベント収集方法は、前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、推定した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する。
【発明の効果】
【００１０】
本願の開示する技術の一つの態様によれば、ネットワーク経路の変化に応じてモジュールを適切に配備することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るセンサネットワークシステムのシステム構成を示す図である。
【図２】図２は、実施例１に係るサーバノードの機能的構成を示すブロック図である。
【図３】図３は、モジュール記憶部に記憶される情報の構成例を示す図である。
【図４】図４は、モジュール定義記憶部に記憶される情報の構成例を示す図である。
【図５】図５は、経路情報記憶部に記憶される情報の構成例を示す図である。
【図６】図６は、トポロジ記憶部に記憶される情報の構成例を示す図である。
【図７】図７は、イベント記憶部に記憶される情報の構成例を示す図である。
【図８】図８は、発生イベント情報記憶部に記憶される情報の構成例を示す図である。
【図９】図９は、配備先情報記憶部に記憶される情報の構成例を示す図である。
【図１０】図１０は、図９に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１１】図１１は、図１０に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１２】図１２は、図１に示したセンサネットワークにおける経路変更の一例を示す図である。
【図１３】図１３は、図５に示した経路情報記憶部からの経路情報の遷移を示す図である。
【図１４】図１４は、図９に示したトポロジ記憶部からのトポロジの遷移を示す図である。
【図１５】図１５は、図１１に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１６】図１６は、実施例１に係るセンサノードの機能的構成を示すブロック図である。
【図１７】図１７は、実施例１に係るＧＷノードの機能的構成を示すブロック図である。
【図１８】図１８は、実施例１に係るセンサノードにおける全体処理の手順を示すフローチャートである。
【図１９】図１９は、実施例１に係るモジュール配備処理の手順を示すフローチャートである。
【図２０】図２０は、実施例１に係るモジュール配備処理の手順を示すフローチャートである。
【図２１】図２１は、実施例２に係るサーバノードの機能的構成を示すブロック図である。
【図２２】図２２は、実施例２に係るセンサノードの機能的構成を示すブロック図である。
【図２３】図２３は、実施例２に係るＧＷノードの機能的構成を示すブロック図である。
【図２４】図２４は、実施例２に係るセンサノードにおける全体処理の手順を示すフローチャートである。
【図２５】図２５は、実施例２に係るモジュール配備処理の手順を示すフローチャートである。
【図２６】図２６は、実施例２に係るモジュール配備処理の手順を示すフローチャートである。
【図２７】図２７は、経路情報記憶部に記憶される情報の構成例を示す図である。
【図２８】図２８は、イベント収集プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するイベント収集方法、イベント収集プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１３】
［システム構成］
まず、本実施例に係るセンサネットワークシステムのシステム構成について説明する。図１は、実施例１に係るセンサネットワークシステムのシステム構成を示す図である。図１に示すセンサネットワークシステム１は、センサノード２１０によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
【００１４】
図１に示すように、センサネットワークシステム１には、サーバノード１１０と、センサノード２１０Ｘ−１、２１０Ｘ−２、２１０Ｙ−１及び２１０Ｙ−２と、ルータ１０Ｘ、１０Ｙ及び１０Ｚとが収容される。この図１の例では、ルータ１０Ｘ配下のＸ家のネットワークに収容されたセンサノード２１０Ｘ−１及び２１０Ｘ−２からサーバノード１１０へ、ルータ１０Ｘ及び１０Ｚを経由してイベントデータが収集される。また、図１の例では、ルータ１０Ｙ配下のＹ家のネットワークに収容されたセンサノード２１０Ｙ−１及び２１０Ｙ−２からサーバノード１１０へ、ルータ１０Ｙ及び１０Ｚを経由してイベントデータが収集される。なお、以下では、センサノード２１０Ｘ−１、２１０Ｘ−２、２１０Ｙ−１及び２１０Ｙ−２を区別なく総称する場合に「センサノード２１０」と記載する。また、ルータ１０Ｘ、１０Ｙ及び１０Ｚを区別なく総称する場合に「ルータ１０」と記載する。
【００１５】
これらサーバノード１１０、センサノード２１０及びルータ１０の間は、ネットワーク５を介して通信可能に接続される。かかるネットワーク５の一例としては、有線または無線を問わず、インターネット、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの通信網が挙げられる。なお、センサノード２１０及びルータ１０の数は図１の例に限定されるものではなく、それぞれ任意の数のセンサノード２１０及びルータ１０が収容される場合にも適用可能である。
【００１６】
このうち、ルータ１０は、異なるネットワーク同士を接続し、通信を中継する装置である。一例としては、ルータ１０は、ＬＡＮとＬＡＮ、ＬＡＮとＶＰＮなど、ネットワーク同士を接続し、通信を中継する。図１の例では、センサネットワークは、ルータ１０によって区切られた複数のサブネットを含む。すなわち、センサネットワークには、ルータ１０Ｘによって区切られたサブネットである「Ｘ家ネットワーク」と、ルータＹによって区切られたサブネットである「Ｙ家ネットワーク」とが存在する。また、センサネットワークには、Ｘ家ネットワーク及びＹ家ネットワークより上位にルータ１０Ｚによって区切られたサブネットである「Ｚエリアネットワーク」が存在し、ルータ１０Ｚより上位にはサブネットである「クラウドネットワーク」が存在する。
【００１７】
センサノード２１０は、センサ付きの通信端末である。かかるセンサノード２１０の一態様としては、パーソナルコンピュータや周辺機器、音響機器、携帯電話機やＰＨＳ（Personal  Handyphone  System）の携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード２１０に搭載されるセンサの一態様としては、温度を計測する温度センサ、湿度を計測する湿度センサ、温度および湿度を計測する温湿度センサなどの環境センサが挙げられる。なお、ここでは、センサノード２１０に搭載されるセンサの例として環境センサを例示したが、センサノード２１０にはＧＰＳ（Global  Positioning  System）センサ、加速度センサやジャイロセンサなどの任意のセンサを搭載できる。
【００１８】
サーバノード１１０は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。一態様としては、サーバノード１１０は、センサノード２１０から受信したイベントの処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
【００１９】
ここで、本実施例に係るサーバノード１１０は、ネットワークに接続された複数のノードから、ネットワークの経路に関連する経路情報を受信する。また、本実施例に係るサーバノード１１０は、受信した経路情報に基づいて、複数のノード間の接続情報を生成する。また、本実施例に係るサーバノード１１０は、生成した接続情報によって示されるノード間でイベントが送信される場合に、複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定する。また、本実施例に係るサーバノード１１０は、ノードにモジュールを配備可能であれば、複数のノードのそれぞれについて設定されたイベントの送信先を、推定した接続情報によって示されるノードに変更するとともに、ノードにモジュールを配備する。
【００２０】
このため、本実施例に係るサーバノード１１０は、ノードの追加や削除に応じてモジュールを適切に配備することができる。したがって、本実施例に係るサーバノード１１０によれば、センサネットワーク上のノードにモジュールを適切に配備できる結果、ネットワークの構成変更に追従してセンサネットワークのトラフィックを抑制できる。さらに、本実施例に係るサーバノード１１０では、モジュールを分散配備するので、サーバノード１１０に負荷が集中することも防止できる。
【００２１】
なお、図１の例では、サーバノード１１０の下位ノードとしてセンサノード２１０を図示しているが、後述するように、センサノード２１０及びサーバノード１１０間の通信を中継するＧＷノードがサーバノード１１０の下位ノードとして含まれる場合もある。以下では、ルートノードであるサーバノード１１０以外のセンサノード２１０や後述のＧＷノード３１０を「下位ノード」と総称する。
【００２２】
また、図１の例では、Ｘエリアネットワークに含まれるルータ１０及びホストには、ＩＰアドレス「１９２．１６８．１００．ｘ」が割り当てられているものとする。一例としては、ルータ１０Ｘには「１９２．１６８．１００．１」が、センサノード２１０Ｘ−１には「１９２．１６８．１００．２０１」が、センサノード２１０Ｘ−２には「１９２．１６８．１００．２０２」がそれぞれ割り当てられている。また、Ｙエリアネットワークに含まれるルータ１０及びホストには、ＩＰアドレス「１９２．１６８．１０１．ｘ」が割り当てられているものとする。一例としては、ルータ１０Ｙには「１９２．１６８．１０１．１」が、センサノード２１０Ｙ−１には「１９２．１６８．１０１．２０３」が、センサノード２１０Ｙ−２には「１９２．１６８．１０１．２０４」がそれぞれ割り当てられている。また、Ｚエリアネットワークに含まれるルータ１０及びホストには、ＩＰアドレス「１９２．１６８．１０．ｘ」が割り当てられているものとする。一例としては、ルータ１０Ｚには「１９２．１６８．１０．１」が、ルータ１０Ｘには「１９２．１６８．１０．２」が、ルータ１０Ｙには「１９２．１６８．１０．３」がそれぞれ割り当てられている。また、クラウドネットワークに含まれるルータ１０及びホストには、ＩＰアドレス「１９２．１６８．１．ｘ」が割り当てられているものとする。一例としては、サーバノード１１０には「１９２．１６８．１．１０」が、ルータ１０Ｚには「１９２．１６８．１．１」がそれぞれ割り当てられている。なお、ここで言う「ホスト」には、ＩＰアドレスが割り当てられたサーバノード１１０が含まれるものとする。
【００２３】
［サーバノードの構成］
続いて、本実施例に係るサーバノードの機能的構成について説明する。図２は、実施例１に係るサーバノード１１０の機能的構成を示すブロック図である。なお、サーバノード１１０は、図２に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
【００２４】
図２に示すように、サーバノード１１０は、モジュール登録部１１１と、モジュール記憶部１１１Ａと、モジュール定義記憶部１１１Ｂと、経路情報受信部１１２と、経路情報記憶部１１２Ａと、トポロジ生成部１１３と、トポロジ記憶部１１３Ａとを有する。さらに、サーバノード１１０は、イベント受信部１１４と、イベント記憶部１１４Ａと、モジュール実行部１１５と、発生イベント登録部１１６と、発生イベント情報記憶部１１６Ａとを有する。さらに、サーバノード１１０は、配備先情報記憶部１１７Ａと、配備先決定部１１７と、送信先情報送信部１１８と、モジュール送信部１１９とを有する。
【００２５】
モジュール登録部１１１は、モジュールを登録する処理部である。一態様としては、モジュール登録部１１１は、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。すると、モジュール登録部１１１は、サーバノード１１０にアップロードされたモジュールを後述のモジュール記憶部１１１Ａに登録する。さらに、モジュール登録部１１１は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部１１１Ｂに登録する。
【００２６】
モジュール記憶部１１１Ａは、モジュールを記憶する記憶部である。一例としては、モジュール記憶部１１１Ａは、モジュールがアップロードされた場合に、モジュール登録部１１１によってモジュールが登録される。他の一例としては、モジュール記憶部１１１Ａは、センサノード２１０や後述のＧＷノード３１０などの下位ノードにモジュールを配備する場合に、後述のモジュール送信部１１９によって参照される。
【００２７】
一態様としては、モジュール記憶部１１１Ａは、モジュール識別子とバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュール識別子」は、モジュールを識別するための識別子を指す。例えば、Ｃ言語でプログラミングされたモジュールには関数名を付与したり、Ｊａｖａ（登録商標）言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
【００２８】
図３は、モジュール記憶部１１１Ａに記憶される情報の構成例を示す図である。図３の例では、モジュール識別子「不快指数計算」とそのバイナリコードとが対応付けられた例を示している。この「不快指数計算」は、温度と湿度から不快指数を計算するモジュールのクラス名を指す。この「不快指数計算」が下位ノードに配備された場合には、下位ノードからサーバノード１１０に送信されるイベントが集約されることになる。
【００２９】
なお、図３の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード２１０等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
【００３０】
モジュール定義記憶部１１１Ｂは、モジュールに関する定義を記憶する記憶部である。一例としては、モジュール定義記憶部１１１Ｂは、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部１１１によってモジュールの定義が登録される。他の一例としては、モジュール定義記憶部１１１Ｂは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。
【００３１】
一態様としては、モジュール定義記憶部１１１Ｂは、モジュール識別子、入力イベント型、出力イベント型及び集約属性名が対応付けられたデータを記憶する。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数のノードを集約する枠組みである集約属性の名称を指す。
【００３２】
図４は、モジュール定義記憶部１１１Ｂに記憶される情報の構成例を示す図である。図４に示すモジュール識別子「不快指数計算」の例では、温度イベント及び湿度イベントが入力されて不快指数イベントが出力されることを示す。この「不快指数計算」の場合には、１度の処理で温度イベント及び湿度イベントが入力され、同一の家に収容されたセンサノード２１０によってセンシングされた温度が対象となるので、集約属性名として家ＩＤが付与されている。
【００３３】
経路情報受信部１１２は、センサノード２１０や後述のＧＷノード３１０を含む下位ノードから、センサネットワークの経路情報を受信する処理部である。一態様としては、経路情報受信部１１２は、それぞれの下位ノードからサーバノード１１０までにどのようなルータ１０やホストを通過するのかを表す経路情報を受信する。その上で、経路情報受信部１１２は、下位ノードから受信したセンサネットワークの経路情報を後述の経路情報記憶部１１２Ａに登録する。なお、経路情報受信部１１２によって受信される経路情報は、一例としては、サーバノード１１０を宛先として指定した「ｔｒａｃｅｒｏｕｔｅ」と呼ばれるコマンドが各ノードで実行されることにより取得される。この「ｔｒａｃｅｒｏｕｔｅ」が実行されることによって、各ノードからサーバノード１１０までに経由するルータ１０やホストのＩＰアドレス及びｈｏｐ数が経路情報としてそれぞれ取得される。なお、ｔｒａｃｅｒｏｕｔｅは、例えば、「ｔｒａｃｅｒｔ」とも称される。
【００３４】
経路情報記憶部１１２Ａは、センサネットワークの経路情報を記憶する記憶部である。一例としては、経路情報記憶部１１２Ａは、下位ノードからセンサネットワークの経路情報が受信された場合に、経路情報受信部１１２によって経路情報が登録される。他の一例としては、経路情報記憶部１１２Ａは、トポロジを生成するために、後述のトポロジ生成部１１３によって参照される。
【００３５】
一態様としては、経路情報記憶部１１２Ａは、送信元ノードＩＤ、ｈｏｐ数及びＩＰアドレスが対応付けられたデータを記憶する。ここで言う「送信元ノードＩＤ」は、経路情報の送信元となるノードを識別するための識別子を指す。また、「ｈｏｐ数」は、送信元ノードから、対応するＩＰアドレスが割り当てられたルータ１０及びホストまでに至る経路上に存在するルータの数を指す。また、「ＩＰアドレス」は、送信元ノードからサーバノード１１０までに経由するルータ１０及びホストに割り当てられたＩＰアドレスを指す。
【００３６】
図５は、経路情報記憶部１１２Ａに記憶される情報の構成例を示す図である。図５の例では、図１に示したセンサノード２１０Ｘ−１がＸ家に収容された温度センサＸであり、センサノード２１０Ｘ−２がＸ家に収容された湿度センサＸである。また、センサノード２１０Ｙ−１がＹ家に収容された温度センサＹであり、センサノード２１０Ｙ−２がＹ家に収容された湿度センサＹである。図５に示す例では、温度センサＸであるセンサノード２１０Ｘ−１からクラウドであるサーバノード１１０までに経由する１番目のルータ１０又はホストに割り当てられたＩＰアドレスが「１９２．１６８．１００．１」であることを示す。なお、このＩＰアドレス「１９２．１６８．１００．１」は、図１に示す例では、ルータ１０Ｘに割り当てられたＩＰアドレスである。
【００３７】
トポロジ生成部１１３は、センサネットワーク内の複数のノード間の接続情報、いわゆるトポロジを生成する処理部である。一例としては、トポロジ生成部１１３は、経路情報記憶部１１２Ａが更新された場合、すなわちネットワークの経路情報に変化があった場合に、その経路情報に基づいて、各下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を生成する。そして、トポロジ生成部１１３は、生成したノード間の接続情報を後述のトポロジ記憶部１１３Ａに格納する。
【００３８】
一態様としては、トポロジ生成部１１３は、経路情報記憶部１１２Ａを参照し、各ノードが同一の経路を経由するか否かに基づいて、各ノードの上位ノードを決定し、ノード間の接続情報をトポロジとして後述のトポロジ記憶部１１３Ａに格納する。例えば、トポロジ生成部１１３は、経路情報記憶部１１２Ａに記憶された送信元ノードＩＤを１つ選択する。そして、トポロジ生成部１１３は、選択したノードに対応付けられたＩＰアドレスと同一のＩＰアドレスに対応付けられたノードを特定する。ここで、同一のノードに対して複数のＩＰアドレスが特定される場合には、トポロジ生成部１１３は、特定されたＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレスを特定する。さらに、複数のノードが特定される場合には、トポロジ生成部１１３は、選択したノードのうち、より小さいｈｏｐ数に対応付けられたノードを特定する。その上で、トポロジ生成部１１３は、選択したノードを下位ノードとし、特定したノードを上位ノードとしてノード間の接続情報を生成し、生成した接続情報をトポロジとして後述のトポロジ記憶部１１３Ａに格納する。
【００３９】
図５に示す例では、トポロジ生成部１１３は、まず、「温度センサＸ」を選択する。そして、トポロジ生成部１１３は、「温度センサＸ」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」と同一のＩＰアドレスに対応付けられた「クラウド」を特定する。このため、トポロジ生成部１１３は、下位ノード「温度センサＸ」の上位ノードとして「クラウド」を特定する。他のノードについても同様に、トポロジ生成部１１３は、上位ノードを特定することで、トポロジを生成する。
【００４０】
トポロジ記憶部１１３Ａは、センサネットワークのトポロジを記憶する記憶部である。一例としては、トポロジ記憶部１１３Ａは、トポロジ生成部１１３によってノード間の接続情報がトポロジとして登録される。他の一例としては、トポロジ記憶部１１３Ａは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。
【００４１】
一態様としては、トポロジ記憶部１１３Ａは、下位ノードＩＤ及び上位ノードＩＤが対応付けられたデータを記憶する。ここで言う「下位ノードＩＤ」は、下位ノードを識別するための識別子を指す。また、「上位ノードＩＤ」は、下位ノードに接続される上位ノードを識別するための識別子を指す。
【００４２】
図６は、トポロジ記憶部１１３Ａに記憶される情報の構成例を示す図である。図３の例では、温度センサＸ、湿度センサＸ、温度センサＹ及び湿度センサＹの上位ノードが全てクラウドであるサーバノード１１０であり、センサノード２１０とサーバノード１１０の間にＧＷノード３１０などの中継ノードが介在していないことを示す。
【００４３】
イベント受信部１１４は、イベントを受信する処理部である。一態様としては、イベント受信部１１４は、センサノード２１０や後述のＧＷノード３１０などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部１１４Ａに格納する。このとき、イベント受信部１１４は、下位ノードから受信したイベントを後述の発生イベント登録部１１６にも出力する。なお、イベント受信部１１４では、必ずしもセンサノード２１０によってセンシングされた未処理のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって処理が実行されることにより、処理済みのイベントが受信される場合もある。
【００４４】
イベント記憶部１１４Ａは、イベントを記憶する記憶部である。このイベント記憶部１１４Ａは、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。
【００４５】
一例としては、イベント記憶部１１４Ａは、下位ノードからイベントが受信された場合に、イベント受信部１１４によってイベントが登録される。他の一例としては、イベント記憶部１１４Ａは、モジュールによってイベントが処理された場合に、後述のモジュール実行部１１５によって処理実行後のイベントが登録される。
【００４６】
一態様としては、イベント記憶部１１４Ａは、イベント型名、イベント発生時刻及びイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード２１０によってセンシングされた時刻を指す。また、「イベント属性」とは、イベントの性質や由来を指す。例えば、「イベント属性」は、イベントとして採取されるセンシングデータ又はそれが処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を示す。
【００４７】
図７は、イベント記憶部１１４Ａに記憶される情報の構成例を示す図である。図７に示す１番目のレコードは、２０１１年７月１３日の１２時にＸ家の温度センサＸによって２８度の温度が計測されたというイベントを示す。また、図７に示す２番目のレコードは、２０１１年７月１３日の１２時００分１０秒にＸ家の湿度センサＸによって５０％の湿度が計測されたというイベントを示す。図７に示す３番目のレコードは、２０１１年７月１３日の１２時００分２０秒にＹ家の温度センサＹによって３０度の温度が計測されたというイベントを示す。図７に示す４番目のレコードは、２０１１年７月１３日の１２時００分３０秒にＹ家の湿度センサＹによって７０％の湿度が計測されたというイベントを示す。
【００４８】
このように、イベント記憶部１１４Ａに記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図７の例では、センサノード２１０によってセンシングされた未処理のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって処理がなされた新たなイベントも格納されることになる。
【００４９】
モジュール実行部１１５は、サーバノード１１０に配備されたモジュールの実行制御を行う処理部である。一態様としては、モジュール実行部１１５は、イベント受信部１１４によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード１１０に配備されているか否かを判定する。このとき、モジュール実行部１１５は、モジュールがサーバノード１１０に配備されている場合には、当該モジュールを実行することによってイベントの処理を実行する。その後、モジュール実行部１１５は、モジュールによって処理が実行されたデータを新たなイベントとしてイベント記憶部１１４Ａに格納する。
【００５０】
発生イベント登録部１１６は、センサノード２１０やＧＷノード３１０などの下位ノードで発生した発生イベントを登録する処理部である。一態様としては、発生イベント登録部１１６は、イベント受信部１１４によってイベントが受信された場合に、受信されたイベントが発生イベントとして後述の発生イベント情報記憶部１１６Ａに既に登録されているか否かを判定する。このとき、発生イベント登録部１１６は、発生イベントとして未だ登録されていない場合には、下位ノードから受信したイベントを後述の発生イベント情報記憶部１１６Ａに登録する。
【００５１】
発生イベント情報記憶部１１６Ａは、発生イベントに関する情報を記憶する記憶部である。この発生イベント情報記憶部１１６Ａは、センサノード２１０またはＧＷノード３１０などの下位ノードでどのようなイベントが発生しているのかを管理するために設けられる。
【００５２】
一例としては、発生イベント情報記憶部１１６Ａは、下位ノードからイベントが受信された場合に、発生イベント登録部１１６によって発生イベントが登録される。他の一例としては、発生イベント情報記憶部１１６Ａは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。
【００５３】
一態様としては、発生イベント情報記憶部１１６Ａは、発生ノードＩＤ、発生イベント型及び発生イベント属性が対応付けられたデータを記憶する。ここで言う「発生ノードＩＤ」は、発生ノードを識別するための識別子を指す。また、「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。また、「発生イベント属性」は、発生イベントの属性を指す。
【００５４】
図８は、発生イベント情報記憶部１１６Ａに記憶される情報の構成例を示す図である。図８に示す１番目のレコードは、Ｘ家の温度センサＸで温度が計測されるというイベントが発生していることを示す。また、図８に示す２番目のレコードは、Ｘ家の湿度センサＸで湿度が計測されるというイベントが発生していることを示す。図８に示す３番目のレコードは、Ｙ家の温度センサＹで温度が計測されるというイベントが発生していることを示す。図８に示す４番目のレコードは、Ｙ家の湿度センサＹで湿度が計測されるというイベントが発生していることを示す。なお、図８の例では、発生イベントとしてセンサノード２１０によってセンシングされた未処理のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって処理がなされた新たなイベントも発生イベントとして格納される。
【００５５】
配備先情報記憶部１１７Ａは、モジュールの配備先に関する情報を記憶する記憶部である。一例としては、配備先情報記憶部１１７Ａは、センサネットワークのトポロジに変化があった場合に、後述の配備先決定部１１７によってアクセスされる。
【００５６】
一態様としては、配備先情報記憶部１１７Ａは、モジュール識別子、入力イベント型、集約属性名、発生イベント属性、発生ノードＩＤ及び配備先ノードＩＤが対応付けられたデータを記憶する。ここで言う「配備先ノードＩＤ」は、モジュールが配備されるセンサノード２１０、後述のＧＷノード３１０またはサーバノード１１０を識別するための識別子を指す。
【００５７】
図９は、配備先情報記憶部１１７Ａに記憶される情報の構成例を示す図である。この図９の例では、センサネットワークのトポロジに変化が検出されて後述の配備先決定部１１７によるモジュールの配備先の決定が開始された段階のテーブル例を図示している。すなわち、図９に示すように、全カラムのうちモジュール識別子、入力イベント型及び集約属性名がモジュール定義記憶部１１１Ｂから複写された段階のテーブル例が図示されている。以降の配備先ノードＩＤを始めとする残りのカラムが埋められる遷移については、図１０や図１１などを用いて後述する。
【００５８】
配備先決定部１１７は、モジュールの配備先を決定する処理部である。一態様としては、配備先決定部１１７は、トポロジ記憶部１１３Ａが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、以下に説明する処理を実行する。
【００５９】
これを説明すると、配備先決定部１１７は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部１１７Ａの該当カラムに書き込む。このとき、配備先情報記憶部１１７Ａは、図９に示すように、発生イベント属性、発生ノードＩＤ及び配備先ノードＩＤのカラムがブランクの状態となる。
【００６０】
続いて、配備先決定部１１７は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、配備先決定部１１７は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。その後、配備先決定部１１７は、抽出結果として得られた発生ノードＩＤ及び発生ノードＩＤに対応付けられた発生イベント属性を配備先情報記憶部１１７Ａに書き込む。
【００６１】
このとき、配備先決定部１１７は、発生ノードＩＤが配備先情報記憶部１１７Ａに複数登録された場合には、次のような処理を実行する。すなわち、配備先決定部１１７は、トポロジ記憶部１１３Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０又は後述のＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。そして、配備先決定部１１７は、前述のように抽出したノードＩＤを配備先ノードＩＤのカラムに登録する。
【００６２】
また、配備先決定部１１７は、発生ノードＩＤが配備先情報記憶部１１７Ａに１つ登録された場合には、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤを配備先ノードＩＤのカラムに登録する。
【００６３】
このようにして配備先情報記憶部１１７Ａに配備先ノードＩＤが登録されると、モジュール記憶部１１１Ａに記憶されたモジュールが後述のモジュール送信部１１９によって配備先ノードＩＤに対応するノードへ送信される。
【００６４】
その後、配備先決定部１１７は、モジュールの配備によって下位ノードから新たに取得される発生イベントが発生イベント情報記憶部１１６Ａに更新されるまで待機してから、未配備のモジュールがなくなるまでモジュールの配備を繰り返し実行する。
【００６５】
なお、他の態様としては、配備先決定部１１７は、トポロジ記憶部１１３Ａが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、次のような処理を実行しても良い。すなわち、配備先決定部１１７は、配備先情報記憶部１１７Ａに前回登録された配備先ノードＩＤが格納されている場合には、配備先ノードＩＤを再評価してもよい。一例としては、配備先決定部１１７は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、配備先決定部１１７は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。その後、配備先決定部１１７は、抽出結果として得られたノードＩＤが前回登録された配備先ノードＩＤと異なる場合には、得られたノードＩＤを新たな配備先ノードＩＤとして配備先情報記憶部１１７Ａに登録する。このようにして配備先情報記憶部１１７Ａに配備先ノードＩＤが登録されると、モジュール記憶部１１１Ａに記憶されたモジュールが後述のモジュール送信部１１９によって配備先ノードＩＤに対応するノードへ送信される。
【００６６】
また、発生ノードＩＤが配備先情報記憶部１１７Ａに１つも登録されなかった場合には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、配備先決定部１１７は、発生イベント情報記憶部１１６Ａが更新されるまで待機してからモジュールの配備を繰り返し実行する。
【００６７】
送信先情報送信部１１８は、センサノード２１０または後述のＧＷノード３１０などの下位ノードに送信先情報を送信する処理部である。一態様としては、送信先情報送信部１１８は、配備先決定部１１７によって配備先ノードＩＤが配備先情報記憶部１１７Ａに登録されると、登録された配備先ノードＩＤの上位ノードのノードＩＤをトポロジ記憶部１１３Ａから読み出す。そして、送信先情報送信部１１８は、読み出した上位ノードのノードＩＤを登録された配備先ノードＩＤに対応するノードへ送信する。
【００６８】
モジュール送信部１１９は、センサノード２１０または後述のＧＷノード３１０などの下位ノードにモジュールを送信する処理部である。一態様としては、モジュール送信部１１９は、配備先決定部１１７によって配備先ノードＩＤが配備先情報記憶部１１７Ａに登録されると、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信する。
【００６９】
（１）モジュール配備の具体例１
ここで、図９〜図１１を用いて、モジュール配備の具体例１について説明する。図１０は、図９に示した配備先情報記憶部１１７Ａからの配備状況の遷移を示す図である。図１１は、図１０に示した配備先情報記憶部１１７Ａからの配備状況の遷移を示す図である。
【００７０】
モジュールの配備が開始されると、図８に示した発生イベント情報記憶部１１６Ａと図９に示した配備先情報記憶部１１７Ａとの間で発生イベント型及び入力イベント型のカラムが配備先決定部１１７によって比較される。このとき、モジュール「不快指数計算」の入力イベント型「温度」と、発生ノードＩＤ「温度センサＸ」及び発生ノードＩＤ「温度センサＹ」の発生イベント型「温度」とが一致する。また、モジュール「不快指数計算」の入力イベント型「湿度」と、発生ノードＩＤ「湿度センサＸ」及び発生ノードＩＤ「湿度センサＹ」の発生イベント型「湿度」とが一致する。よって、モジュール「不快指数計算」に関し、発生ノードＩＤ「温度センサＸ」、「湿度センサＸ」、「温度センサＹ」及び「湿度センサＹ」の４つの発生ノードが配備先決定部１１７によって抽出される。
【００７１】
ここで、抽出された４つの発生ノード間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードが配備先決定部１１７によって抽出される。
【００７２】
かかるモジュール「不快指数計算」は、イベントの集約処理を実行するモジュールであるので、図４に示すように、モジュール「不快指数計算」に集約属性の属性名「家ＩＤ」が定義されている。一方、発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の発生イベント属性には、図８に示すように、属性名「家ＩＤ」及び属性値「Ｘ家」のペアを含んで構成される集約属性の属性データが含まれる。また、発生ノードＩＤ「温度センサＹ」及び「湿度センサＹ」の発生イベント属性には、図８に示すように、属性名「家ＩＤ」及び属性値「Ｙ家」のペアを含んで構成される集約属性の属性データが含まれる。
【００７３】
これら発生ノードＩＤ「温度センサＸ」、「湿度センサＸ」、「温度センサＹ」及び「湿度センサＹ」の発生ノードは、いずれも集約属性の属性名が「家ＩＤ」である。その一方で、発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」は、集約属性の属性値「Ｘ家」であるのに対し、発生ノードＩＤ「温度センサＹ」及び「湿度センサＹ」は、集約属性の属性値「Ｙ家」である。
【００７４】
したがって、モジュール「不快指数計算」は、Ｘ家用及びＹ家用のモジュールとして独立に配備される。すなわち、図１０に示す網掛け部分のように、モジュール「不快指数計算」に発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」とその発生イベント属性とが配備先情報記憶部１１７Ａの該当カラムに書き込まれる。さらに、図１０に示す網掛け部分のように、モジュール「不快指数計算」に発生ノードＩＤ「温度センサＹ」及び「湿度センサＹ」とその発生イベント属性とが配備先情報記憶部１１７Ａの該当カラムに書き込まれる。
【００７５】
このうち、Ｘ家用のモジュール「不快指数計算」は、発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の２つの発生ノードが存在する。このため、図６に示したトポロジ記憶部１１３Ａに記憶された上位ノードＩＤのうち発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の両方の発生ノードが下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。図６の例で言えば、発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の発生ノードは、いずれもクラウドであるサーバノード１１０に接続されており、発生ノード及びサーバノード１１０の間に後述のＧＷノード３１０等の中継ノードが介在していない。このため、図１１に示す網掛け部分のように、Ｘ家用のモジュール「不快指数計算」の配備先ノードＩＤのカラムには「クラウド」が格納される。これによって、Ｘ家用のモジュール「不快指数計算」がサーバノード１１０に配備されることになる。
【００７６】
Ｙ家用のモジュール「不快指数計算」についても、Ｘ家用のモジュール「不快指数計算」と同様に、発生ノードＩＤ「温度センサＹ」及び「湿度センサＹ」の２つの発生ノードが存在する。このため、Ｘ家用のモジュール「不快指数計算」の配備先ノードＩＤのカラムに「クラウド」を格納した処理と同様の処理によって、図１１に示す網掛け部分のように、Ｙ家用のモジュール「不快指数計算」の配備先ノードＩＤのカラムに「クラウド」が格納される。これによって、Ｙ家用のモジュール「不快指数計算」がサーバノード１１０に配備されることになる。
【００７７】
このように、図１１に示したＸ家用のモジュール「不快指数計算」及びＹ家用のモジュール「不快指数計算」が、クラウドに配備される。これによって、クラウドであるサーバノード１１０によって温度イベント及び湿度イベントが処理されることとなる。
【００７８】
（２）モジュール配備の具体例２
次に、図１２〜図１５を用いて、モジュール配備の具体例２について説明する。図１２は、図１に示したセンサネットワークにおける経路変更の一例を示す図である。図１３は、図５に示した経路情報記憶部からの経路情報の遷移を示す図である。図１４は、図９に示したトポロジ記憶部からのトポロジの遷移を示す図である。図１５は、図１１に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【００７９】
図１２に示すセンサネットワークシステム３は、図１に示したセンサネットワークシステム１と比較して、ルータ１０Ｘとセンサノード２１０Ｘ−１及び２１０Ｘ−２との間にＧＷノード３１０Ｘがさらに追加された点が異なる。さらに、センサネットワークシステム３は、ルータ１０Ｚとルータ１０Ｘ及びルータ１０Ｙとの間にＧＷノード３１０Ｚがさらに追加された点が異なる。
【００８０】
このように、ＧＷノード３１０Ｘ及び３１０Ｚが追加された場合には、センサネットワークの経路情報が変化する。図１３の例で言えば、図５に示した例と比べて、ＧＷ−ＸであるＧＷノード３１０Ｘからクラウドであるサーバノード１１０までに３つのルータ１０又はホストを経由することを示す経路情報が追加されている。さらに、図１３の例で言えば、図５に示した例と比べて、ＧＷ−ＺであるＧＷノード３１０Ｚからクラウドであるサーバノード１１０までに２つのルータ１０又はホストを経由することを示す経路情報が追加されている。
【００８１】
そして、図１３に示すように、センサネットワークの経路情報が変化した場合には、トポロジ生成部１１３によってトポロジが生成される。つまり、センサノード２１０及びＧＷノード３１０のそれぞれの上位ノードがトポロジ生成部１１３によって特定されることにより、図６に示したトポロジは図１４に示したトポロジに変更されることとなる。
【００８２】
図１３に示す例では、センサノード２１０Ｘである「温度センサＸ」の上位ノードになり得るノードとしては、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｘ」に対応付けられたＩＰアドレスは、いずれも「温度センサＸ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１００．１」を、「温度センサＸ」及び「ＧＷ−Ｘ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「ＧＷ−Ｚ」に対応付けられたＩＰアドレス「１９２．１６８．１０．１」及び「１９２．１６８．１．１０」は、いずれも「温度センサＸ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１０．１」を、「温度センサＸ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」は、「温度センサＸ」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１．１０」を、「温度センサＸ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【００８３】
このように、「温度センサＸ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」の３つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｘ」は、「温度センサＸ」のｈｏｐ数「１」に対応付けられており、「ＧＷ−Ｚ」は、「温度センサＸ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「温度センサＸ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「温度センサＸ」の上位ノードとして「ＧＷ−Ｘ」が特定される。
【００８４】
また、図１３に示す例では、センサノード２１０Ｘ−２である「湿度センサＸ」の上位ノードになり得るノードとしては、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｘ」に対応付けられたＩＰアドレスは、いずれも「湿度センサＸ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１００．１」を、「湿度センサＸ」及び「ＧＷ−Ｘ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「ＧＷ−Ｚ」に対応付けられたＩＰアドレス「１９２．１６８．１０．１」及び「１９２．１６８．１．１０」は、いずれも「湿度センサＸ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１０．１」を、「湿度センサＸ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」は、「湿度センサＸ」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１．１０」を、「湿度センサＸ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【００８５】
このように、「湿度センサＸ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」の３つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｘ」は、「湿度センサＸ」のｈｏｐ数「１」に対応付けられており、「ＧＷ−Ｚ」は、「湿度センサＸ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「湿度センサＸ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「湿度センサＸ」の上位ノードとして「ＧＷ−Ｘ」が特定される。
【００８６】
また、図１３に示す例では、センサノード２１０Ｙ−１である「温度センサＹ」の上位ノードになり得るノードとしては、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｚ」に対応付けられたＩＰアドレス「１９２．１６８．１０．１」及び「１９２．１６８．１．１０」は、いずれも「温度センサＹ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１０．１」を、「温度センサＹ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」は、「温度センサＹ」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１．１０」を、「温度センサＹ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【００８７】
このように、「温度センサＹ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｚ」及び「クラウド」の２つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｚ」は、「温度センサＹ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「温度センサＹ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「温度センサＹ」の上位ノードとして「ＧＷ−Ｚ」が特定される。
【００８８】
また、図１３に示す例では、センサノード２１０Ｙ−２である「湿度センサＹ」の上位ノードになり得るノードとしては、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｚ」に対応付けられたＩＰアドレス「１９２．１６８．１０．１」及び「１９２．１６８．１．１０」は、いずれも「湿度センサＹ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１０．１」を、「湿度センサＹ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」は、「湿度センサＹ」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１．１０」を、「湿度センサＹ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【００８９】
このように、「湿度センサＹ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｚ」及び「クラウド」の２つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｚ」は、「湿度センサＹ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「湿度センサＹ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「湿度センサＹ」の上位ノードとして「ＧＷ−Ｚ」が特定される。
【００９０】
また、図１３に示す例では、ＧＷノード３１０Ｘである「ＧＷ−Ｘ」の上位ノードになり得るノードとしては、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｚ」に対応付けられたＩＰアドレス「１９２．１６８．１０．１」及び「１９２．１６８．１．１０」は、いずれも「ＧＷ−Ｘ」に対応付けられたＩＰアドレスと一致する。このため、これらＩＰアドレスのうち、より小さいｈｏｐ数に対応付けられたＩＰアドレス「１９２．１６８．１０．１」を、「ＧＷ−Ｘ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」は、「ＧＷ−Ｘ」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１．１０」を、「ＧＷ−Ｘ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【００９１】
このように、「ＧＷ−Ｘ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｚ」及び「クラウド」の２つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｚ」は、「湿度センサＹ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「湿度センサＹ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「ＧＷ−Ｘ」の上位ノードとして「ＧＷ−Ｚ」が特定される。
【００９２】
また、図１３に示す例では、ＧＷノード３１０Ｚである「ＧＷ−Ｚ」の上位ノードになり得るノードとしては、「クラウド」が挙げられる。この「クラウド」に対応付けられたＩＰアドレス「１９２．１６８．１．１０」は、「ＧＷ−Ｚ」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１．１０」を、「ＧＷ−Ｚ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。よって、下位ノード「ＧＷ−Ｚ」の上位ノードとして「クラウド」が特定される。
【００９３】
このように、センサネットワークシステム３に含まれる各下位ノードの上位ノードがトポロジ生成部１１３によって特定されることにより、図６に示したトポロジは図１４に示したトポロジに変更される。
【００９４】
そして、図１４に示すように、センサネットワークのトポロジが変化した場合には、図１１の配備先情報記憶部１１７Ａに記憶されていた配備済の配備先ノードＩＤが再評価される。図１１の例では、Ｘ家用のモジュール「不快指数計算」は、発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の２つの発生ノードが存在する。このため、図１４に示したトポロジ記憶部１１３Ａに記憶された上位ノードＩＤのうち発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の両方の発生ノードが下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。図１４の例で言えば、発生ノードＩＤ「温度センサＸ」及び「湿度センサＸ」の発生ノードは、いずれもＧＷ−ＸであるＧＷノード３１０に接続されている。このため、Ｘ家用のモジュール「不快指数計算」の配備先ノードＩＤとして「ＧＷ−Ｘ」が抽出される。このように、今回配備先ノードＩＤとして抽出された「ＧＷ−Ｘ」は前回登録された配備先ノードＩＤ「クラウド」と異なるので、図１５に示す網掛け部分のように、「ＧＷ−Ｘ」が新たなＸ家用の配備先ノードＩＤとして配備先情報記憶部１１７Ａに登録される。
【００９５】
また、Ｙ家用のモジュール「不快指数計算」についても、Ｘ家用のモジュール「不快指数計算」と同様に、発生ノードＩＤ「温度センサＹ」及び「湿度センサＹ」の２つの発生ノードが存在する。図１４に示す例では、発生ノードＩＤ「温度センサＹ」及び「湿度センサＹ」の発生ノードは、いずれもＧＷ−ＺであるＧＷノード３１０Ｚに接続されている。このため、Ｙ家用のモジュール「不快指数計算」の配備先ノードＩＤとして「ＧＷ−Ｚ」が抽出される。このように、今回配備先ノードＩＤとして抽出された「ＧＷ−Ｚ」は前回登録された配備先ノードＩＤ「クラウド」と異なるので、図１５に示す網掛け部分のように、「ＧＷ−Ｚ」が新たなＹ家用の配備先ノードＩＤとして配備先情報記憶部１１７Ａに登録される。
【００９６】
このように、図１５に示したＸ家用のモジュール「不快指数計算」がＧＷ−Ｘに配備され、Ｙ家用のモジュール「不快指数計算」がＧＷ−Ｚに配備されることとなる。さらに、これによって、図１４に示したトポロジがセンサネットワークに適用されることになる。すなわち、図１４に示した下位ノードＩＤに対応する各ノードに対して、それぞれ対応する上位ノードＩＤが送信先情報として送信先情報送信部１１８によって送信される。このとき、モジュール記憶部１１１Ａに記憶されたモジュールもモジュール送信部１１９によって配備先ノードＩＤに対応するノードへ送信される。
【００９７】
なお、モジュール登録部１１１、経路情報受信部１１２、トポロジ生成部１１３、イベント受信部１１４、モジュール実行部１１５には、各種の集積回路や電子回路を採用できる。また、発生イベント登録部１１６、配備先決定部１１７、送信先情報送信部１１８、モジュール送信部１１９には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００９８】
また、モジュール記憶部１１１Ａ、モジュール定義記憶部１１１Ｂ、経路情報記憶部１１２Ａ、トポロジ記憶部１１３Ａ、イベント記憶部１１４Ａ、発生イベント情報記憶部１１６Ａ、配備先情報記憶部１１７Ａには、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ（Video  Random  Access  Memory）、ＲＡＭ（Random  Access  Memory)やフラッシュメモリ（flash  memory）などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【００９９】
［センサノードの構成］
次に、本実施例に係るセンサノードの機能的構成について説明する。図１６は、実施例１に係るセンサノード２１０の機能的構成を示すブロック図である。図１６に示すセンサノード２１０は、センサ情報受信部２１１と、モジュール受信部２１２と、モジュール実行部２１３と、送信先情報受信部２１４と、送信先情報記憶部２１５と、イベント送信部２１６とを有する。さらに、図１６に示すセンサノード２１０は、経路情報取得部２１７と、経路情報送信部２１８とを有する。
【０１００】
センサ情報受信部２１１は、センサノード２１０に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。一態様としては、センサ情報受信部２１１は、センサノード２１０に温度センサが内蔵されている場合には、温度センサによって計測された温度を受信する。他の一態様としては、センサ情報受信部２１１は、センサノード２１０に湿度センサが内蔵されている場合には、湿度センサによって計測された湿度を受信する。なお、センサノード２１０に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部２１１が設けられる。
【０１０１】
モジュール受信部２１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部２１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部２１３に出力される。
【０１０２】
モジュール実行部２１３は、センサノード２１０に配備されたモジュールの実行制御を行う処理部である。一態様としては、モジュール実行部２１３は、センサ情報受信部２１１によってセンサ情報が受信された場合に、受信されたセンサ情報を入力イベント型とするモジュールがセンサノード２１０に配備されているか否かを判定する。このとき、モジュール実行部２１３は、モジュールがセンサノード２１０に配備されている場合には、当該モジュールを実行することによってイベントの処理を実行する。その後、モジュール実行部２１３は、モジュールによって処理が実行されたデータを新たなイベントとしてイベント送信部２１６へ出力する。なお、モジュールがセンサノード２１０に配備されていない場合には、センサ情報を処理せずにそのままイベント送信部２１６へ出力する。
【０１０３】
送信先情報受信部２１４は、サーバノード１１０から送信先情報を受信する処理部である。一態様としては、送信先情報受信部２１４は、イベントの送信先となる上位ノードのノードＩＤをサーバノード１１０から受信する。そして、送信先情報受信部２１４は、受信した上位ノードのノードＩＤを後述の送信先情報記憶部２１５に格納する。
【０１０４】
送信先情報記憶部２１５は、送信先情報を記憶する記憶部である。一態様としては、送信先情報記憶部２１５は、イベントの送信先となる上位ノードのノードＩＤを記憶する。また、他の態様としては、送信先情報記憶部２１５は、イベントの送信先となる上位ノードを決定するために、後述のイベント送信部２１６によって参照される。
【０１０５】
イベント送信部２１６は、イベントを上位ノードに送信する処理部である。一態様としては、イベント送信部２１６は、モジュール実行部２１３によって処理されたイベント、あるいはセンサ情報受信部２１１によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部２１６は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード２１０のノードＩＤ、自装置を含む複数のノードを集約する集約属性の属性名及び属性値をセンサ情報に付加する。そして、イベント送信部２１６は、送信先情報記憶部２１５を参照し、イベントの送信先となる上位ノードを決定する。その上で、イベント送信部２１６は、センサ情報とともに発生ノードのノードＩＤ及び集約属性を含むイベントを、送信先となる上位ノードに送信する。
【０１０６】
ここで、上記の「集約属性」の属性名及び属性値は、センサノード２１０の製造段階でデバイスドライバなどに組み込んでおくことができる。例えば、センサデバイスが温度センサ、湿度センサや温湿度センサである場合には、温度や湿度が計測される枠組みである「家ＩＤ」を始め、「部屋ＩＤ」や「階ＩＤ」などの集約属性をイベントに付加するようにデバイスドライバを構成しておく。その上で、センサノード２１０がサーバノード１１０との間で通信コネクションが確立された段階で、既にサービスに加入している他のセンサノード２１０に先だって付与されている家ＩＤの属性値をサーバノード１１０から自動的に取得することもできる。なお、サーバノード１１０にＸ家またはＹ家の間取り等が登録されている場合には、「家ＩＤ」の他、「部屋ＩＤ」や「階ＩＤ」などの集約属性の属性値をサーバノード１１０から自動的に取得することもできる。
【０１０７】
経路情報取得部２１７は、ネットワークの経路情報を取得する処理部である。一例としては、経路情報取得部２１７は、所定のタイミングで、自ノードからサーバノード１１０までに経由するルータ１０を表す経路情報を取得する。経路情報取得部２１７は、取得した経路情報を前回取得した経路情報と比較し、経路情報に変更があるか否かを判定する。そして、経路情報に変更がある場合には、経路情報取得部２１７は、取得した経路情報を後述の経路情報送信部２１８に出力する。
【０１０８】
経路情報送信部２１８は、経路情報取得部２１７から出力された経路情報をサーバノード１１０に送信する処理部である。一態様としては、経路情報送信部２１８は、経路情報取得部２１７によって取得された各中継装置のＩＰアドレス及びそのｈｏｐ数に、自ノードのノードＩＤを付加して、サーバノード１１０に送信する。
【０１０９】
［ＧＷノードの構成］
次に、本実施例に係るＧＷノードの機能的構成について説明する。図１７は、実施例１に係るＧＷノード３１０の機能的構成を示すブロック図である。図１７に示すＧＷノード３１０は、イベント受信部３１１と、モジュール受信部３１２と、モジュール実行部３１３と、送信先情報受信部３１４と、送信先情報記憶部３１５と、イベント送信部３１６とを有する。さらに、図１７に示すＧＷノード３１０は、経路情報取得部３１７と、経路情報送信部３１８とを有する。
【０１１０】
イベント受信部３１１は、イベントを受信する処理部である。一態様としては、イベント受信部３１１は、下位ノードであるセンサノード２１０や他のＧＷノード３１０からイベントを受信する。
【０１１１】
モジュール受信部３１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部３１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部３１３に出力される。
【０１１２】
モジュール実行部３１３は、ＧＷノード３１０に配備されたモジュールの実行制御を行う処理部である。一態様としては、モジュール実行部３１３は、イベント受信部３１１によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがＧＷノード３１０に配備されているか否かを判定する。このとき、モジュール実行部３１３は、モジュールがＧＷノード３１０に配備されている場合には、当該モジュールを実行することによってイベントの処理を実行する。その後、モジュール実行部３１３は、モジュールによって処理が実行されたデータを新たなイベントとしてイベント送信部３１６へ出力する。なお、モジュールがＧＷノード３１０に配備されていない場合には、イベントを処理せずにそのままイベント送信部３１６へ出力する。
【０１１３】
送信先情報受信部３１４は、サーバノード１１０から送信先情報を受信する処理部である。一態様としては、送信先情報受信部３１４は、イベントの送信先となる上位ノードのノードＩＤをサーバノード１１０から受信する。そして、送信先情報受信部３１４は、受信した上位ノードのノードＩＤを後述の送信先情報記憶部３１５に格納する。
【０１１４】
送信先情報記憶部３１５は、送信先情報を記憶する記憶部である。一態様としては、送信先情報記憶部３１５は、イベントの送信先となる上位ノードのノードＩＤを記憶する。また、他の態様としては、送信先情報記憶部３１５は、イベントの送信先となる上位ノードを決定するために、後述のイベント送信部３１６によって参照される。
【０１１５】
イベント送信部３１６は、イベントを上位ノードに送信する処理部である。一態様としては、イベント送信部３１６は、モジュール実行部３１３によって処理されたイベント、あるいはイベント受信部３１１によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部３１６は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード２１０のノードＩＤ、自装置を含む複数のノードを集約する集約属性の属性名及び属性値をセンサ情報に付加する。そして、イベント送信部３１６は、送信先情報記憶部３１５を参照し、イベントの送信先となる上位ノードを決定する。その上で、イベント送信部３１６は、センサ情報とともに発生ノードのノードＩＤ及び集約属性を含むイベントを、送信先となる上位ノードに送信する。
【０１１６】
経路情報取得部３１７は、ネットワークの経路情報を取得する処理部である。一例としては、経路情報取得部３１７は、所定のタイミングで、自ノードからサーバノード１１０までに経由するルータ１０を表す経路情報を取得する。経路情報取得部３１７は、取得した経路情報を前回取得した経路情報と比較し、経路情報に変更があるか否かを判定する。そして、経路情報に変更がある場合には、経路情報取得部３１７は、取得した経路情報を後述の経路情報送信部３１８に出力する。
【０１１７】
一態様としては、経路情報取得部３１７は、サーバノード１１０を宛先として指定したコマンド「ｔｒａｃｅｒｏｕｔｅ」を実行する。これにより、経路情報取得部３１７は、自ノードからサーバノード１１０までに経由するルータ１０のＩＰアドレス及びｈｏｐ数を取得する。経路情報取得部３１７は、取得した各ルータ１０のＩＰアドレス及びｈｏｐ数を、前回取得したＩＰアドレス及びｈｏｐ数と比較し、変更があるか否かを判定する。そして、変更がある場合には、経路情報取得部３１７は、取得したＩＰアドレス及びｈｏｐ数を後述の経路情報送信部３１８に出力する。なお、ｔｒａｃｅｒｏｕｔｅは、例えば、「ｔｒａｃｅｒｔ」とも称される。
【０１１８】
経路情報送信部３１８は、経路情報取得部３１７から出力された経路情報をサーバノード１１０に送信する処理部である。一態様としては、経路情報送信部３１８は、経路情報取得部３１７によって取得された各中継装置のＩＰアドレス及びそのｈｏｐ数に、自ノードのノードＩＤを付加して、サーバノード１１０に送信する。
【０１１９】
［処理の流れ］
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。なお、ここでは、センサノード２１０によって実行される（１）全体処理を説明した後に、サーバノード１１０によって実行される（２）モジュール配備処理を説明することとする。
【０１２０】
（１）全体処理
図１８は、実施例１に係るセンサノード２１０における全体処理の手順を示すフローチャートである。この全体処理は、センサノード２１０の電源がＯＮ状態である限り、繰り返し実行される。
【０１２１】
図１８に示すように、センサノード２１０は、ネットワークの経路情報を取得する（ステップＳ１０１）。そして、センサノード２１０は、経路情報に変更があるか否かを判定する（ステップＳ１０２）。
【０１２２】
経路情報に変更があった場合（ステップＳ１０２肯定）には、センサノード２１０は、経路情報をサーバノード１１０に送信する（ステップＳ１０３）。なお、経路情報に変更がなかった場合（ステップＳ１０２否定）には、センサノード２１０は、ステップＳ１０３の処理を実行せずにステップＳ１０４の処理へ移行する。
【０１２３】
続いて、サーバノード１１０からモジュールを受信した場合（ステップＳ１０４肯定）には、センサノード２１０は、サーバノード１１０から受信したモジュールを配備する（ステップＳ１０５）。なお、モジュールを受信しなかった場合（ステップＳ１０４否定）には、ステップＳ１０５の処理を実行せずにステップＳ１０６の処理へ移行する。
【０１２４】
そして、サーバノード１１０から送信先情報を受信した場合（ステップＳ１０６肯定）には、センサノード２１０は、受信した送信先情報を送信先情報記憶部２１５に格納する（ステップＳ１０７）。なお、送信先情報を受信しなかった場合（ステップＳ１０６否定）には、ステップＳ１０７の処理を実行せずにステップＳ１０８の処理へ移行する。
【０１２５】
そして、センサデバイスからセンサ情報を受信した場合（ステップＳ１０８肯定）には、センサノード２１０は、受信したセンサ情報を入力イベント型とするモジュールが配備されているか否かを判定する（ステップＳ１０９）。なお、センサ情報を受信しなかった場合（ステップＳ１０８否定）には、ステップＳ１０１の処理に戻る。
【０１２６】
モジュールが配備されている場合（ステップＳ１０９肯定）には、センサノード２１０は、モジュールを実行することによってイベントを処理する（ステップＳ１１０）。そして、センサノード２１０は、処理されたイベントを上位ノードへ送信する（ステップＳ１１１）。
【０１２７】
一方、モジュールが配備されていない場合（ステップＳ１０９否定）には、センサノード２１０は、センサデバイスから受信したセンサ情報に発生ノードＩＤや集約属性などを付加した上で上位ノードへ送信する（ステップＳ１１２）。
【０１２８】
このようにして、センサノード２１０は、上記のステップＳ１０１〜ステップＳ１１２までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。
【０１２９】
なお、ここでは、センサノード２１０の全体処理について説明したが、中継ノードであるＧＷノード３１０によって実行される全体処理も一部を除き同様である。すなわち、ＧＷノード３１０の場合には、上記のステップＳ１０８においてセンサ情報の代わりにイベントが受信される点が相違する点を除き、センサノード２１０と同様である。
【０１３０】
（２）モジュール配備処理
図１９及び図２０は、実施例１に係るモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、一例としては、センサネットワークのトポロジが変化した場合に処理が起動される。
【０１３１】
図１９に示すように、下位ノードから経路情報を受信した場合（ステップＳ２０１肯定）には、サーバノード１１０は、受信した経路情報を経路情報記憶部１１２Ａに格納する（ステップＳ２０２）。そして、サーバノード１１０は、経路情報記憶部１１２Ａを参照し、各ノードが同一の経路を経由するか否かに基づいて、各ノードの上位ノードを決定し、ノード間の接続情報をトポロジとして後述のトポロジ記憶部１１３Ａに格納する（ステップＳ２０３）。なお、下位ノードから経路情報を受信しない場合（ステップＳ２０１否定）には、図２０のステップＳ２０８の処理に移行する。
【０１３２】
続いて、トポロジに変化があった場合（ステップＳ２０４肯定）には、サーバノード１１０は、配備先情報記憶部１１７Ａに前回登録された配備先ノードＩＤを再評価する（ステップＳ２０５）。そして、配備先ノードＩＤが変更される場合（ステップＳ２０６肯定）には、サーバノード１１０は、新たなトポロジに基づいて、各ノードにそれぞれ対応する上位ノードＩＤを送信先情報として送信する（ステップＳ２０７）。このとき、サーバノード１１０は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信する。なお、トポロジに変化がなかった場合（ステップＳ２０４否定）には、図２０のステップＳ２０８の処理に移行する。また、配備先ノードＩＤが変更されない場合（ステップＳ２０６否定）にも、図２０のステップＳ２０８の処理に移行する。
【０１３３】
続いて、サーバノード１１０は、発生イベント情報記憶部１１６Ａが更新されるのを待機する（ステップＳ２０８）。そして、発生イベント情報記憶部１１６Ａが更新されると、全てのモジュールの配備が終了したか否かが判断される（ステップＳ２０９）。ここではいずれのモジュールについても処理が終了していないので（ステップＳ２０９否定）、ステップＳ２１０の処理へ移行する。
【０１３４】
続いて、サーバノード１１０は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部１１７Ａの該当カラムに格納する（ステップＳ２１０）。
【０１３５】
そして、サーバノード１１０は、ステップＳ２１０の処理を実行後に、下記に説明するステップＳ２１１の処理を実行する。すなわち、サーバノード１１０は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、サーバノード１１０は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
【０１３６】
その後、サーバノード１１０は、抽出結果として得られた発生ノードＩＤ及び発生ノードＩＤに対応付けられた発生イベント属性を配備先情報記憶部１１７Ａに書き込む（ステップＳ２１２）。
【０１３７】
このとき、発生ノードＩＤの数が「０」である場合（ステップＳ２１３肯定）には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、図１９のステップＳ２０１の処理に移行する。
【０１３８】
ここで、発生ノードＩＤの数が複数である場合（ステップＳ２１４肯定）には、下記に説明するステップＳ２１５の処理を実行する。すなわち、サーバノード１１０は、トポロジ記憶部１１３Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０又はＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。そして、サーバノード１１０は、前述のように抽出したノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ２１６）。
【０１３９】
また、発生ノードＩＤの数が１つである場合（ステップＳ２１４否定）には、サーバノード１１０は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ２１６）。
【０１４０】
続いて、サーバノード１１０は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信し（ステップＳ２１７）、図１９のステップＳ２０１の処理に戻る。
【０１４１】
その後、サーバノード１１０は、全てのモジュールの配備が終了するまで（ステップＳ２０９否定）、上記のステップＳ２０１〜ステップＳ２１７までの処理を繰り返し実行する。そして、全てのモジュールの配備が終了すると（ステップＳ２０９肯定）、処理を終了する。
【０１４２】
［実施例１の効果］
上述してきたように、本実施例に係るサーバノード１１０は、ネットワークに接続された複数のノードから、ネットワークの経路に関連する経路情報を受信する。サーバノード１１０は、受信した経路情報に基づいて、複数のノード間の接続情報を生成する。サーバノード１１０は、生成した接続情報によって示されるノード間でイベントが送信される場合に、複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定する。サーバノード１１０は、ノードにモジュールを配備可能であれば、複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、ノードにモジュールを配備する。このため、サーバノード１１０は、ネットワーク経路の変化に応じてモジュールを適切に配備することができる。したがって、サーバノード１１０は、センサネットワークのトラフィックを抑制でき、さらに、サーバノード１１０に負荷が集中することも防止できる。
【実施例２】
【０１４３】
ところで、上記の実施例１では、センサネットワークに新たなノードが追加される場合にトポロジを構築し、できるだけ下位のノードにモジュールを配備する例について説明したが、本発明はセンサネットワークからノードが削除される場合にも適用可能である。そこで、本実施例では、センサネットワークからノードが削除される場合にトポロジを生成し、できるだけ下位のノードにモジュールを配備する方法について説明する。
【０１４４】
［サーバノードの構成］
図２１は、実施例２に係るサーバノード１２０の機能的構成を示すブロック図である。図２１に示すサーバノード１２０は、図２に示したサーバノード１１０に比べて、生存情報受信部１２１及び生存監視部１２２を有する点が相違する。なお、以下では、上記の実施例１と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
【０１４５】
生存情報受信部１２１は、例えば、センサノード２２０やＧＷノード３２０などの下位ノードから、送信元のノードが通信可能な状態にあることを示す生存情報を受信する処理部である。生存情報受信部１２１は、受信した生存情報を後述の生存監視部１２２に出力する。
【０１４６】
生存監視部１２２は、下位ノードが通信可能な状態にあるか否かを監視する処理部である。一例としては、生存監視部１２２は、図示しない内部メモリを有し、生存情報受信部１２１によって受信された生存情報の送信元ノードのノードＩＤごとに受信時刻を内部メモリに格納する。そして、生存監視部１２２は、生存情報が一定時間以上受信されない下位ノードがあるか否か監視し、生存情報が一定時間以上受信されない下位ノードがある場合に、当該下位ノードの経路情報を経路情報記憶部１１２Ａから削除する。なお、生存監視部１２２が下位ノードの生存を監視する方法は、上記の方法に限定されるものではなく、例えば、所定の間隔で受信される生存情報が受信されなくなった場合に、当該生存情報の送信元ノードの経路情報を削除することとしても良い。
【０１４７】
一態様としては、生存監視部１２２は、ＧＷ−Ｘからの生存情報が一定時間以上受信されない場合には、ＧＷ−Ｘから受信した経路情報を削除する。図１３に示した例では、生存監視部１２２は、１３行目の「ＧＷ−Ｘ」、「１」及び「１９２．１６８．１００．１」が対応付けられたデータから、１５行目の「ＧＷ−Ｘ」、「３」及び「１９２．１６８．１．１０」が対応付けられたデータまでを削除する。
【０１４８】
［センサノードの構成］
図２２は、実施例２に係るセンサノード２２０の機能的構成を示すブロック図である。図２２に示すセンサノード２２０は、図１６に示したセンサノード２１０に比べて、生存情報送信部２２１をさらに有する点が相違する。
【０１４９】
生存情報送信部２２１は、生存情報を送信する処理部である。一態様としては、生存情報送信部２２１は、所定のタイミングで、自ノードが通信可能な状態にあることを示す生存情報をサーバノード１２０に送信する。
【０１５０】
［ＧＷノードの構成］
図２３は、実施例２に係るＧＷノード３２０の機能的構成を示すブロック図である。図２３に示すＧＷノード３２０は、図１７に示したＧＷノード３１０に比べて、生存情報送信部３２１をさらに有する点が相違する。
【０１５１】
生存情報送信部３２１は、生存情報を送信する処理部である。一態様としては、生存情報送信部３２１は、所定のタイミングで、自ノードが通信可能な状態にあることを示す生存情報をサーバノード１２０に送信する。
【０１５２】
［処理の流れ］
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。なお、ここでは、センサノード２１０によって実行される（１）全体処理を説明した後に、サーバノード１２０によって実行される（２）モジュール配備処理を説明することとする。
【０１５３】
（１）全体処理
図２４は、実施例２に係るセンサノード２２０における全体処理の手順を示すフローチャートである。この全体処理は、センサノード２２０の電源がＯＮ状態である限り、繰り返し実行される。なお、図２４に示すセンサノード２２０における全体処理は、図１８に示したセンサノード２１０における全体処理に比べて、ステップＳ３０１の処理がさらに実行される点が異なる。
【０１５４】
図２４に示すように、センサノード２２０は、生存情報をサーバノード１２０に送信する（ステップＳ３０１）。続いて、センサノード２２０は、ネットワークの経路情報を取得する（ステップＳ１０１）。そして、センサノード２２０は、経路情報に変更があるか否かを判定する（ステップＳ１０２）。
【０１５５】
経路情報に変更があった場合（ステップＳ１０２肯定）には、センサノード２２０は、経路情報をサーバノード１２０に送信する（ステップＳ１０３）。なお、経路情報に変更がなかった場合（ステップＳ１０２否定）には、センサノード２２０は、ステップＳ１０３の処理を実行せずにステップＳ１０４の処理へ移行する。
【０１５６】
続いて、サーバノード１２０からモジュールを受信した場合（ステップＳ１０４肯定）には、センサノード２２０は、サーバノード１２０から受信したモジュールを配備する（ステップＳ１０５）。なお、モジュールを受信しなかった場合（ステップＳ１０４否定）には、ステップＳ１０５の処理を実行せずにステップＳ１０６の処理へ移行する。
【０１５７】
そして、サーバノード１２０から送信先情報を受信した場合（ステップＳ１０６肯定）には、センサノード２２０は、受信した送信先情報を送信先情報記憶部２１５に格納する（ステップＳ１０７）。なお、送信先情報を受信しなかった場合（ステップＳ１０６否定）には、ステップＳ１０７の処理を実行せずにステップＳ１０８の処理へ移行する。
【０１５８】
そして、センサデバイスからセンサ情報を受信した場合（ステップＳ１０８肯定）には、センサノード２２０は、受信したセンサ情報を入力イベント型とするモジュールが配備されているか否かを判定する（ステップＳ１０９）。なお、センサ情報を受信しなかった場合（ステップＳ１０８否定）には、ステップＳ３０１の処理に戻る。
【０１５９】
モジュールが配備されている場合（ステップＳ１０９肯定）には、センサノード２２０は、モジュールを実行することによってイベントを処理する（ステップＳ１１０）。そして、センサノード２２０は、処理されたイベントを上位ノードへ送信する（ステップＳ１１１）。
【０１６０】
一方、モジュールが配備されていない場合（ステップＳ１０９否定）には、センサノード２２０は、センサデバイスから受信したセンサ情報に発生ノードＩＤや集約属性などを付加した上で上位ノードへ送信する（ステップＳ１１２）。
【０１６１】
このようにして、センサノード２２０は、上記のステップＳ３０１〜ステップＳ１１２までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。
【０１６２】
なお、ここでは、センサノード２２０の全体処理について説明したが、中継ノードであるＧＷノード３２０によって実行される全体処理も一部を除き同様である。すなわち、ＧＷノード３２０の場合には、上記のステップＳ１０８においてセンサ情報の代わりにイベントが受信される点が相違する点を除き、センサノード２２０と同様である。
【０１６３】
（２）モジュール配備処理
図２５及び図２６は、実施例２に係るモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、一例としては、センサネットワークのトポロジが変化した場合に処理が起動される。なお、図２５及び図２６に示すサーバノード１２０におけるモジュール配備処理は、図１９及び図２０に示したサーバノード１１０におけるモジュール配備処理に比べて、ステップＳ４０１〜ステップＳ４０３の処理がさらに実行される点が異なる。
【０１６４】
図２５に示すように、サーバノード１２０は、センサノード２２０やＧＷノード３２０などの下位ノードから生存情報を受信する（ステップＳ４０１）。そして、生存情報が一定時間以上受信されない下位ノードがある場合（ステップＳ４０２肯定）には、サーバノード１２０は、当該下位ノードの経路情報を経路情報記憶部１１２Ａから削除する（ステップＳ４０３）。なお、サーバノード１２０は、生存情報が一定時間以上受信されない下位ノードがない場合（ステップＳ４０２否定）には、ステップＳ４０３の処理を実行せずにステップＳ２０１の処理へ移行する。
【０１６５】
続いて、下位ノードから経路情報を受信した場合（ステップＳ２０１肯定）には、サーバノード１２０は、受信した経路情報を経路情報記憶部１１２Ａに格納する（ステップＳ２０２）。そして、サーバノード１２０は、経路情報記憶部１１２Ａを参照し、各ノードが同一の経路を経由するか否かに基づいて、各ノードの上位ノードを決定し、ノード間の接続情報をトポロジとして後述のトポロジ記憶部１１３Ａに格納する（ステップＳ２０３）。なお、下位ノードから経路情報を受信しない場合（ステップＳ２０１否定）には、図２６のステップＳ２０８の処理に移行する。
【０１６６】
続いて、トポロジに変化があった場合（ステップＳ２０４肯定）には、サーバノード１２０は、配備先情報記憶部１１７Ａに前回登録された配備先ノードＩＤを再評価する（ステップＳ２０５）。そして、配備先ノードＩＤが変更される場合（ステップＳ２０６肯定）には、サーバノード１２０は、新たなトポロジに基づいて、各ノードにそれぞれ対応する上位ノードＩＤを送信先情報として送信する（ステップＳ２０７）。このとき、サーバノード１２０は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信する。なお、トポロジに変化がなかった場合（ステップＳ２０４否定）には、図２６のステップＳ２０８の処理に移行する。また、配備先ノードＩＤが変更されない場合（ステップＳ２０６否定）にも、図２６のステップＳ２０８の処理に移行する。
【０１６７】
続いて、サーバノード１２０は、発生イベント情報記憶部１１６Ａが更新されるのを待機する（ステップＳ２０８）。そして、発生イベント情報記憶部１１６Ａが更新されると、全てのモジュールの配備が終了したか否かが判断される（ステップＳ２０９）。ここではいずれのモジュールについても処理が終了していないので（ステップＳ２０９否定）、ステップＳ２１０の処理へ移行する。
【０１６８】
続いて、サーバノード１２０は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部１１７Ａの該当カラムに格納する（ステップＳ２１０）。
【０１６９】
そして、サーバノード１２０は、ステップＳ２１０の処理を実行後に、下記に説明するステップＳ２１１の処理を実行する。すなわち、サーバノード１２０は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、サーバノード１２０は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
【０１７０】
その後、サーバノード１２０は、抽出結果として得られた発生ノードＩＤ及び発生ノードＩＤに対応付けられた発生イベント属性を配備先情報記憶部１１７Ａに書き込む（ステップＳ２１２）。
【０１７１】
このとき、発生ノードＩＤの数が「０」である場合（ステップＳ２１３肯定）には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、図２５のステップＳ４０１の処理に移行する。
【０１７２】
ここで、発生ノードＩＤの数が複数である場合（ステップＳ２１４肯定）には、下記に説明するステップＳ２１５の処理を実行する。すなわち、サーバノード１２０は、トポロジ記憶部１１３Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０又はＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。そして、サーバノード１２０は、前述のように抽出したノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ２１６）。
【０１７３】
また、発生ノードＩＤの数が１つである場合（ステップＳ２１４否定）には、サーバノード１２０は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ２１６）。
【０１７４】
続いて、サーバノード１２０は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信し（ステップＳ２１７）、図２５のステップＳ４０１の処理に戻る。
【０１７５】
その後、サーバノード１２０は、全てのモジュールの配備が終了するまで（ステップＳ２０９否定）、上記のステップＳ４０１〜ステップＳ２１７までの処理を繰り返し実行する。そして、全てのモジュールの配備が終了すると（ステップＳ２０９肯定）、処理を終了する。
【０１７６】
［実施例２の効果］
上述してきたように、本実施例に係るサーバノード１２０は、ネットワークに接続された複数のノードのそれぞれが通信可能な状態にあるか否かを監視する。そして、サーバノード１２０は、いずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する。そして、サーバノード１２０は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成する。このため、サーバノード１２０は、センサネットワークからノードが削除される場合にも、下位側のノードにモジュールを適切に配備することができる。
【実施例３】
【０１７７】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。
【０１７８】
上記の実施例では、あるＬＡＮで割り当てられたＩＰアドレスを経路情報として用いる場合を説明したが、本発明はこれに限定されるものではない。例えば、ＷＡＮ（Wide  Area  Network）側のＩＰアドレスやＭＡＣ（Media  Access  Control）アドレスなど、ルータ１０やホストを識別するために割り当てられた複数のアドレスを組み合わせて用いることもできる。このような場合には、例えば、複数のアドレスの組み合わせが経路情報として経路情報記憶部１１２Ａに格納されることとなる。
【０１７９】
図２７は、経路情報記憶部に記憶される情報の構成例を示す図である。図２７に示す例では、経路情報記憶部１１２Ａは、送信元ノードＩＤ、ｈｏｐ数、ＩＰアドレス及びＷＡＮ側ＩＰアドレスが対応付けられたデータを記憶する。一例としては、このＷＡＮ側ＩＰアドレスは、下位ノードがＵＰｎＰ（Universal  Plug  and  Play）プロトコル等を用いて上位ノードを自動認識することによって検出される。また、他の例としては、トポロジを生成するために、トポロジ生成部１１３によって参照される。
【０１８０】
一態様としては、ＩＰアドレス及びＷＡＮ側ＩＰアドレスの組み合わせを経路情報として用いることで、トポロジ生成部１１３によってトポロジが生成される。図２７に示す例では、「温度センサＸ」の上位ノードになり得るノードとしては、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｘ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１９２．１６８．１００．１」及びＷＡＮ側ＩＰアドレス「１．１．１０．２」は、「温度センサＸ」のｈｏｐ数「１」に対応付けられたＩＰアドレス及びＷＡＮ側ＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１００．１」及びＷＡＮ側ＩＰアドレス「１．１．１０．２」を、「温度センサＸ」及び「ＧＷ−Ｘ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「ＧＷ−Ｚ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１０．１」は、「温度センサＸ」のｈｏｐ数「２」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１０．１」を、「温度センサＸ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１．１０」は、「温度センサＸ」のｈｏｐ数「３」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１．１０」を、「温度センサＸ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【０１８１】
このように、「温度センサＸ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」の３つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｘ」は、「温度センサＸ」のｈｏｐ数「１」に対応付けられており、「ＧＷ−Ｚ」は、「温度センサＸ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「温度センサＸ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「温度センサＸ」の上位ノードとして「ＧＷ−Ｘ」が特定される。
【０１８２】
また、図２７に示す例では、「湿度センサＸ」の上位ノードになり得るノードとしては、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｘ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１９２．１６８．１００．１」及びＷＡＮ側ＩＰアドレス「１．１．１０．２」は、「湿度センサＸ」のｈｏｐ数「１」に対応付けられたＩＰアドレス及びＷＡＮ側ＩＰアドレスと一致する。このため、ＩＰアドレス「１９２．１６８．１００．１」及びＷＡＮ側ＩＰアドレス「１．１．１０．２」を、「湿度センサＸ」及び「ＧＷ−Ｘ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「ＧＷ−Ｚ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１０．１」は、「湿度センサＸ」のｈｏｐ数「２」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１０．１」を、「湿度センサＸ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１．１０」は、「湿度センサＸ」のｈｏｐ数「３」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１．１０」を、「湿度センサＸ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【０１８３】
このように、「湿度センサＸ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｘ」、「ＧＷ−Ｚ」及び「クラウド」の３つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｘ」は、「湿度センサＸ」のｈｏｐ数「１」に対応付けられており、「ＧＷ−Ｚ」は、「湿度センサＸ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「湿度センサＸ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「湿度センサＸ」の上位ノードとして「ＧＷ−Ｘ」が特定される。
【０１８４】
また、図２７に示す例では、「温度センサＹ」の上位ノードになり得るノードとしては、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｚ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１０．１」は、「温度センサＹ」のｈｏｐ数「２」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１０．１」を、「温度センサＹ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１．１０」は、「温度センサＹ」のｈｏｐ数「３」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１．１０」を、「温度センサＹ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【０１８５】
このように、「温度センサＹ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｚ」及び「クラウド」の２つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｚ」は、「温度センサＸ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「温度センサＹ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「温度センサＹ」の上位ノードとして「ＧＷ−Ｚ」が特定される。
【０１８６】
また、図２７に示す例では、「湿度センサＹ」の上位ノードになり得るノードとしては、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｚ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１０．１」は、「湿度センサＹ」のｈｏｐ数「２」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１０．１」を、「湿度センサＹ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１．１０」は、「湿度センサＹ」のｈｏｐ数「３」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１．１０」を、「湿度センサＹ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【０１８７】
このように、「湿度センサＹ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｚ」及び「クラウド」の２つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｚ」は、「湿度センサＸ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「湿度センサＹ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「湿度センサＹ」の上位ノードとして「ＧＷ−Ｚ」が特定される。
【０１８８】
また、図２７に示す例では、「ＧＷ−Ｘ」の上位ノードになり得るノードとしては、「ＧＷ−Ｚ」及び「クラウド」が挙げられる。このうち、「ＧＷ−Ｚ」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１０．１」は、「ＧＷ−Ｘ」のｈｏｐ数「２」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１０．１」を、「ＧＷ−Ｘ」及び「ＧＷ−Ｚ」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。また、「クラウド」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１．１０」は、「ＧＷ−Ｘ」のｈｏｐ数「３」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１．１０」を、「ＧＷ−Ｘ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。
【０１８９】
このように、「ＧＷ−Ｘ」と同一の経路を経由する上位ノードとして、「ＧＷ−Ｚ」及び「クラウド」の２つが特定される場合には、これら上位ノードのうち最も下位側で同一の経路を経由する上位ノードが特定される。この場合、「ＧＷ−Ｚ」は、「ＧＷ−Ｘ」のｈｏｐ数「２」に対応付けられており、「クラウド」は、「ＧＷ−Ｘ」のｈｏｐ数「３」に対応付けられている。よって、下位ノード「ＧＷ−Ｘ」の上位ノードとして「ＧＷ−Ｚ」が特定される。
【０１９０】
また、図２７に示す例では、「ＧＷ−Ｚ」の上位ノードになり得るノードとしては、「クラウド」が挙げられる。この「クラウド」のｈｏｐ数「１」に対応付けられたＩＰアドレス「１．１．１．１０」は、「ＧＷ−Ｚ」のｈｏｐ数「２」に対応付けられたＩＰアドレスと一致する。このため、ＩＰアドレス「１．１．１．１０」を、「ＧＷ−Ｚ」及び「クラウド」が共通して経由するルータ１０又はホストのＩＰアドレスとして特定する。よって、下位ノード「ＧＷ−Ｚ」の上位ノードとして「クラウド」が特定される。
【０１９１】
このように、開示の技術は、ルータ１０やホストを識別するために割り当てられた複数のアドレスを組み合わせて用いることができる。これによれば、例えば、ＮＡＴ（Network  Address  Translation）を利用したネットワークのように、同一のプライベートＩＰアドレスが複数のネットワークで使用される場合においても、開示の技術を適用することができる。
【０１９２】
また、上記の実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１９３】
また、図２，２１に示したサーバノード１１０，１２０の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、サーバノード１１０，１２０の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１９４】
［プログラム］
図２８は、イベント収集プログラムを実行するコンピュータの一例を示す図である。図２８に示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからデータの入力を受け付ける入力装置４０２と、モニタ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る媒体読み取り装置４０４と、他の装置と接続するためのインターフェース装置４０５と、他の装置と無線により接続するための無線通信装置４０６とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）３０７と、ハードディスク装置４０８とを有する。また、各装置４０１〜４０８は、バス４０９に接続される。
【０１９５】
ハードディスク装置４０８には、上記の図２，２１に示した経路情報受信部１１２、トポロジ生成部１１３、配備先決定部１１７、送信先情報送信部１１８及びモジュール送信部１１９の各処理部と同様の機能を有するイベント収集プログラムが記憶される。また、ハードディスク装置４０８には、イベント収集プログラムを実現するための各種データが記憶される。
【０１９６】
ＣＰＵ４０１は、ハードディスク装置４０８に記憶された各プログラムを読み出して、ＲＡＭ４０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを上記の図２，２１に示した経路情報受信部１１２、トポロジ生成部１１３、配備先決定部１１７、送信先情報送信部１１８及びモジュール送信部１１９として機能させることができる。
【０１９７】
なお、上記のイベント収集プログラムは、必ずしもハードディスク装置４０８に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ４００が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ４００がこれらからプログラムを読み出して実行するようにしても良い。
【０１９８】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１９９】
（付記１）コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行することを特徴とするイベント収集方法。
【０２００】
（付記２）前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行し、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする付記１に記載のイベント収集方法。
【０２０１】
（付記３）コンピュータに、
ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行させることを特徴とするイベント収集プログラム。
【０２０２】
（付記４）前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行させ、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする付記３に記載のイベント収集プログラム。
【０２０３】
（付記５）ネットワークに接続された複数のノードから、当該ネットワークの経路に関連する経路情報を受信し、
受信した経路情報に基づいて、前記複数のノード間の接続情報を生成し、
生成した接続情報によって示されるノード間でイベントが送信される場合に、前記複数のノードのうち一又は複数のノードに、イベントを処理するモジュールを配備可能か否か判定し、
前記ノードに前記モジュールを配備可能であれば、前記複数のノードのそれぞれについて設定されたイベントの送信先を、生成した接続情報によって示されるノードに変更するとともに、当該ノードに当該モジュールを配備する
各処理を実行することを特徴とする情報処理装置。
【０２０４】
（付記６）前記複数のノードのそれぞれが通信可能な状態にあるか否かを監視し、
前記複数のノードのうちいずれかのノードが通信不能な状態になった場合に、通信不能な状態になったノードから受信された経路情報を削除する処理をさらに実行させ、
前記生成する処理は、通信不能な状態になったノードから受信された経路情報が削除された経路情報に基づいて、前記複数のノード間の接続情報を生成することを特徴とする付記５に記載の情報処理装置。
【符号の説明】
【０２０５】
１１０，１２０      サーバノード
１１１      モジュール登録部
１１１Ａ    モジュール記憶部
１１１Ｂ    モジュール定義記憶部
１１２      経路情報受信部
１１２Ａ    経路情報記憶部
１１３      トポロジ生成部
１１３Ａ    トポロジ記憶部
１１４      イベント受信部
１１４Ａ    イベント記憶部
１１５      モジュール実行部
１１６      発生イベント登録部
１１６Ａ    発生イベント情報記憶部
１１７      配備先決定部
１１７Ａ    配備先情報記憶部
１１８      送信先情報送信部
１１９      モジュール送信部
１２１      生存情報受信部
１２２      生存監視部
４００      コンピュータ
４０１      ＣＰＵ
４０２      入力装置
４０３      モニタ
４０４      媒体読み取り装置
４０５      インターフェース装置
４０６      無線通信装置
４０７      ＲＡＭ
４０８      ハードディスク装置
４０９      バス
【図１】
0005927983.tif 000002
【図２】
0005927983.tif 000003
【図３】
0005927983.tif 000004
【図４】
0005927983.tif 000005
【図５】
0005927983.tif 000006
【図６】
0005927983.tif 000007
【図７】
0005927983.tif 000008
【図８】
0005927983.tif 000009
【図９】
0005927983.tif 000010
【図１０】
0005927983.tif 000011
【図１１】
0005927983.tif 000012
【図１２】
0005927983.tif 000013
【図１３】
0005927983.tif 000014
【図１４】
0005927983.tif 000015
【図１５】
0005927983.tif 000016
【図１６】
0005927983.tif 000017
【図１７】
0005927983.tif 000018
【図１８】
0005927983.tif 000019
【図１９】
0005927983.tif 000020
【図２０】
0005927983.tif 000021
【図２１】
0005927983.tif 000022
【図２２】
0005927983.tif 000023
【図２３】
0005927983.tif 000024
【図２４】
0005927983.tif 000025
【図２５】
0005927983.tif 000026
【図２６】
0005927983.tif 000027
【図２７】
0005927983.tif 000028
【図２８】
0005927983.tif 000029