(57)【要約】【課題】イベントの収集を行うためのモジュールの分散配備を行う技術に関し、分散配備処理の効率化を図る。【解決手段】サーバノード１１０は、センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークからイベントを収集するとともに、ノードでのイベントの発生状況を収集し、イベント発生状況に応じてイベントを処理するモジュールの配備先のノードを決定し、配備先のノードにモジュールを分散配備する。イベント削減効果情報受信部１２０およびイベント削減効果情報記憶部１２０Ａは、下位ノードに対してモジュールの分散配備を制御した場合におけるノードでのイベント削減効果を収集する。発生イベント情報トラフィック記憶部１１９は、ノードからのイベントの収集コストを算出する。発生イベント情報送信間隔決定部１２１は、イベント削減効果と、イベントの収集コストに応じて、ノードにおける発生イベントに関する情報の送信間隔を制御する。【選択図】図２
2015099981.tif 000002
【特許請求の範囲】
【請求項１】
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備する装置において、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を収集するトラフィック削減量収集部と、
前記ノードからの前記イベントの収集コストを算出するイベント収集コスト算出部と、
前記トラフィック削減量収集部が収集した前記トラフィック削減量と、前記イベント収集コスト算出部が算出した前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御するイベント発生状況送信間隔制御部と、
を備えることを特徴とする分散配備装置。
【請求項２】
前記ノードは、前記モジュールの分散配備を制御された場合における前記ノードでのトラフィック削減量を算出して送信し、
前記トラフィック削減量収集部は、前記ノードから、前記トラフィック削減量を受信して記憶する、
ことを特徴とする請求項１に記載の分散配備装置。
【請求項３】
前記イベント収集コスト算出部は、前記ノードから前記分散配備装置に収集される前記イベントのトラフィックを算出して記憶する、
ことを特徴とする請求項１または２のいずれかに記載の分散配備装置。
【請求項４】
前記モジュールの分散配備に伴うインスタンスの移動コストを算出するインスタンス移動コスト算出部をさらに備え、
前記イベント情報送信間隔制御部は、前記トラフィック削減量および前記収集コストに加えて、前記インスタンス移動コスト算出部が算出する前記インスタンスの移動コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御する、
ことを特徴とする請求項１ないし３のいずれかに記載の分散配備装置。
【請求項５】
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードがセンサネットワークに接続され、前記センサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備する分散配備装置が前記センサネットワークに接続されるシステムであって、
前記分散配備装置が、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を前記ノードから収集し、
前記ノードからの前記イベントの収集コストを算出し、
前記トラフィック削減量と、前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御する、
ことを特徴とする分散配備システム。
【請求項６】
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備するコンピュータに、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を収集するトラフィック削減量収集ステップと、
前記ノードからの前記イベントの収集コストを算出するイベント収集コスト算出ステップと、
前記トラフィック削減量収集ステップが収集した前記トラフィック削減量と、前記イベント収集コスト算出ステップが算出した前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御するイベント発生状況送信間隔制御ステップと、
を実行させるための分散配備プログラム。
【請求項７】
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備する方法において、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を収集し、
前記ノードからの前記イベントの収集コストを算出し、
前記トラフィック削減量と、前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御する、
ことを特徴とする分散配備方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベントの収集を行うためのモジュールの分散配備を行う分散配備装置、システム、プログラム、および方法に関する。
【背景技術】
【０００２】
センサノードによってセンシングされたセンシングデータをイベントとして採取するセンサネットワークが知られている。かかるセンサネットワークを介してサーバノードに採取されたイベントに応じて各種のサービス、例えばアラートの発信や機器の制御などが提供される。
【０００３】
このように、センサノードからのイベントをサーバノードに収集させる場合には、全てのイベントがサーバノードに集中して通知されることになる。このため、サーバノードの負荷が増大するとともに、ネットワークのトラフィックの増加に伴ってネットワーク帯域も逼迫する。
【０００４】
かかるサーバノードの負荷とネットワークトラフィックとを抑制する技術として、次のような従来技術が知られている（例えば特許文献１）。アクチュエータ、センサが接続されたネットワークノードが複数存在する分散処理環境において、次のような管理ノードを備える。この管理ノードは、メモリ中のテーブルに蓄積された利害得失判定要素に基づき、アクチュエータへのフィードバック制御の際のネットワーク遅延を最小とすることが可能な、各種のアプリケーションのネットワークノードへの配置制御を実行する。
【０００５】
また、次のような従来技術も知られている（例えば特許文献２）。処理実行側の装置において、到着要求管理部が通信処理部に到着する要求データを監視している。到着要求管理部は、処理待ちの状態にある要求が予め設定した個数以上存在することを認識すると、他サーバ状態管理部が蓄積している情報を元に他の利用可能かつ最適な処理実行側装置を決定し、そこに対して要求を転送する。これにより、処理実行側の装置を動的かつ自動的に決定し、各処理実行側の装置の状態や負荷の状況を反映する形で、最適な装置で処理を実行させることを可能とし、システム全体の性能を高める。
【０００６】
これらの従来技術は、トラフィックの削減効果や処理装置の負荷に基づいて分散配備（分散処理）を実行するものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−２０４３０号広報
【特許文献２】特開平６−１９５３１７号広報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、イベントログを評価する時間間隔の時間内にイベント発生状況が変化する（例えばイベントが発生するノードが変化する）と、同じイベントが同時期に複数のノードから発生している状態になり、処理をクラウドでしか実行できないケースがある。このようなケースに対して、単純にトラフィックの削減効果や処理装置の負荷に基づいて分散配備等を行う上述の従来技術では、効率のよい分散配備を行うことはできないという問題点を有していた。
【０００９】
一方、上述のケースを回避するために、上述の従来技術で、イベントログを評価する時間間隔を短く設定することが考えられる。しかし、この対処だけでは、イベント発生状況が変化しない（例えばイベントが発生するノードが変化しない）ようなケースでは、イベントログの収集コストだけが増加してしまうという問題点を有していた。
【００１０】
そこで、本発明の１つの側面では、分散配備処理の効率化を図ることを目的とする。
【課題を解決するための手段】
【００１１】
態様の一例では、センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークからイベントを収集するとともに、ノードでのイベントの発生状況を収集し、イベント発生状況に応じてイベントを処理するモジュールの配備先のノードを決定し、配備先のノードにモジュールを分散配備する装置において、ノードに対してモジュールの分散配備を制御した場合におけるノードでのトラフィック削減量を収集するトラフィック削減量収集部と、ノードからのイベントの収集コストを算出するイベント収集コスト算出部と、トラフィック削減量収集部が収集したトラフィック削減量と、イベント収集コスト算出部が算出した収集コストに応じて、ノードにおけるイベント発生状況に関する情報の送信間隔を制御するイベント情報送信間隔制御部と、を備える。
【発明の効果】
【００１２】
分散配備処理の効率化を図ることが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るセンサネットワークシステムのシステム構成を示す図である。
【図２】本実施形態に係るサーバノードのブロック図である。
【図３】モジュール記憶部に記憶される情報の構成例を示す図である。
【図４】モジュール定義記憶部に記憶される情報の構成例を示す図である。
【図５】トポロジ記憶部に記憶される情報の構成例を示す図である。
【図６】イベント記憶部に記憶される情報の構成例を示す図である。
【図７】発生イベント情報記憶部に記憶される情報の構成例を示す図である。
【図８】配備先情報記憶部に記憶される情報の構成例を示す図である。
【図９】図８に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１０】図１に示したセンサネットワークにおけるトポロジ変更の一例を示す図である。
【図１１】図５に示したトポロジ記憶部からのトポロジの遷移を示す図である。
【図１２】発生イベント情報トラフィック記憶部に記憶される情報の構成例を示す図である。
【図１３】イベント削減効果情報記憶部に記憶される情報の構成例を示す図である。
【図１４】本実施形態に係るセンサノードのブロック図である。
【図１５】本実施形態に係るＧＷノードのブロック図である。
【図１６】本実施形態に係るセンサノードにおける全体処理の手順を示すフローチャートである。
【図１７Ａ】本実施形態に係るトポロジ変更に基づくモジュール配備処理の手順を示すフローチャートである。
【図１７Ｂ】本実施形態に係る未配備モジュールの配備処理の手順を示すフローチャートである。
【図１８】本実施形態に係る発生イベント情報送信間隔決定処理の手順を示すフローチャートである。
【図１９】発生イベント情報送信間隔決定処理とともに実行されるモジュール配備処理の手順を示すフローチャートである。
【図２０】発生イベント情報記憶部に記憶される情報の送信間隔制御による遷移例（２分間隔）を示す図である。
【図２１】発生イベント情報トラフィック記憶部に記憶される情報の送信間隔制御による遷移例（２分間隔）を示す図である。
【図２２】発生イベント情報記憶部に記憶される情報の送信間隔制御による遷移例（１０分間隔）を示す図である。
【図２３】発生イベント情報トラフィック記憶部に記憶される情報の送信間隔制御による遷移例（１０分間隔）を示す図である。
【図２４】発生イベント情報記憶部に記憶される情報の送信間隔制御による遷移例（１１分間隔）を示す図である。
【図２５】イベント削減効果情報記憶部に記憶される情報の送信間隔制御による遷移例（１１分間隔）を示す図である。
【図２６】発生イベント情報トラフィック記憶部に記憶される情報の送信間隔制御による遷移例（１１分間隔）を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するゲートウェイ装置、分散配備システムイベント収集方法および情報処理装置の実施形態を図面に基づいて詳細に説明する。なお、この実施形態は開示の技術を限定するものではない。そして、各実施形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１５】
まず、本実施形態に係るセンサネットワークシステムのシステム構成について説明する。図１は、本実施形態に係るセンサネットワークシステムのシステム構成を示す図である。図１に示すセンサネットワークシステム１は、センサノード２１０によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
【００１６】
図１に示すように、センサネットワークシステム１には、サーバノード１１０と、センサノード２１０Ｘおよび２１０Ｙが収容される。この図１の例では、センサノード２１０Ｘおよびセンサノード２１０Ｙからサーバノード１１０へイベントデータが収集される場合を想定する。なお、以下では、センサノード２１０Ｘおよび２１０Ｙを区別なく総称する場合に「センサノード２１０」と記載する場合がある。
【００１７】
これらセンサノード２１０とサーバノード１１０との間は、ネットワーク５を介して通信可能に接続される。かかるネットワーク５の一例としては、有線または無線を問わず、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの通信網が挙げられる。なお、図１の例では、センサノード２１０を３つ収容する場合を例示したが、少なくとも複数のセンサノードが収容されていればよく、任意の数のセンサノードを収容する場合に適用することができる。
【００１８】
このうち、センサノード２１０は、センサ付きの通信端末である。かかるセンサノード２１０は例えば、家庭用電源タップコンセント、パーソナルコンピュータや周辺機器、ＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）機器、携帯電話機やＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙｐｈｏｎｅ  Ｓｙｓｔｅｍ）等の携帯端末、家電製品などの各種の機器である。また、センサノード２１０に搭載されるセンサは例えば、電力量を計測する電力センサのほか、温度を計測する温度センサ、湿度を計測する湿度センサ、温度および湿度を計測する温湿度センサなどの環境センサである。なお、ここでは、センサノード２１０に搭載されるセンサの例として電力センサを例示する。このほか、センサノード２１０には、上記環境センサや、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）センサ、加速度センサ、ジャイロセンサなどの任意のセンサを搭載できる。
【００１９】
サーバノード１１０は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。サーバノード１１０は、センサノード２１０から受信したイベントを加工する加工処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
【００２０】
ここで、本実施形態に係るサーバノード１１０は、センサネットワークのトポロジを取得する。さらに、本実施形態に係るサーバノード１１０は、トポロジが変更された場合に、各ノードから当該ノードによって出力されるイベントの種別、当該ノードを含む複数のノードを集約する集約属性の属性名および属性値を取得する。さらに、本実施形態に係るサーバノード１１０は、モジュールが入力とする複数のイベントの種別のうち一部のイベントを出力するノードであり、かつ各ノード間でモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。さらに、本実施形態に係るサーバノード１１０は、複数のノードが抽出された場合に、センサネットワークのトポロジを参照して、各ノードが収容される上位ノードに当該モジュールを配備する。
【００２１】
このため、本実施形態に係るサーバノード１１０では、センサネットワークのトポロジが変化した場合でも、モジュールによって集約されるイベントが集合するノードのうちできるだけセンシングデータが採取される下位側のノードにモジュールを分散配備できる。したがって、本実施形態に係るサーバノード１１０によれば、センサネットワーク上のノードにモジュールを適切に配備できる結果、センサネットワークのトラフィックを抑制できる。さらに、本実施形態に係るサーバノード１１０では、モジュールを分散配備するので、サーバノード１１０に負荷が集中することも防止できる。
【００２２】
なお、図１の例では、サーバノード１１０の下位ノードとしてセンサノード２１０を図示しているが、後述するように、センサノード２１０およびサーバノード１１０間の通信を中継するＧＷ（ゲートウェイ）ノード（図１３）がサーバノード１１０の下位ノードとして含まれる場合もある。以下では、ルートノードであるサーバノード１１０以外のセンサノード２１０や後述のＧＷノード３１０のことを「下位ノード」と総称する場合がある。
【００２３】
続いて、本実施形態に係るサーバノードの機能的構成について説明する。図２は、本実施形態に係るサーバノード１１０のブロック図である。なお、サーバノード１１０は、図２に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
【００２４】
図２に示すように、サーバノード１１０は、モジュール登録部１１１と、モジュール記憶部１１１Ａと、モジュール定義記憶部１１１Ｂと、トポロジ取得部１１２と、トポロジ記憶部１１２Ａとを有する。さらに、サーバノード１１０は、イベント受信部１１３と、イベント記憶部１１４と、モジュール実行部１１５と、発生イベント受信部１１６と、発生イベント情報記憶部１１６Ａとを有する。さらに、サーバノード１１０は、配備先情報記憶部１１７Ａと、配備先決定部１１７と、モジュール送信部１１８とを有する。加えて、サーバノード１１０は、発生イベント情報トラフィック記憶部１１９と、イベント削減効果情報受信部１２０と、イベント削減効果情報記憶部１２０Ａと、発生イベント情報送信間隔決定部１２１と、発生イベント情報送信間隔送信部１２２を有する。  モジュール登録部１１１は、モジュールを登録する処理部である。モジュール登録部１１１は例えば、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。この結果、モジュール登録部１１１は、サーバノード１１０にアップロードされたモジュールを後述のモジュール記憶部１１１Ａに登録する。さらに、モジュール登録部１１１は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部１１１Ｂに登録する。
【００２５】
モジュール記憶部１１１Ａは、モジュールを記憶する記憶部である。モジュール記憶部１１１Ａには例えば、モジュールがアップロードされた場合に、モジュール登録部１１１によってモジュールが登録される。具体的には、モジュール記憶部１１１Ａは、モジュール識別子とバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュール識別子」は、モジュールを識別するための識別子を指す。例えば、Ｃ言語でプログラミングされたモジュールには関数名を付与したり、Ｊａｖａ（登録商標）言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
【００２６】
図３は、モジュール記憶部１１１Ａに記憶される情報の構成例を示す図である。図３の例では、１つのモジュール識別子「電力量集計」とそのバイナリコードとが対応付けられた例を示している。このうち、「電力量集計」は、各センサノードでの電力量を集計するモジュールのクラス名を指す。このモジュール「電力量集計」が下位ノードに配備された場合には、下位ノードからサーバノード１１０に送信されるイベントが集約されることになる。
【００２７】
なお、図３の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード２１０等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
【００２８】
モジュール定義記憶部１１１Ｂは、モジュールに関する定義を記憶する記憶部である。このモジュール定義記憶部１１１Ｂには例えば、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部１１１によってモジュールの定義が登録される。モジュール定義記憶部１１１Ｂは例えば、モジュール識別子、入力イベント型、出力イベント型および集約属性名が対応付けられたデータを記憶する。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数のノードを集約する枠組みである集約属性の名称を指す。
【００２９】
図４は、モジュール定義記憶部１１１Ｂに記憶される情報の構成例を示す図である。図４に示すモジュール「電力量集計」の例では、電力イベントが入力されて電力量イベントが出力されることを示す。この「電力量集計」の場合には、１度の処理で同じ使用者に対応する電力イベントが複数回入力され得て、その使用者に対応する電力量イベントが１つ出力される。このため、集約属性名として、使用者を識別するための使用者ＩＤ（使用者識別子）が付与される。
【００３０】
トポロジ取得部１１２は、センサネットワークの接続形態、いわゆるトポロジを取得する処理部である。このトポロジ取得部１１２は例えば、センサネットワークに収容されたセンサノード２１０や後述のＧＷノード３１０を含む下位ノードから、当該下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を取得する。その上で、トポロジ取得部１１２は、下位ノードから取得したノード間の接続情報を後述のトポロジ記憶部１１２Ａに登録する。なお、以下の実施形態では例えば、下位ノードがＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）プロトコル等を用いて上位ノードを自動認識することによって検出した接続情報が取得される。このほか、サーバノード１１０が下位ノードとの接続状況を認識することにより検出した接続情報が取得されてもよい。
【００３１】
トポロジ記憶部１１２Ａは、センサネットワークのトポロジを記憶する記憶部である。トポロジ記憶部１１２Ａは例えば、ノード間の接続情報が取得された場合に、トポロジ取得部１１２によってノード間の接続情報が、トポロジとして登録される。トポロジ記憶部１１２Ａは例えば、下位ノードＩＤおよび上位ノードＩＤが対応付けられたデータを記憶する。ここで言う「下位ノードＩＤ」は、下位ノードを識別するための識別子を指す。また、「上位ノードＩＤ」は、下位ノードに接続される上位ノードを識別するための識別子を指す。
【００３２】
図５は、トポロジ記憶部１１２Ａに記憶される情報の構成例を示す図である。図５の例では、図１に示したセンサノード２１０Ｘが電力センサＸであり、センサノード２１０Ｙが電力センサＹである場合を想定している。図５に示す例では、電力センサＸおよび電力センサＹの上位ノードが全てクラウドであるサーバノード１１０であり、センサノード２１０とサーバノード１１０の間にＧＷノード３１０などの中継ノードが介在していないことを示す。
【００３３】
イベント受信部１１３は、イベントを受信する処理部である。イベント受信部１１３は例えば、センサノード２１０や後述のＧＷノード３１０などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部１１４に格納する。なお、イベント受信部１１３では、必ずしもセンサノード２１０によってセンシングされた未加工のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって加工処理が実行されることにより、加工済みのイベントが受信される場合もある。
【００３４】
イベント記憶部１１４は、イベントを記憶する記憶部である。このイベント記憶部１１４は、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。イベント記憶部１１４には例えば、下位ノードからイベントが受信された場合に、イベント受信部１１３によってイベントが登録される。また、イベント記憶部１１４には例えば、モジュールによってイベントが処理された場合に、後述のモジュール実行部１１５によって処理実行後のイベントが登録される。イベント記憶部１１４は例えば、イベント型、イベント発生時刻、およびイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード２１０によってセンシングされた時刻を指す。また、「イベント属性」とは、イベントの性質や由来を指し、例えば、イベントとして採取されるセンシングデータ又はそれが加工処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を想定して説明を行う。
【００３５】
図６は、イベント記憶部１１４に記憶される情報の構成例を示す図である。図６に示す１番目のレコードは、２０１３年８月１日の１２時００分００秒に電力使用者ＩＤ＝“Ｕｓｅｒ−Ａ”の電力値＝１００が計測されたというイベントを示す。また、図６に示す２番目のレコードは、２０１３年８月１日の１２時００分０１秒に使用者ＩＤ＝“Ｕｓｅｒ−Ａ”の電力値＝１０３が計測されたというイベントを示す。図６に示す３番目のレコードは、２０１３年８月１日の１２時００分０２秒に使用者ＩＤ＝“Ｕｓｅｒ−Ａ”の電力値＝１０２が計測されたというイベントを示す。
【００３６】
なお、センサノード２１０などの下位ノード上でセンシング等されたイベントは必ずしも全て転送される必要はなく、サービス提供用のアプリケーションが必要なもののみが転送されてよい。  このように、イベント記憶部１１４に記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図６の例では、センサノード２１０によってセンシングされた未加工のイベントを例示した。このほか、モジュールが下位ノードに配備された場合であって、サービス提供用のアプリケーションが必要ならば、モジュールによって加工処理がなされた新たなイベントも転送されて格納されてよい。
【００３７】
モジュール実行部１１５は、サーバノード１１０に配備されたモジュールの実行制御を行う処理部である。モジュール実行部１１５は例えば、イベント受信部１１３によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード１１０に配備されているか否かを判定する。モジュール実行部１１５は、モジュールがサーバノード１１０に配備されていると判定した場合には、当該モジュールを実行することによってイベントの加工処理を実行する。その後、モジュール実行部１１５は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント記憶部１１４に格納する。
【００３８】
上述の判定は例えば、次のようにして実行される。まず、モジュール実行部１１５は、図４に例示されるモジュール定義記憶部１１１Ｂを参照することにより、受信されたイベントの入力イベント型に対応するモジュール識別子を取得する。次に、モジュール実行部１１５は、後述する図８に例示される配備先情報記憶部１１７Ａを参照することにより、受信されたイベントの入力イベント型と上記モジュール識別子に対応する配備先ノードＩＤを取得する。そして、モジュール実行部１１５は、この配備先ノードＩＤが、サーバノード１１０に対応するノードＩＤであるか否かを判定することにより、受信されたイベントを入力イベント型とするモジュールがサーバノード１１０に配備されているか否かを判定する。
【００３９】
発生イベント受信部１１６は、センサノード２１０やＧＷノード３１０などの下位ノードで発生したイベントに関する情報である発生イベント情報を登録する処理部である。発生イベント受信部１１６は例えば、下位ノードから受信した発生イベント情報を発生イベント情報記憶部１１６Ａに登録する。発生イベント情報記憶部１１６Ａは例えば、発生イベント採取期間、発生ノードＩＤ、発生イベント型、および発生イベント集約属性が対応付けられたデータを記憶する。「発生イベント採取期間」は、下位ノードにおいて発生イベントが採取された期間を指す。「発生ノードＩＤ」は、発生ノードを識別するための識別子を指す。「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。「発生イベント集約属性」は、発生ノードで使用されたイベント収集時の集約属性を指す。
【００４０】
図７は、発生イベント情報記憶部１１６Ａに記憶される情報の構成例を示す図である。電力センサＸで、２０１３年８月１日１２時００分００秒から１２時０９分００秒まで１分おきに１分間ずつ、発生イベント型＝電力、発生イベント集約属性：使用者ＩＤ＝“Ｕｓｅｒ−Ａ”のイベントが発生したことが示されている。また、電力センサＹで、２０１３年８月１日１２時１０分００秒から１２時１９分００秒まで１分おきに１分間ずつ、発生イベント型＝電力、発生イベント集約属性：使用者ＩＤ＝“Ｕｓｅｒ−Ａ”のイベントが発生したことが示されている。
【００４１】
本実施形態では、後述するように、各センサノード２１０は、発生イベント情報送信間隔決定部１２１が決定し発生イベント情報送信間隔送信部１２２によって送信された発生イベント情報送信間隔で、発生イベント情報を送信する。従って、発生イベント情報記憶部１１６Ａに記憶される発生イベント情報の時間間隔も、可変となる。
【００４２】
配備先情報記憶部１１７Ａは、モジュールの配備先に関する情報を記憶する記憶部である。配備先情報記憶部１１７Ａは例えば、モジュール識別子、入力イベント型、集約属性名、発生イベント属性、発生ノードＩＤ、および配備先ノードＩＤが対応付けられたデータを記憶する。ここで言う「配備先ノードＩＤ」は、モジュールが配備されるセンサノード２１０、後述のＧＷノード３１０、またはサーバノード１１０を識別するための識別子を指す。
【００４３】
図８は、配備先情報記憶部１１７Ａに記憶される情報の構成例を示す図である。この図８の例では、センサネットワークのトポロジに変化が検出されて後述の配備先決定部１１７によるモジュールの配備先の決定が開始された段階のテーブル例を図示している。図８に示すように、全カラムのうちモジュール識別子、入力イベント型、および集約属性名が、モジュール定義記憶部１１１Ｂから複写された段階のテーブル例が図示されている。以降の配備先ノードＩＤを始めとする残りのカラムが埋められる遷移については、図９を用いて後述する。
【００４４】
配備先決定部１１７は、モジュールの配備先を決定する処理部である。配備先決定部１１７は例えば、トポロジ記憶部１１２Ａが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合、あるいは発生イベント情報記憶部１１６Ａが更新された場合に、以下に説明する処理を実行する。配備先決定部１１７は、図４に例示されるモジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうち、モジュール識別子、入力イベント型、および集約属性名のカラムデータを、図８に例示される配備先情報記憶部１１７Ａの該当カラムに書き込む。このとき、配備先情報記憶部１１７Ａは、図８に例示されるように、発生イベント属性、発生ノードＩＤ、および配備先ノードＩＤのカラムがブランクの状態となる。
【００４５】
配備先決定部１１７は、トポロジ記憶部１１２Ａに記憶されているトポロジが変化したタイミングで、または、後述する発生イベント情報送信間隔決定部１２１の動作中に発生イベント情報記憶部１１６Ａの内容が更新されるタイミングで、動作する。
【００４６】
配備先決定部１１７は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が配備先情報記憶部１１７Ａに記憶された未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。図７および図８の例において、例えば後述する発生イベント情報送信間隔決定部１２１の動作中に、発生イベント情報記憶部１１６Ａに図７の最初のレコードの発生イベント情報が登録されたタイミングで、配備先決定部１１７が動作する。配備先決定部１１７は、図８に例示される配備先情報記憶部１１７内のモジュール識別子が「電力量集計」である未配備のモジュールの入力イベント型「電力」に含まれる発生ノードＩＤ「電力センサＸ」を抽出する。
【００４７】
さらに、配備先決定部１１７は、発生イベント情報記憶部１１６Ａ上で、上記のように抽出した発生ノードＩＤを含むレコード群のうち、次のレコードを抽出する。配備先決定部１１７は、上記レコード群のうち、配備先情報記憶部１１７Ａに記憶された未配備のモジュールの集約属性名と同一の発生イベント集約属性に属する発生イベント集約属性の値であって、互いに同一の値を有するレコードを抽出する。図７および図８の例において、上記のように抽出した、発生ノードＩＤが例えば「電力センサＸ」を含むレコード群のうち、使用者ＩＤが“Ｕｓｅｒ−Ａ”であるレコードが抽出される。発生イベント情報記憶部１１６Ａに図７の最初のレコードの発生イベント情報が登録されたタイミングでは、レコードは最初の１つしか登録されていないため、その最初の１つのレコードが抽出される。
【００４８】
その後、配備先決定部１１７は、抽出結果として得られた発生ノードＩＤおよび発生ノードＩＤに対応付けられた発生イベント集約属性を、配備先情報記憶部１１７Ａの「発生ノードＩＤ」カラムと「発生イベント属性」カラムに書き込む。図７および図８の例において、上述のようにして最初の１つのレコードが抽出されたら、次のような書込みが実行される。そのレコードの発生ノードＩＤ「電力センサＸ」と発生イベント集約属性「使用者ＩＤ＝“Ｕｓｅｒ−Ａ”」が、図９（ａ）に例示されるように、配備先情報記憶部１１７Ａの「発生ノードＩＤ」カラムと「発生イベント属性」カラムに書き込まれる。
【００４９】
このとき、配備先決定部１１７は、発生ノードＩＤが配備先情報記憶部１１７Ａに複数登録された場合には、次のような処理を実行する。すなわち、配備先決定部１１７は、トポロジ記憶部１１２Ａに記憶された上位ノードＩＤのうち、次のような上位ノードＩＤを抽出する。配備先決定部１１７は、上記複数登録された各発生ノードＩＤに対応するセンサノード２１０または後述のＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側である上位ノードＩＤを抽出する。配備先決定部１１７は、このようにして抽出した上位ノードＩＤを、配備先情報記憶部１１７Ａ内の、上記各発生ノードＩＤが登録されている各レコードの、各配備先ノードＩＤのカラムに登録する。
【００５０】
また、配備先決定部１１７は、発生ノードＩＤが配備先情報記憶部１１７Ａに１つ登録された場合には、モジュールを配備するノードに選択の余地がない。このため、配備先決定部１１７は、先に抽出結果として得られた発生ノードＩＤを、配備先情報記憶部１１７Ａ内の、上記発生ノードＩＤが登録されているレコードの、配備先ノードＩＤのカラムに登録する。
【００５１】
このようにして配備先情報記憶部１１７Ａに配備先ノードＩＤが登録されると、モジュール送信部１１８が、モジュールの送信処理を実行する。モジュール送信部１１８は、センサノード２１０または後述のＧＷノード３１０などの下位ノードにモジュールを送信する処理部である。モジュール送信部１１８は、配備先情報記憶部１１７Ａに登録されているレコードのうち、配備先ノードＩＤが登録されたレコードのモジュール識別子に対応するモジュールの例えばバイナリコードを、モジュール記憶部１１１Ａから読み出す。例えば図９（ａ）に示されるようにレコードが登録されると、モジュール送信部１１８は、そのレコードのモジュール識別子「電力量集計」に対応するモジュールの例えばバイナリコードを、図３に例示されるモジュール記憶部１１１Ａから読み出す。そして、モジュール送信部１１８は、上記レコードの配備先ノードＩＤ「電力センサＸ」に対応するノードに向けて、その読み出したモジュールを送信する。
【００５２】
その後、配備先決定部１１７は、後述する発生イベント情報送信間隔決定部１２１の動作中に発生イベント情報記憶部１１６Ａの内容が更新されるタイミングで動作している場合には、次のような動作を実行する。配備先決定部１１７は、発生イベント情報記憶部１１６Ａが更新されるまで待機する。発生イベント情報記憶部１１６Ａが更新されると、配備先決定部１１７は、次の動作を実行する。配備先決定部１１７は、配備先情報記憶部１１７Ａから、入力イベント型と発生イベント属性がそれぞれ、更新された発生イベント情報記憶部１１６Ａのレコードの発生イベント型と発生イベント集約属性と同一のレコードを抽出する。そして、配備先決定部１１７は、配備先情報記憶部１１７Ａ上で抽出したそのレコードの発生ノードＩＤが、上記更新された発生イベント情報記憶部１１６Ａのレコードの発生ノードＩＤと異なる変化が発生したか否かを判定する。配備先決定部１１７は、変化が発生したと判定したら、発生ノードＩＤが変化した配備先情報記憶部１１７Ａのレコードを削除して、そのモジュールを未配備モジュールとする。その上で、配備先決定部１１７は、そのモジュールについて再度、上述のモジュール配備処理を実行する。
【００５３】
図７の例において、２０１３年８月１日  １２時００分００秒〜１２時０１分００秒の最初の発生イベント情報のレコードが登録された後、２０１３年８月１日  １２時０１分００秒〜１２時０２分００秒の次の発生イベント情報のレコードが登録されて発生イベント情報記憶部１１６Ａが更新された場合を考える。この場合、２つ目のレコードの発生ノードＩＤは、最初の１つ目のレコードの発生ノードＩＤ「電力センサＸ」と同じである。従って、この場合には、配備先決定部１１７は、図９（ａ）の配備先情報記憶部１１７Ａのレコードを削除はせずに、新たなモジュール配備処理は実行しない。以下、２０１３年８月１日  １２時０９分００秒〜１２時１０分００秒の発生イベント情報が登録されるところまでは、発生ノードＩＤが同じ「電力センサＸ」のままであるため、配備先決定部１１７は、新たなモジュール配備処理は実行しない。
【００５４】
続いて、２０１３年８月１日  １２時１０分００秒〜１２時１１分００秒の発生イベント情報が登録されると、発生ノードＩＤが「電力センサＹ」に変化する。この結果、配備先決定部１１７は、配備先情報記憶部１１７Ａから、入力イベント型と発生イベント属性がそれぞれ、更新された上記発生イベントのレコードの発生イベント型と発生イベント集約属性と同一のレコードを抽出する。具体的には、入力イベント型が「電力」で発生イベント属性が「使用者ＩＤ＝“Ｕｓｅｒ−Ａ”」である、図９（ａ）に示されるレコードが抽出される。そして、図９（ａ）のレコードの発生ノードＩＤ「電力センサＸ」は、上記更新された発生イベント情報のレコードの発生ノードＩＤ「電力センサＹ」と異なる変化が発生している。この結果、配備先決定部１１７は、発生ノードＩＤが変化した配備先情報記憶部１１７Ａ上の図９（ａ）のレコードを削除して、そのモジュールを未配備モジュールとする。その上で、配備先決定部１１７は、そのモジュールについて再度、上述のモジュール配備処理を実行する。この結果、発生ノードＩＤと配備先ノードＩＤが変化した図９（ｂ）に示される配備先情報が、配備先情報記憶部１１７Ａに新たに登録される。
【００５５】
このようにして配備先情報記憶部１１７Ａの配備先情報が更新されると、モジュール送信部１１８が送信動作を実行する。モジュール送信部１１８は、配備先情報記憶部１１７Ａに新たに配備先ノードＩＤが登録されたレコードのモジュール識別子「電力量集計」に対応するモジュールの例えばバイナリコードを、モジュール記憶部１１１Ａから読み出す。そして、モジュール送信部１１８は、上記レコードの配備先ノードＩＤ「電力センサＹ」に対応するノードに向けて、その読み出したモジュールを送信する。
【００５６】
一方、配備先決定部１１７は、トポロジの変更に対応して動作している場合には、モジュールの配備によって下位ノードから新たに取得される発生イベントが発生イベント情報記憶部１１６Ａに更新されるまで待機してから、未配備のモジュールがなくなるまでモジュールの配備を繰り返し実行する。
【００５７】
なお、発生ノードＩＤが配備先情報記憶部１１７Ａに１つも登録されなかった場合には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、配備先決定部１１７は、発生イベント情報記憶部１１６Ａが更新されるまで待機してからモジュールの配備を繰り返し実行する。
【００５８】
次に、図１０および図１１を用いて、トポロジ変更に基づくモジュール配備の具体例について説明する。図１０は、図１に示したセンサネットワークにおけるトポロジ変更の一例を示す図である。図１１は、図５に示したトポロジ記憶部１１２Ａからのトポロジの遷移を示す図である。
【００５９】
図１０に示すセンサネットワークシステム３は、図１に示したセンサネットワークシステム１と比較して、サーバノード１１０とセンサノード２１０Ｘとの間にＧＷノード３１０Ｘがさらに追加された点が異なる。さらに、センサネットワークシステム３は、サーバノード１１０とセンサノード２１０Ｙとの間にＧＷノード３１０Ｙがさらに追加された点が異なる。なお、以下では、例えば宅内Ｘに収容されているＧＷノード３１０Ｘがホームゲートウェイであり、例えば宅内Ｙに収容されているＧＷノード３１０Ｙがモバイルゲートウェイである場合を想定する。
【００６０】
センサノード２１０ＸとＧＷノード３１０Ｘとの間は、例えばホームネットワーク５Ｘを介して通信可能に接続される。また、センサノード２１０ＹとＧＷノード３１０Ｙとの間は、例えば無線ＬＡＮ５Ｙを介して通信可能に接続される。
【００６１】
このように、ＧＷノード３１０Ｘおよび３１０Ｙが追加された場合には、センサネットワークのトポロジが変化する。図１１の例で言えば、図５に示した例ではクラウドであるサーバノード１１０に直接接続されていた電力センサＸがホームＧＷ−Ｘを介してサーバノード１１０に接続される接続形態に変化している。さらに、図１１の例で言えば、図５に示した例ではクラウドであるサーバノード１１０に直接接続されていた電力センサＹがモバイルＧＷ−Ｙを介して接続される接続形態に変化している。なお、図１１の例では、図１０に示したＧＷノード３１０Ｘが宅内Ｘに収容されたホームＧＷ−Ｘであり、また、ＧＷノード３１０Ｙが宅内Ｙに収容されたモバイルＧＷ−Ｙである場合を想定している。
【００６２】
そして、図１１に示すように、センサネットワークのトポロジが変化した場合には、図９に示す配備先情報記憶部１１７Ａに記憶されていたモジュールの配備設定は破棄され、図８に示すモジュールの配備開始状態から改めてモジュールが再配備される。
【００６３】
図２の構成に戻り、発生イベント情報トラフィック記憶部１１９は、イベント収集コスト算出部を構成する。この発生イベント情報トラフィック記憶部１１９は、発生イベント情報トラフィック記憶部１１９は、発生イベント情報受信部１１６が、センサノード２１０（図１）から発生イベント情報を受信する際に発生するトラフィック量を記憶する。発生イベント情報トラフィック記憶部１１９は例えば、受信時刻と送信元ノードＩＤと受信データ量が対応付けられたデータを記憶する。
【００６４】
図１２は、発生イベント情報トラフィック記憶部１１９に記憶される情報の構成例を示す図である。各受信時刻毎に、電力センサＸや電力センサＹの送信元ノードＩＤから、それぞれ１００バイトずつの受信データ量が受信されていることが例示されている。
【００６５】
以上のように、発生イベント情報トラフィック記憶部１１９は、受信時刻毎および送信元ノードＩＤが示すノード毎の受信データ量、すなわち、発生イベントを収集するために必要な収集コストとしてのデメリットを表していることになる。
【００６６】
図２で、イベント削減効果情報受信部１２０およびイベント削減効果情報記憶部１２０Ａは、トラフィック削減量収集部を構成する。
【００６７】
イベント削減効果情報受信部１２０は、センサノード２１０（図１）から、そのセンサノード２１０にて処理することによるイベント削減効果を表す情報を受信する。
【００６８】
イベント削減効果情報記憶部１２０Ａは、イベント削減効果情報受信部１２０が受信したイベント削減効果情報を記憶する。イベント削減効果情報記憶部１２０Ａは例えば、処理期間、処理ノードＩＤ、処理モジュール識別子、入力イベントデータ量、および出力イベントデータ量が対応付けられたデータを記憶する。
【００６９】
図１３は、イベント削減効果情報記憶部１２０Ａに記憶される情報の構成例を示す図である。
【００７０】
例えば、最初の行のレコードは、２０１３年８月１日の１２時００分００秒〜１２時０１分００秒の処理期間では、電力センサＸにおいて、処理モジュール識別子が「なし」で処理モジュールが配備されていないことが示されている。そして、この１分間での電力センサＸにおける入力イベントデータ量が６０００バイトで、電力センサＸから出力される出力イベントデータ量も６０００バイトであることが示されている。すなわちこの時点では、電力センサＸは自身が有するセンサから入力した入力イベントを、特に集計等せずに、そのまま出力イベントとして出力していることが、示されている。
【００７１】
次に例えば、２行目のレコードは、２０１３年８月１日の１２時００分００秒〜１２時０１分００秒の処理期間では、電力センサＹにおいて、処理モジュール識別子が「なし」で処理モジュールが配備されていないことが示されている。そして、この１分間では、電力センサＹにおいては入力イベントおよび出力イベントともに発生していないことが、示されている。
【００７２】
さらに例えば、３行目のレコードは、２０１３年８月１日の１２時０１分００秒〜１２時０２分００秒の処理期間では、電力センサＸにおいて、処理モジュール識別子が「電力量集計」で処理モジュールが配備されたことが示されている。そして、この１分間では、電力センサＸにおいて、入力イベントデータ量６０００バイトに対して、「電力量集計」モジュールによって集計処理が実行された結果、電力センサＸから出力される出力イベントデータ量は、上記集計結果に対応する「電力量」イベントの１００バイトに集約されていることが示されている。
【００７３】
登録が進み、例えば、２０１３年８月１日の１２時１０分００秒〜１２時１１分００秒の処理期間で、電力センサＹにおいて、入力イベントデータ量６０００バイトが発生したことが示されている。このとき、処理モジュール識別子が「なし」で処理モジュールはまだ配備されていないことが示されている。そして、この１分間での電力センサＹにおける入力イベントデータ量６０００バイトに対して、電力センサＹから出力される出力イベントデータ量が６０００バイトであることが示されている。すなわちこの時点では、電力センサＹは自身が有するセンサから入力した入力イベントを、特に集計等せずに、そのまま出力イベントとして出力していることが、示されている。
【００７４】
上記行の１つ前の行のレコードは、２０１３年８月１日の１２時１０分００秒〜１２時１１分００秒の処理期間では、電力センサＸにおいて、入力イベントおよび出力イベントが発生しなくなった（０バイトになった）ことが示されている。これは例えば、電力センサＸを使用していた使用者が電力センサＹの使用に移動したような状態である。
【００７５】
さらに例えば、２０１３年８月１日の１２時１１分００秒〜１２時１２分００秒の処理期間で、電力センサＹにおいて、処理モジュール識別子が「電力量集計」で処理モジュールが配備されたことが示されている。そして、この１分間では、電力センサＹにおいて、入力イベントデータ量６０００バイトに対して、「電力量集計」モジュールによって集計処理が実行された結果、電力センサＹから出力される出力イベントデータ量は、上記集計結果に対応する「電力量」イベントの１００バイトに集約されていることが示されている。
【００７６】
以上のように、イベント削減効果情報記憶部１２０Ａは、処理期間毎および処理ノードＩＤに対応するノード毎に、入力イベントデータ量に対して出力イベントデータ量がどの程度削減されているかを示している。いわば、イベント削減効果情報記憶部１２０Ａは、処理期間毎およびノード毎のトラフィック削減効果によるメリットを表していることになる。
【００７７】
図２に戻り、発生イベント情報送信間隔決定部１２１および発生イベント情報送信間隔送信部１２２は、イベント情報送信間隔制御部を構成する。
【００７８】
発生イベント情報送信間隔決定部１２１は、センサノード２１０（図１）毎に、当該センサノード２１０が発生イベント情報を送信する時間間隔（送信間隔）を決定する。発生イベント情報送信間隔送信部１２２は、発生イベントの収集コスト（デメリット）を示す発生イベント情報トラフィック記憶部１１９と、トラフィック削減効果（メリット）を示すイベント削減効果情報記憶部１２０Ａに基づき、送信間隔を決定する。
【００７９】
発生イベント情報送信間隔送信部１２２は、発生イベント情報送信間隔決定部１２１が決定したセンサノード２１０毎の送信間隔を、当該センサノード２１０に送信する。
【００８０】
以上説明した図２のサーバノード１１０の構成において、モジュール登録部１１１、トポロジ取得部１１２、イベント受信部１１３、モジュール実行部１１５、発生イベント受信部１１６、配備先決定部１１７、モジュール送信部１１８、イベント削減効果情報受信部１２０、発生イベント情報送信間隔決定部１２１、および発生イベント情報送信間隔送信部１２２には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）が挙げられる。また、電子回路としては、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などが挙げられる。
【００８１】
また、上記のモジュール記憶部１１１Ａ、モジュール定義記憶部１１１Ｂ、トポロジ記憶部１１２Ａ、イベント記憶部１１４、発生イベント情報記憶部１１６Ａ、配備先情報記憶部１１７Ａ、発生イベント情報トラフィック記憶部１１９、およびイベント削減効果情報記憶部１２０Ａなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ（Ｖｉｄｅｏ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【００８２】
次に、本実施形態に係るセンサノードの機能的構成について説明する。図１４は、本実施形態に係るセンサノード２１０の構成を示すブロック図である。図１７に示すセンサノード２１０は、センサ情報受信部２１１と、モジュール受信部２１２と、モジュール実行部２１３と、イベント送信部２１４と、トポロジ検出部２１５と、トポロジ送信部２１６と、イベント削減効果情報送信部２１７と、発生イベント情報送信間隔受信部２１８と、発生イベント情報送信部２１９とを有する。
【００８３】
センサ情報受信部２１１は、センサノード２１０に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。センサ情報受信部２１１は例えば、センサノード２１０に電力センサが内蔵されている場合には、電力センサによって計測された電力を受信する。また、センサ情報受信部２１１は例えば、センサノード２１０に温度センサや湿度センサが内蔵されている場合には、温度センサや湿度センサによって計測された温度や湿度を受信する。なお、センサノード２１０に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部２１１が設けられる。
【００８４】
モジュール受信部２１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部２１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部２１３に出力される。
【００８５】
モジュール実行部２１３は、センサノード２１０に配備されたモジュールの実行制御を行う処理部である。モジュール実行部２１３は例えば、センサ情報受信部２１１によってセンサ情報が受信された場合に、受信されたセンサ情報を入力イベント型とするモジュールがセンサノード２１０に配備されているか否かを判定する。このとき、モジュール実行部２１３は、モジュールがセンサノード２１０に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。その後、モジュール実行部２１３は、モジュールによって加工処理が実行されたデータを新たな発生イベントとしてイベント送信部２１４へ出力する。なお、モジュールがセンサノード２１０に配備されていない場合には、センサ情報を加工処理せずにそのままイベント送信部２１４へ出力する。
【００８６】
イベント送信部２１４は、イベントを上位ノードに送信する処理部である。イベント送信部２１４は例えば、モジュール実行部２１３によって加工処理されたイベント、あるいはセンサ情報受信部２１１によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部２１４は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード２１０のノードＩＤ、自装置を含む複数のノードを集約する集約属性の属性名および属性値をセンサ情報に付加する。その上で、イベント送信部は、センサ情報とともに発生ノードのノードＩＤおよび集約属性を含むイベントを上位ノードに送信する。
【００８７】
ここで、上記の「集約属性」の属性名および属性値は、センサノード２１０の製造段階でデバイスドライバなどに組み込んでおくことができる。例えば、センサデバイスが電力センサである場合には、電力を使用する「使用者ＩＤ」などの集約属性をイベントに付加するようにデバイスドライバを構成しておく。その上で、センサノード２１０がサーバノード１１０との間で通信コネクションが確立された段階で、既にサービスに加入している他のセンサノード２１０に先だって付与されている使用者ＩＤの属性値をサーバノード１１０から自動的に取得することもできる。また、センサデバイスが温度センサ、湿度センサや温湿度センサである場合には、温度や湿度が計測される枠組みである「家ＩＤ」を始め、「部屋ＩＤ」や「階ＩＤ」などの集約属性をイベントに付加するようにデバイスドライバを構成しておく。その上で、センサノード２１０がサーバノード１１０との間で通信コネクションが確立された段階で、既にサービスに加入している他のセンサノード２１０に先だって付与されている家ＩＤの属性値をサーバノード１１０から自動的に取得することもできる。なお、サーバノード１１０にＸ家またはＹ家の間取り等が登録されている場合には、「家ＩＤ」の他、「部屋ＩＤ」や「階ＩＤ」などの集約属性の属性値をサーバノード１１０から自動的に取得することもできる。
【００８８】
トポロジ検出部２１５は、センサノード２１０がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。トポロジ検出部２１５は例えば、ＵＰｎＰプロトコル等を用いて、センサノード２１０と同一のローカルネットワーク内に存在するＧＷノード３１０を認識したり、サーバノード１１０からＧＷノード３１０の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード１１０とのネットワーク接続の確立は、サーバノード１１０のＵＲＬ等のアドレスを設定しておくことにより実現できる。
【００８９】
トポロジ送信部２１６は、トポロジ検出部２１５によって検出されたトポロジをサーバノード１１０に送信する処理部である。一態様としては、トポロジ送信部２１６は、センサノード２１０が接続されている上位ノードのノードＩＤをサーバノード１１０に送信する。
【００９０】
イベント削減効果情報送信部２１７は、入力イベントがモジュール実行部２１３で処理され処理結果の出力イベントが発生した場合に、入力イベントデータ量に対し出力イベントデータ量が削減される効果を表す情報を、サーバノード１１０に送信する。この情報は、サーバノード１１０において、図１３で例示したイベント削減効果情報記憶部１２０Ａに収集される。
【００９１】
発生イベント情報送信間隔受信部２１８は、サーバノード１１０から、自ノードのための発生イベント情報の送信間隔に関する情報を受信する。
【００９２】
発生イベント情報送信部２１９は、発生イベント情報送信間隔受信部２１８が受信した送信間隔で、発生イベント情報をサーバノード１１０に送信する。発生イベントは例えば、モジュール実行部２１３への入力イベント、またモジュール実行部２１３で処理された結果である出力イベントに関する情報を収集したものである。この情報は、サーバノード１１０において、図７で例示した発生イベント情報記憶部１１６Ａに収集される。
【００９３】
次に、本実施形態に係るＧＷノードの機能的構成について説明する。図１５は、本実施形態に係るＧＷノード３１０の機能的構成を示すブロック図である。図１５に示すＧＷノード３１０は、イベント受信部３１１と、モジュール受信部３１２と、モジュール実行部３１３と、イベント送信部３１４と、トポロジ検出部３１５と、トポロジ送信部３１６と、イベント削減効果情報送信部３１７と、発生イベント情報送信間隔受信部３１８と、発生イベント情報送信部３１９とを有する。
【００９４】
イベント受信部３１１は、イベントを受信する処理部である。一態様としては、イベント受信部３１１は、下位ノードであるセンサノード２１０や他のＧＷノード３１０からイベントを受信する。
【００９５】
モジュール受信部３１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部３１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部３１３に出力される。
【００９６】
モジュール実行部３１３は、ＧＷノード３１０に配備されたモジュールの実行制御を行う処理部である。モジュール実行部３１３は例えば、イベント受信部３１１によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがＧＷノード３１０に配備されているか否かを判定する。このとき、モジュール実行部３１３は、モジュールがＧＷノード３１０に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。その後、モジュール実行部３１３は、モジュールによって加工処理が実行されたデータを新たな発生イベントとしてイベント送信部３１４へ出力する。なお、モジュールがＧＷノード３１０に配備されていない場合には、イベントを加工処理せずにそのままイベント送信部３１４へ出力する。
【００９７】
イベント送信部３１４は、イベントを上位ノードに送信する処理部である。イベント送信部３１４は例えば、モジュール実行部３１３によって加工処理されたイベント、あるいはイベント受信部３１１によって受信されたイベントを上位ノードに送信する。
【００９８】
トポロジ検出部３１５は、ＧＷノード３１０がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。トポロジ検出部３１５は例えば、ＵＰｎＰプロトコル等を用いて、ＧＷノード３１０と同一のローカルネットワーク内に存在する他のＧＷノード３１０を認識したり、サーバノード１１０から他のＧＷノード３１０の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード１１０とのネットワーク接続の確立は、サーバノード１１０のＵＲＬ等のアドレスを設定しておくことにより実現できる。
【００９９】
トポロジ送信部３１６は、トポロジ検出部３１５によって検出されたトポロジをサーバノード１１０に送信する処理部である。トポロジ送信部３１６は例えば、ＧＷノード３１０が接続されている上位ノードのノードＩＤをサーバノード１１０に送信する。
【０１００】
イベント削減効果情報送信部３１７は、入力イベントがモジュール実行部３１３で処理され処理結果の出力イベントが発生した場合に、入力イベントデータ量に対し出力イベントデータ量が削減される効果を表す情報を、サーバノード１１０に送信する。この情報は、サーバノード１１０において、図１３で例示したイベント削減効果情報記憶部１２０Ａに収集される。
【０１０１】
発生イベント情報送信間隔受信部３１８は、サーバノード１１０から、自ノードのための発生イベント情報の送信間隔に関する情報を受信する。
【０１０２】
発生イベント情報送信部３１９は、発生イベント情報送信間隔受信部３１８が受信した送信間隔で、発生イベント情報をサーバノード１１０に送信する。発生イベントは例えば、モジュール実行部３１３への入力イベント、またモジュール実行部３１３で処理された結果である出力イベントに関する情報を収集したものである。この情報は、サーバノード１１０において、図７で例示した発生イベント情報記憶部１１６Ａに収集される。
【０１０３】
次に、本実施形態に係るセンサネットワークシステムの処理の流れについて説明する。なお、ここでは、センサノード２１０によって実行される全体処理を説明した後に、サーバノード１１０によって実行されるモジュール配備処理を説明し、さらに、発生イベント情報送信間隔受信処理を説明することとする。
【０１０４】
図１６は、本実施形態に係るセンサノード２１０における全体処理の手順を示すフローチャートである。この全体処理は、センサノード２１０の電源がＯＮ状態である限り、繰り返し実行される。
【０１０５】
図１６に示すように、新たな上位ノードを検出した場合（ステップＳ１０１の判定がＹＥＳの判定がＹＥＳ）には、センサノード２１０は、当該上位ノードのノードＩＤをサーバノード１１０へ送信する（ステップＳ１０２）。なお、新たな上位ノードを検出しなかった場合（ステップＳ１０１の判定がＮＯの判定がＮＯ）には、ステップＳ１０２の処理を実行せずにステップＳ１０３の処理へ移行する。
【０１０６】
続いて、サーバノード１１０からモジュールを受信した場合（ステップＳ１０３の判定がＹＥＳ）には、センサノード２１０は、サーバノード１１０から受信したモジュールを配備する（ステップＳ１０４）。なお、モジュールを受信しなかった場合（ステップＳ１０３の判定がＮＯ）には、ステップＳ１０４の処理を実行せずにステップＳ１０５の処理へ移行する。
【０１０７】
そして、センサデバイスからセンサ情報を受信した場合（ステップＳ１０５の判定がＹＥＳ）には、センサノード２１０は、当該センサ情報を入力イベント型とするモジュールが配備されているか否かをさらに判定する（ステップＳ１０６）。なお、センサ情報を受信しなかった場合（ステップＳ１０５の判定がＮＯ）には、ステップＳ１１０の処理に移行する。
【０１０８】
このとき、モジュールが配備されている場合（ステップＳ１０６の判定がＹＥＳ）には、センサノード２１０は、モジュールを実行することによってイベントを加工処理する（ステップＳ１０７）。そして、センサノード２１０は、加工処理が実行されたイベントを上位ノードへ送信する（ステップＳ１０８）。
【０１０９】
一方、モジュールが配備されていない場合（ステップＳ１０６の判定がＮＯ）には、センサノード２１０は、センサデバイスから受信したセンサ情報に発生ノードＩＤや集約属性などを付加した上で上位ノードへ送信する（ステップＳ１０９）。
【０１１０】
ステップＳ１０８またはＳ１０９の処理の後、センサノード２１０は、イベントの処理の削減効果情報を上位ノードへ送信する（ステップＳ１１０）。
【０１１１】
次に、サーバノード１１０から発生イベント情報送信間隔を受信した場合（ステップＳ１１１の判定がＹＥＳ）には、センサノード２１０は、自装置内の発生イベント情報の送信間隔を記憶するレジスタ等を更新する（ステップＳ１１２）。なお、発生イベント情報送信間隔を受信しなかった場合（ステップＳ１１１の判定がＮＯ）には、ステップＳ１１３の処理に移行する。
【０１１２】
上記レジスタ等に記憶されている発生イベント情報送信間隔の時間が経過した場合（ステップＳ１１３の判定がＹＥＳ）には、センサノード２１０は、発生イベント情報を上位ノードへ送信する（ステップＳ１１４）。ステップＳ１１４の処理の後または上記時間が経過していない場合（ステップＳ１１３の判定がＮＯ）には、ステップＳ１０１の処理に戻る。
【０１１３】
このようにして、センサノード２１０は、上記のステップＳ１０１〜ステップＳ１１４までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。
【０１１４】
なお、ここでは、センサノード２１０の全体処理について説明したが、中継ノードであるＧＷノード３１０によって実行される全体処理も一部を除き同様である。すなわち、ＧＷノード３１０の場合には、上記のステップＳ１０５においてセンサ情報の代わりにイベントが受信される点が相違する点を除き、センサノード２１０と同様である。
【０１１５】
続いて、本実施形態に係るトポロジ変更に基づくモジュール配備処理について説明する。図１７Ａは、本実施形態に係るトポロジ変更に基づくモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、センサネットワークのトポロジが変化した場合に処理が起動される。
【０１１６】
図１７Ａに示すように、サーバノード１１０は、発生イベント情報記憶部１１６Ａが更新されるのを待機する（ステップＳ２０１）。
【０１１７】
そして、発生イベント情報記憶部１１６Ａが更新されると、全てのモジュールの配備が終了したか否かが判断されるが（ステップＳ２０２）、ここではいずれのモジュールについても処理が終了していないので（ステップＳ２０２の判定がＮＯ）、ステップＳ２００の未配備モジュールの配属処理へ移行する。
【０１１８】
図１７Ｂは、図１７ＡのステップＳ２００として呼び出される、本実施形態に係る未配備モジュールの配備処理の手順を示すフローチャートである。
【０１１９】
まず、サーバノード１１０は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型、および集約属性名のカラムデータを、配備先情報記憶部１１７Ａの該当カラムに格納する（ステップＳ２０３）。
【０１２０】
そして、サーバノード１１０は、ステップＳ２０３の処理を実行後に、下記に説明するステップＳ２０４の処理を実行する。すなわち、サーバノード１１０は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が配備先情報記憶部１１７Ａに記憶された未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、サーバノード１１０は、発生イベント情報記憶部１１６Ａ上で、上記のように抽出した発生ノードＩＤを含むレコード群のうち、次のレコードを抽出する。サーバノード１１０は、上記レコード群のうち、配備先情報記憶部１１７Ａに記憶された未配備のモジュールの集約属性名と同一の発生イベント集約属性に属する発生イベント集約属性の値であって、互いに同一の値を有するレコードを抽出する。
【０１２１】
その後、サーバノード１１０は、抽出結果として得られた発生ノードＩＤおよび発生ノードＩＤに対応付けられた発生イベント属性を、配備先情報記憶部１１７Ａの「発生ノードＩＤ」カラムと「発生イベント属性」カラムに書き込む（ステップＳ２０５）。
【０１２２】
このとき、発生ノードＩＤの数が「０」である場合（ステップＳ２０６の判定がＹＥＳ）には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、ステップＳ２０２の処理に移行する。
【０１２３】
ここで、発生ノードＩＤの数が複数である場合（ステップＳ２０７の判定がＹＥＳ）には、下記に説明するステップＳ２０８の処理を実行する。すなわち、サーバノード１１０は、トポロジ記憶部１１２Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０またはＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。そして、サーバノード１１０は、前述のように抽出したノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ２０９）。
【０１２４】
また、発生ノードＩＤの数が１つである場合（ステップＳ２０７の判定がＮＯ）には、サーバノード１１０は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ２０９）。
【０１２５】
続いて、サーバノード１１０は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信する（ステップＳ２１０）。より具体的には、図９で説明したように、サーバノード１１０は、配備先情報記憶部１１７Ａに登録されているレコードのうち、配備先ノードＩＤが登録されたレコードのモジュール識別子に対応するモジュールの例えばバイナリコードを、モジュール記憶部１１１Ａから読み出す。そして、モジュール送信部１１８は、上記レコードの配備先ノードＩＤに対応するノードに向けて、その読み出したモジュールを送信する。
【０１２６】
その後、サーバノード１１０は、リターンして、図１７ＡのステップＳ２０１の待機処理に戻る。
【０１２７】
サーバノード１１０は、発生イベント情報記憶部１１６Ａが更新されるのを待機した後（ステップＳ２０１）、全てのモジュールの配備が終了するまで（ステップＳ２０２の判定がＮＯ）、上記のステップＳ２００の未配備モジュールの配備処理を繰り返し実行する。そして、全てのモジュールの配備が終了すると（ステップＳ２０２の判定がＹＥＳ）、処理を終了する。
【０１２８】
上述してきたように、本実施形態に係るサーバノード１１０では、センサネットワークのトポロジが変化した場合でも、モジュールによって集約されるイベントが集合するノードのうちできるだけセンシングデータが採取される下位側のノードにモジュールを分散配備できる。したがって、本実施形態に係るサーバノード１１０によれば、センサネットワーク上のノードにモジュールを適切に配備できる結果、センサネットワークのトラフィックを抑制できる。さらに、本実施形態に係るサーバノード１１０では、モジュールを分散配備するので、サーバノード１１０に負荷が集中することも防止できる。
【０１２９】
また、本実施形態に係るサーバノード１１０は、各ノードが収容される上位ノードのうち最下位のノードに当該モジュールを配備する。このため、本実施形態に係るサーバノード１１０では、モジュールによって集約されるイベントが集合するノードの中で最もイベントの発生ノードに近いノードにモジュールを配備できる。それゆえ、本実施形態に係るサーバノード１１０によれば、モジュールの分散配備を適切に実行できる。
【０１３０】
図１８は、本実施形態に係る発生イベント情報送信間隔決定処理の手順を示すフローチャートである。
【０１３１】
サーバノード１１０は、発生イベント情報送信間隔に初期値を設定し、その値を各センサノード２１０に送信する（ステップＳ３０１）。初期値は、例えば１分である。
【０１３２】
サーバノード１１０は、イベント削減効果情報記憶部１２０Ａに、イベント削減効果情報が記憶されるまで待つ（ステップＳ３０２）。
【０１３３】
サーバノード１１０は、発生イベント情報トラフィック記憶部１１９に、発生イベント情報トラフィックが記憶されるまで待つ（ステップＳ３０３）
その後、サーバノード１１０は、イベント削減効果情報記憶部１２０Ａから、送信間隔変更前の出力イベントデータ量を集計する（ステップＳ３０４）。この集計結果をｍ１とする。
【０１３４】
サーバノード１１０は、発生イベント情報トラフィック記憶部１１９から、送信間隔変更前の発生イベント情報トラフィックを集計する（ステップＳ３０５）。この集計結果をｄ１とする。
【０１３５】
以下のステップＳ３０６からＳ３１２までの一連の処理は、送信間隔を変更する都度、繰り返し実行される。
【０１３６】
まず、サーバノード１１０は、発生イベント情報送信間隔を変更し、その値をセンサノード２１０に送信する（ステップＳ３０６）。例えば、発生イベント情報送信間隔の今までの値に、１分が加算される。
【０１３７】
サーバノード１１０は、イベント削減効果情報記憶部１２０Ａに、イベント削減効果情報が記憶されるまで待つ（ステップＳ３０７）。
【０１３８】
サーバノード１１０は、発生イベント情報トラフィック記憶部１１９に、発生イベント情報トラフィックが記憶されるまで待つ（ステップＳ３０８）。
【０１３９】
その後、サーバノード１１０は、イベント削減効果情報記憶部１２０Ａから、送信間隔変更後の出力イベントデータ量を集計する（ステップＳ３０９）。この集計結果をｍ２とする。
【０１４０】
サーバノード１１０は、発生イベント情報トラフィック記憶部１１９から、送信間隔変更後の発生イベント情報トラフィックを集計する（ステップＳ３１０）。この集計結果をｄ２とする。
【０１４１】
サーバノード１１０は、（ｍ１＋ｄ１）の値が（ｍ２＋ｄ２）の値よりも大きいか否かを判定する（ステップＳ３１１）。
【０１４２】
ステップＳ３１１の判定がＹＥＳなら、サーバノード１１０は、ｍ１にｍ２の値を代入し、ｄ１にｄ２の値を代入する（ステップＳ３１２）。その後、ステップＳ３０６に戻って繰り返す。
【０１４３】
ステップＳ３１１の判定がＮＯなら、サーバノード１１０は、発生イベント情報送信間隔を変更前の値に戻し、その発生イベント情報送信間隔を決定し、その値をセンサノード２１０に送信する（ステップＳ３１３）。その後、サーバノード１１０は、発生イベント情報送信間隔決定処理を終了する。
【０１４４】
図１９は、図１８の発生イベント情報送信間隔決定処理とともに実行されるモジュール配備処理の手順を示すフローチャートである。
【０１４５】
まず、サーバノード１１０は、発生イベント情報送信間隔決定処理が終了したか否かを判定する（ステップＳ４０１）。
【０１４６】
ステップＳ４０１の判定がＮＯならば、サーバノード１１０は、発生イベント情報記憶部１１６Ａが更新されるまで一定時間待機する（ステップＳ４０２）。
【０１４７】
ステップＳ４０２の待機の後、サーバノード１１０は、発生イベント情報記憶部１１６Ａが更新されたか否かを判定する（ステップＳ４０３）。
【０１４８】
ステップＳ４０３の判定がＮＯならば、ステップＳ４０１の処理に戻る。
発生イベント情報記憶部１１６Ａが更新されてステップＳ４０３の判定がＹＥＳになると、サーバノード１１０は、次の動作を実行する。
【０１４９】
まず、サーバノード１１０は、配備先情報記憶部１１７Ａから、入力イベント型と発生イベント属性がそれぞれ、更新された発生イベント情報記憶部１１６Ａのレコードの発生イベント型と発生イベント集約属性と同一のレコードを抽出する（ステップＳ４０４）。
【０１５０】
次に、サーバノード１１０は、配備先情報記憶部１１７Ａ上で抽出したそのレコードの発生ノードＩＤが、上記更新された発生イベント情報記憶部１１６Ａのレコードの発生ノードＩＤと異なる変化が発生したか否かを判定する（ステップＳ４０５）。
【０１５１】
ステップＳ４０５の判定がＮＯならば、ステップＳ４０１の処理に戻る。
変化が発生しステップＳ４０５の判定がＹＥＳならば、サーバノード１１０は、発生ノードＩＤが変化した配備先情報記憶部１１７Ａのレコードを削除して、そのモジュールを未配備モジュールとする（ステップＳ４０６）。
【０１５２】
その後、サーバノード１１０は、その未配備としたモジュールについて再度、未配備モジュールの配属処理を実行する（ステップＳ４０７）。この配属処理は、前述した図１７Ｂの処理と同様である。この処理により、発生イベント情報記憶部１１６Ａ上で更新された新たな発生ノードＩＤに対して、モジュールが再配備される。
【０１５３】
以上説明した図１８の発生イベント情報送信間隔決定処理およびその処理とともに実行される図１９のモジュール配備処理を、具体的な数値例を使って説明する。
【０１５４】
まず、図１８のステップＳ３０１により、発生イベント情報送信間隔の初期値として、１分が指定される。この結果、電力センサＸおよびＹからは、発生イベント情報が１分間隔でサーバノード１１０に送信される。従って、発生イベント情報記憶部１１６Ａの記憶内容は、図７に例示される記憶内容となる。この発生イベント情報記憶部１１６Ａの内容が１分単位で更新される毎に、図１９のモジュール配備処理が実行される。この結果、前述したように、図７の例において、２０１３年８月１日  １２時００分００秒〜１２時０１分００秒の最初の発生イベント情報のレコードが登録されたタイミングで、電力センサＸへの「電力量集計」モジュールの配備が実行される。また、２０１３年８月１日  １２時１０分００秒〜１２時１１分００秒の発生イベント情報の登録により発生ノードＩＤが「電力センサＹ」に変化したタイミングで、電力センサＹへの「電力量集計」モジュールの配備が実行される。これにより、電力センサＸおよびＹから１分間隔で送られてくるイベント削減効果情報に基づくイベント削減効果情報記憶部１２０Ａの記憶内容は、図１３に示される記憶内容となる。この結果、図１８のステップＳ３０４で集計される出力イベントデータ量ｍ１の内容は、ほぼ１００バイト／分となる。また、図１８のステップＳ３０５で集計される発生イベント情報トラフィック記憶部１１９に記憶される受信データ量ｄ１も、ほぼ１００バイト／分となる。
【０１５５】
次に、図１８のステップＳ３０６により、発生イベント情報送信間隔が２分にされる。この結果、電力センサＸおよびＹからは、発生イベント情報が２分間隔でサーバノード１１０に送信される。従って、発生イベント情報記憶部１１６Ａの記憶内容は、図２０に例示される記憶内容となる。この発生イベント情報記憶部１１６Ａの内容が２分単位で更新される毎に、図１９のモジュール配備処理が実行される。この結果、前述したように、図２０の例において、２０１３年８月１日  １２時００分００秒〜１２時０２分００秒の最初の発生イベント情報のレコードが登録されたタイミングで、電力センサＸへの「電力量集計」モジュールの配備が実行される。また、２０１３年８月１日  １２時１０分００秒〜１２時１２分００秒の発生イベント情報の登録により発生ノードＩＤが「電力センサＹ」に変化したタイミングで、電力センサＹへの「電力量集計」モジュールの配備が実行される。これにより、電力センサＸおよびＹから１分間隔で送られてくるイベント削減効果情報に基づくイベント削減効果情報記憶部１２０Ａの記憶内容は、前述した図１３に示される記憶内容と同様となる。この結果、図１８のステップＳ３０９で集計される出力イベントデータ量ｍ２の内容は、ほぼ１００バイト／分と、１分間隔の場合と同様となる。すなわち、発生イベント情報の送信間隔が２分に延ばされても、例えば１０分間隔で移動する使用者ＩＤが“Ｕｓｅｒ−Ａ”の使用者に追随できるので、出力イベントデータ量は変化しない。また、発生イベント情報トラフィック記憶部１１９の記憶内容は、図２１に示されるように、２分間隔で１００バイトずつになる。この結果、図１８のステップＳ３１０で集計される発生イベント情報トラフィック記憶部１１９に記憶される受信データ量ｄ２は、１分間隔の半分のほぼ５０バイト／分となる。この状態で、図１８のステップＳ３１１で、変更前の（ｍ１＋ｄ１）と変更後の（ｍ２＋ｄ２）が比較される。
ｍ１＋ｄ１＝ほぼ２００バイト／分
ｍ２＋ｄ２＝ほぼ１５０バイト／分
【０１５６】
変更後のほうが総トラフィック量が少なく、送信間隔は２分のほうが適しているので、新たな発生イベント情報送信間隔として採用され、図１８のステップＳ３１２で、ｍ１にｍ２が、ｄ１にｄ２が、それぞれ代入される。
【０１５７】
以下、発生イベント情報送信間隔が、３分、４分と順次延ばされていくことで、さらに総トラフィック量が削減される。
【０１５８】
繰り返しの結果、図１８のステップＳ３０６により、発生イベント情報送信間隔が１０分にされる。この結果、電力センサＸおよびＹからは、発生イベント情報が１０分間隔でサーバノード１１０に送信される。従って、発生イベント情報記憶部１１６Ａの記憶内容は、図２２に例示される記憶内容となる。この発生イベント情報記憶部１１６Ａの内容が１０分単位で更新される毎に、図１９のモジュール配備処理が実行される。この結果、前述したように、図２２の例において、２０１３年８月１日  １２時００分００秒〜１２時１０分００秒の最初の発生イベント情報のレコードが登録されたタイミングで、電力センサＸへの「電力量集計」モジュールの配備が実行される。また、２０１３年８月１日  １２時１０分００秒〜１２時２０分００秒の発生イベント情報の登録により発生ノードＩＤが「電力センサＹ」に変化したタイミングで、電力センサＹへの「電力量集計」モジュールの配備が実行される。これにより、電力センサＸおよびＹから１分間隔で送られてくるイベント削減効果情報に基づくイベント削減効果情報記憶部１２０Ａの記憶内容は、前述した図１３に示される記憶内容と同様となる。この結果、図１８のステップＳ３０９で集計される出力イベントデータ量ｍ２の内容は、ほぼ１００バイト／分と、１〜９分間隔の場合と同様となる。すなわち、発生イベント情報の送信間隔が１０分に延ばされても、例えば１０分間隔で移動する使用者ＩＤが“Ｕｓｅｒ−Ａ”の使用者にぎりぎり追随できるので、出力イベントデータ量は変化しない。また、発生イベント情報トラフィック記憶部１１９の記憶内容は、図２３に示されるように、１０分間隔で１００バイトずつになる。この結果、図１８のステップＳ３１０で集計される発生イベント情報トラフィック記憶部１１９に記憶される受信データ量ｄ２は、１分間隔の１０分の１のほぼ１０バイト／分となる。この状態で、図１８のステップＳ３１１で、変更前の（ｍ１＋ｄ１）と変更後の（ｍ２＋ｄ２）が比較される。
ｍ１＋ｄ１＝ほぼ（１００＋１００／９）バイト／分
ｍ２＋ｄ２＝ほぼ（１００＋１００／１０）バイト／分
【０１５９】
変更後のほうが総トラフィック量が少なく、送信間隔は１０分のほうが適しているので、新たな発生イベント情報送信間隔として採用され、図１８のステップＳ３１２で、ｍ１にｍ２が、ｄ１にｄ２が、それぞれ代入される。
【０１６０】
さらに、図１８のステップＳ３０６により、発生イベント情報送信間隔が１１分にされる。この結果、電力センサＸおよびＹからは、発生イベント情報が１１分間隔でサーバノード１１０に送信される。従って、発生イベント情報記憶部１１６Ａの記憶内容は、図２４に例示される記憶内容となる。この発生イベント情報記憶部１１６Ａの内容が１１分単位で更新される毎に、図１９のモジュール配備処理が実行される。この場合、図２４から理解されるように、同一の発生イベント採取期間に、電力センサＸおよびＹの両方から、同一の発生イベント集約属性に関する発生イベント情報が送られてくることがわかる。これは、使用者ＩＤ“Ｕｓｅｒ−Ａ”の使用者が１０分間隔で移動するために、両方の電力センサでその電力の使用状態が検出されてしまうためである。この結果、図１７ＢのステップＳ２０８により、「電力量集計」モジュールの配備は、電力センサＸおよびＹへではなく、サーバノード１１０に対して行われる。これにより、電力センサＸおよびＹから１分間隔で送られてくるイベント削減効果情報に基づくイベント削減効果情報記憶部１２０Ａの記憶内容は、前述した図１３とは異なり図２５に示される記憶内容となる。この結果、図１８のステップＳ３０９で集計される出力イベントデータ量ｍ２の内容は、ほぼ６０００バイト／分と、１〜１０分間隔の場合とは異なり、一気に削減効果がダウンする。すなわち、発生イベント情報の送信間隔が１０分から１１分に延ばされると、例えば１０分間隔で移動する“Ｕｓｅｒ−Ａ”に追随できなくなるので、出力イベントデータ量が大きく変化する。また、発生イベント情報トラフィック記憶部１１９の記憶内容は、図２６に示されるように、１１分間隔で６０００バイトずつに増加する。この結果、図１８のステップＳ３１０で集計される発生イベント情報トラフィック記憶部１１９に記憶される受信データ量ｄ２は、（６０００／１１）バイト／分となる。この状態で、図１８のステップＳ３１１で、変更前の（ｍ１＋ｄ１）と変更後の（ｍ２＋ｄ２）が比較される。
ｍ１＋ｄ１＝ほぼ（１００＋１００／１０）バイト／分
ｍ２＋ｄ２＝ほぼ（６０００＋６０００／１１）バイト／分
【０１６１】
変更前のほうが総トラフィック量が少なく、送信間隔は１０分のほうが適しているので、図１８のステップＳ３１３で、発生イベント情報送信間隔が、１１分から１０分に戻されて、最終的な発生イベント情報送信間隔として決定される。
【０１６２】
以上説明したようにして、イベント発生状況が時間的に変化する（例えばイベントが発生するノードが時間的に変化する）ような場合であっても、本実施形態により、発生イベント情報の送信間隔を適切に決定することが可能となる。この場合、送信間隔が変更される毎に、処理期間毎およびノード毎のモジュールの分散配備によるトラフィック削減効果によるメリットと、発生イベントを収集するために必要な収集コストとしてのデメリットが集計されて比較される。これにより、最適な送信間隔を決定することが可能となり、分散配備処理の効率化を図ることが可能となる。
【０１６３】
以上説明した実施形態では、発生イベントを収集するために必要な収集コストとしては、受信時刻毎およびノード毎の受信データ量が用いられた。これに加えて、収集コストとして、例えば電力センサＸから電力センサＹにモジュールを配備し直すときの、途中集計結果等のインスタンスの移動コストが考慮されてもよい。これによって、より正確な発生イベント情報の送信間隔の算出が可能となる。
【０１６４】
以上の実施形態において、モジュールの分散配備によるトラフィック削減効果によるメリットと、発生イベントを収集するために必要な収集コストとしてのデメリットの集計は、次のように行われた。すなわち、図１８のステップＳ３０４とＳ３０５またはステップＳ３０９とＳ３１０によって、イベント削減効果情報記憶部１２０Ａ上の出力イベントデータ量と発生イベント情報トラフィック記憶部１１９上の受信データ量の合計として算出された。これ以外にも、モジュールの分散配備によるトラフィック削減効果によるメリットと、発生イベントを収集するために必要な収集コストとしてのデメリットの集計は、さまざまな値を用いて行われてよい。
【０１６５】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備する装置において、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を収集するトラフィック削減量収集部と、
前記ノードからの前記イベントの収集コストを算出するイベント収集コスト算出部と、
前記トラフィック削減量収集部が収集した前記トラフィック削減量と、前記イベント収集コスト算出部が算出した前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御するイベント情報送信間隔制御部と、
を備えることを特徴とする分散配備装置。
（付記２）
前記ノードは、前記モジュールの分散配備を制御された場合における前記ノードでのトラフィック削減量を算出して送信し、
前記トラフィック削減量収集部は、前記ノードから、前記トラフィック削減量を受信して記憶する、
ことを特徴とする請求項１に記載の分散配備装置。
（付記３）
前記イベント収集コスト算出部は、前記ノードから前記分散配備装置に収集される前記イベントのトラフィックを算出して記憶する、
ことを特徴とする請求項１または２のいずれかに記載の分散配備装置。
（付記４）
前記モジュールの分散配備に伴うインスタンスの移動コストを算出するインスタンス移動コスト算出部をさらに備え、
前記イベント情報送信間隔制御部は、前記トラフィック削減量および前記収集コストに加えて、前記インスタンス移動コスト算出部が算出する前記インスタンスの移動コストに応じて、前記ノードにおける前記イベントの送信間隔を制御する、
ことを特徴とする請求項１ないし３のいずれかに記載の分散配備装置。
（付記５）
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードがセンサネットワークに接続され、前記センサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備する分散配備装置が前記センサネットワークに接続されるシステムであって、
前記分散配備装置が、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を前記ノードから収集し、
前記ノードからの前記イベントの収集コストを算出し、
前記トラフィック削減量と、前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御する、
ことを特徴とする分散配備システム。
（付記６）
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備するコンピュータに、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を収集するトラフィック削減量収集ステップと、
前記ノードからの前記イベントの収集コストを算出するイベント収集コスト算出ステップと、
前記トラフィック削減量収集ステップが収集した前記トラフィック削減量と、前記イベント収集コスト算出ステップが算出した前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御するイベント送信間隔制御ステップと、
を実行させるための分散配備プログラム。
（付記７）
センシング動作に対応するイベントを送信するセンサノードを含む複数のノードが接続されたセンサネットワークから前記イベントを収集するとともに、前記ノードでの前記イベントの発生状況を収集し、前記イベント発生状況に応じて前記イベントを処理するモジュールの配備先のノードを決定し、前記配備先のノードに前記モジュールを分散配備する方法において、
前記ノードに対して前記モジュールの分散配備を制御した場合における前記ノードでのトラフィック削減量を収集し、
前記ノードからの前記イベントの収集コストを算出し、
前記トラフィック削減量と、前記収集コストに応じて、前記ノードにおける前記イベント発生状況の送信間隔を制御する、
ことを特徴とする分散配備方法。
【符号の説明】
【０１６６】
１    センサネットワークシステム
１１０    サーバノード
１１１    モジュール登録部
１１１Ａ  モジュール記憶部
１１１Ｂ  モジュール定義記憶部
１１２    トポロジ取得部
１１２Ａ  トポロジ記憶部
１１３    イベント受信部
１１４    イベント記憶部
１１５    モジュール実行部
１１６    発生イベント受信部
１１６Ａ  発生イベント情報記憶部
１１７    配備先決定部
１１７Ａ  配備先情報記憶部
１１８    モジュール送信部
１１９    発生イベント情報トラフィック記憶部
１２０    イベント削減効果情報受信部
１２０Ａ  イベント削減効果情報記憶部
１２１    発生イベント情報送信間隔決定部
１２２    発生イベント情報送信間隔送信部
２１０    センサノード
２１１          センサ情報受信部
２１２、３１２  モジュール受信部
２１３，３１３  モジュール実行部
２１４、３１４  イベント送信部
２１５、３１５  トポロジ検出部
２１６、３１６  トポロジ送信部
２１７、３１７  イベント削減効果情報送信部
２１８、３１８  発生イベント情報送信間隔受信部
２１９、３１９  発生イベント情報送信部
３１１          イベント受信部
【図１】
2015099981.tif 000003
【図２】
2015099981.tif 000004
【図３】
2015099981.tif 000005
【図４】
2015099981.tif 000006
【図５】
2015099981.tif 000007
【図６】
2015099981.tif 000008
【図７】
2015099981.tif 000009
【図８】
2015099981.tif 000010
【図９】
2015099981.tif 000011
【図１０】
2015099981.tif 000012
【図１１】
2015099981.tif 000013
【図１２】
2015099981.tif 000014
【図１３】
2015099981.tif 000015
【図１４】
2015099981.tif 000016
【図１５】
2015099981.tif 000017
【図１６】
2015099981.tif 000018
【図１７Ａ】
2015099981.tif 000019
【図１７Ｂ】
2015099981.tif 000020
【図１８】
2015099981.tif 000021
【図１９】
2015099981.tif 000022
【図２０】
2015099981.tif 000023
【図２１】
2015099981.tif 000024
【図２２】
2015099981.tif 000025
【図２３】
2015099981.tif 000026
【図２４】
2015099981.tif 000027
【図２５】
2015099981.tif 000028
【図２６】
2015099981.tif 000029