(57)【要約】【課題】重複する情報の収集を省くこと。【解決手段】処理部１２は、ユーザからの要求に基づいて、データの取得対象の期間Ｔ１およびエリアＲ１，Ｒ２を特定し、期間Ｔ１のうちの時間帯ｔ１〜ｔ６ごとにエリアＲ１，Ｒ２に存在していた機器２０，３０，４０を抽出し、抽出した機器の中から、所定の条件に基づいて、時間帯およびエリアの組ごとに、時間帯およびエリアの組に対応するデータブロックｘ１〜ｘ６，ｙ１〜ｙ６それぞれの収集元の機器を割り当て、時間帯およびエリアの組ごとに、収集元として割り当てた機器からデータブロックを収集する。【選択図】図１
2020112896.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
ユーザからの要求に基づいて、データの取得対象の期間および複数のエリアを特定し、
前記期間のうちの前記データの取得単位の時間帯ごとに各エリアに存在していた複数の機器を抽出し、
抽出した前記複数の機器の中から、所定の条件に基づいて、前記時間帯および前記エリアの組ごとに、前記時間帯および前記エリアの組に対応するデータブロックの収集元の機器を割り当て、
前記時間帯および前記エリアの組ごとに、前記収集元として割り当てた前記機器から前記データブロックを収集する、
処理を実行させるデータ収集プログラム。
【請求項２】
前記機器の割り当てでは、前記時間帯に前記エリアに存在していた２以上の機器のうちの１つの機器を、前記時間帯の前記エリアにおける前記データブロックの収集元として割り当てる、
請求項１記載のデータ収集プログラム。
【請求項３】
前記所定の条件は、前記複数の機器それぞれを収集元として割り当てた全ての前記データブロックの送信コストの平準化であり、
前記機器の割り当てでは、前記時間帯および前記エリアの組における前記データブロックを保持する２以上の機器それぞれを前記データブロックの前記収集元とする場合の前記機器による前記送信コストを算出し、算出された前記送信コストが最小の前記機器を前記収集元として割り当てる、
請求項１記載のデータ収集プログラム。
【請求項４】
前記送信コストは、各機器からのデータの収集時間であり、
前記送信コストの算出では、前記複数の機器それぞれによる前記データブロックの生成のための、機器ごとの負荷に応じた前処理時間、および、前記複数の機器それぞれが存在する前記エリアに応じたデータ転送時間に基づいて、各機器からの前記データの収集時間を算出する、
請求項３記載のデータ収集プログラム。
【請求項５】
前記機器の割り当てでは、前記複数の機器の存在位置の履歴情報に基づいて、前記時間帯および前記エリアの組に対応するハッシュ値を計算し、前記ハッシュ値が共通する機器の組を、前記時間帯および前記エリアの組に対応する前記データブロックを共通して保持する機器の組であると判定する、
請求項１記載のデータ収集プログラム。
【請求項６】
前記時間帯および前記エリアの何れの組に対しても２以上の機器がない場合、前記複数の機器が保持する前記データブロックと当該データブロックに対応する時刻とに応じたハッシュ値を前記複数の機器それぞれから収集し、
共通のハッシュ値を送信した前記機器の組の中から、前記時刻に対応する前記データブロックの前記収集元の前記機器を割り当て、
前記時刻ごとに、前記収集元として割り当てた前記機器から前記データブロックを収集する、
請求項１記載のデータ収集プログラム。
【請求項７】
前記複数の機器は、移動可能である、
請求項１乃至６の何れか一項に記載のデータ収集プログラム。
【請求項８】
複数の機器それぞれに対して、データの取得単位の時間帯ごとに存在していたエリアを示す履歴情報を記憶する記憶部と、
ユーザからの要求に基づいて、前記データの取得対象の期間および複数のエリアを特定し、前記履歴情報に基づいて、前記期間のうちの前記時間帯ごとに各エリアに存在していた複数の機器を抽出し、抽出した前記複数の機器の中から、所定の条件に基づいて、前記時間帯および前記エリアの組ごとに、前記時間帯および前記エリアの組に対応するデータブロックの収集元の機器を割り当て、前記時間帯および前記エリアの組ごとに、前記収集元として割り当てた前記機器から前記データブロックを収集する処理部と、
を有するデータ収集装置。
【請求項９】
コンピュータが、
ユーザからの要求に基づいて、データの取得対象の期間および複数のエリアを特定し、
前記期間のうちの前記データの取得単位の時間帯ごとに各エリアに存在していた複数の機器を抽出し、
抽出した前記複数の機器の中から、所定の条件に基づいて、前記時間帯および前記エリアの組ごとに、前記時間帯および前記エリアの組に対応するデータブロックの収集元の機器を割り当て、
前記時間帯および前記エリアの組ごとに、前記収集元として割り当てた前記機器から前記データブロックを収集する、
データ収集方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ収集プログラム、データ収集装置およびデータ収集方法に関する。
【背景技術】
【０００２】
センサを備えた機器に蓄積されるデータをユーザの要求に応じて収集し、分析するシステムが利用されている。例えば、地理的に異なる位置に配置された複数のデバイスのうち、奇数番目のデバイスまたは偶数番目のデバイスを交互に間引いて、デバイスのデータを収集するシステムの提案がある。提案のシステムでは、間引かれたデバイスのデータの値を、間引かれずに収集されたデータを使用して補間する。
【０００３】
なお、性能データ値が近似値の範囲内にあるプロセッサをグルーピングし、グループの代表プロセッサ以外のプロセッサの性能データの送信間隔を、代表プロセッサの性能データの送信間隔よりも長くする性能データ収集装置の提案がある。
【０００４】
また、予め設定された時間内にデータ収集が予定されている収集対象データを、各データ収集装置に分散して割り当て、各データ収集装置により収集対象データを収集するデータ収集パターンを作成して各データ収集装置に配布する情報処理装置の提案もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１７／０９８８６６号
【特許文献２】国際公開第２０１１／０７７５３３号
【特許文献３】特開２０１１−１５０５０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データの収集元の複数の機器の少なくとも一部が移動可能な場合、データ収集の対象期間内において、当該機器が移動されることがある。この場合、上記提案のように、予め番号付けされたデバイスに対し、偶数または奇数番目のデバイスを交互に間引くというように、間引く対象を固定的に決定すると、データの収集が漏れるエリアが発生し得る。
【０００７】
このため、複数の機器の少なくとも一部が移動可能である場合、全ての機器からデータ収集の対象の全期間におけるデータを収集することが考えられる。しかし、例えば、降水量や温度などのように、比較的近くにある機器同士でほぼ同じ値が蓄積されることもあり、全ての機器から対象の全期間のデータを収集すると重複した情報が収集される可能性があるという問題がある。
【０００８】
１つの側面では、本発明は、重複する情報の収集を省くことができるデータ収集プログラム、データ収集装置およびデータ収集方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、データ収集プログラムが提供される。このデータ収集プログラムは、コンピュータに、ユーザからの要求に基づいて、データの取得対象の期間および複数のエリアを特定し、当該期間のうちのデータの取得単位の時間帯ごとに各エリアに存在していた複数の機器を抽出し、抽出した複数の機器の中から、所定の条件に基づいて、時間帯およびエリアの組ごとに、時間帯およびエリアの組に対応するデータブロックの収集元の機器を割り当て、時間帯およびエリアの組ごとに、収集元として割り当てた機器からデータブロックを収集する、処理を実行させる。
【００１０】
また、１つの態様では、データ収集装置が提供される。
また、１つの態様では、データ収集方法が提供される。
【発明の効果】
【００１１】
１つの側面では、重複する情報の収集を省くことができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のデータ収集装置を示す図である。
【図２】第２の実施の形態のデータ収集システムの例を示す図である。
【図３】エリアの例を示す図である。
【図４】エリアの降雨量の分析例を示す図である。
【図５】サーバのハードウェア例を示すブロック図である。
【図６】エッジのハードウェア例を示すブロック図である。
【図７】サーバの機能例を示すブロック図である。
【図８】エッジの機能例を示すブロック図である。
【図９】データの収集および分析の流れの例を示す図である。
【図１０】データの収集および分析のトータル時間の例を示す図である。
【図１１】類似データの間引きおよび補間の例を示す図である。
【図１２】エッジ履歴テーブルの例を示す図である。
【図１３】ハッシュ値テーブルの例を示す図である。
【図１４】センサデータの例を示す図である。
【図１５】前処理結果データの例を示す図である。
【図１６】収集データの例を示す図である。
【図１７】エッジの前処理時間の推測例を示す図である。
【図１８】エッジの転送時間の推測例を示す図である。
【図１９】エッジからのデータ収集時間の計算例を示す図である。
【図２０】エッジに対する類似データの割り当て例を示す図である。
【図２１】サーバの処理例を示すフローチャートである。
【図２２】収集元エッジの割り当て例を示すフローチャートである。
【図２３】エッジの生データによる類似データ探索の例を示す図である。
【図２４】サーバによるエッジからのデータ収集例を示す図である。
【図２５】データ収集時間の平準化例を示す図である。
【図２６】データ収集の比較例を示す図である。
【図２７】データ収集の比較例（続き）を示す図である。
【図２８】類似データの収集元の選択の他の例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１４】
図１は、第１の実施の形態のデータ収集装置を示す図である。
データ収集装置１０は、ネットワーク５を介して、機器２０，３０，４０と通信し、ユーザによるデータ分析などの要求を受け付けると、機器２０，３０，４０に蓄積されたデータを収集する。機器２０，３０，４０は、周囲の物理情報を検出するセンサ、センサによって検出されたデータを蓄積するメモリおよび無線通信機能を備える。物理情報は、例えば、降雨量、温度、湿度、風量、震動量、大気物質濃度、放射線量、電磁波（例えば、映像などに変換された情報）または音など、種々のものが考えられる。
【００１５】
機器２０，３０，４０の少なくとも一部は移動可能である。「移動可能」とは、該当の機器が自律的またはユーザなどの操作に応じて移動すること、あるいは、該当の機器が搭載された移動体とともに当該機器が移動されることを含む。移動体は、例えば、動物、車両、船舶、飛行体およびロボットなどである。また、機器２０の識別名は「機器ａ」である。機器３０の識別名は「機器ｂ」である。機器４０の識別名は「機器ｃ」である。
【００１６】
ネットワーク５には、基地局６，７が接続されている。基地局６は、エリアＲ１に存在する機器と無線通信する。基地局７は、エリアＲ２に存在する機器と無線通信する。
データ収集装置１０は、記憶部１１および処理部１２を有する。記憶部１１は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１２は、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１２はプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１７】
記憶部１１は、処理部１２の処理に用いられるデータを記憶する。例えば、記憶部１１は、処理部１２により機器２０，３０，４０から収集されたデータが記憶される。処理部１２により機器２０，３０，４０から収集されるデータは、例えば、ユーザの要求に応じて収集される、各機器のセンサによって検出されたデータを含む。また、処理部１２により機器２０，３０，４０から収集されるデータは、例えば、処理部１２により機器２０，３０，４０から定期的に収集される、収集時刻と収集時刻での各機器の位置と当該機器の負荷または燃料残量（バッテリ残量）などを示す情報を含み得る。記憶部１１は、処理部１２が機器２０，３０，４０から定期的に収集する、これらの情報の履歴（履歴情報）を記憶する。
【００１８】
処理部１２は、ユーザからの要求に基づいて、データの取得対象の期間、および、データの取得対象の複数のエリアを特定する。例えば、ユーザは、データの分析対象の期間および地域を指定した分析要求を、データ収集装置１０に入力する。すると、処理部１２は、入力された分析要求から、データの取得対象の期間と、指定された地域に含まれる複数のエリアを特定する。例えば、処理部１２は、指定された地域を所定サイズの区画で分割することで、複数のエリアを特定してもよい。一例では、処理部１２は、データの取得対象の期間として、期間Ｔ１を特定し、データの取得対象のエリアとして、エリアＲ１，Ｒ２を特定する。
【００１９】
処理部１２は、特定した期間のうちのデータの取得単位の時間帯ごとに各エリアに存在していた複数の機器を抽出する。データの取得単位の時間帯は、例えば、１分や１０分などの単位時間で区切られた時間帯である。一例では、期間Ｔ１は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６を含む。時間帯ｔ１が最も古く、時間帯ｔ２，ｔ３，…と順に新しく、時間帯ｔ６が最も新しい。処理部１２は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６ごとに、エリアＲ１，Ｒ２それぞれに存在していた複数の機器を抽出する。処理部１２は、記憶部１１に記憶された各機器が存在した位置の履歴を参照して、エリアＲ１，Ｒ２それぞれに存在していた複数の機器を抽出し得る。
【００２０】
例えば、処理部１２は、時間帯ｔ１，ｔ２，ｔ３，ｔ４それぞれにおいて、エリアＲ１に存在していた機器２０，４０を抽出する。処理部１２は、時間帯ｔ１，ｔ２，ｔ３，ｔ４それぞれにおいて、エリアＲ２に存在していた機器３０を抽出する。処理部１２は、時間帯ｔ５，ｔ６それぞれにおいて、エリアＲ１に存在していた機器２０を抽出する。時間帯ｔ５，ｔ６それぞれにおいて、エリアＲ２に存在していた機器３０，４０を抽出する。この場合、機器４０は、時間帯ｔ５の直前に、エリアＲ１からエリアＲ２へ移動したことになる。
【００２１】
ここで、機器２０は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６において取得されたデータＤ１を機器２０のメモリに蓄積している。データＤ１は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６に対応するデータブロックｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６を含む。また、機器３０は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６において取得されたデータＤ２を機器３０のメモリに蓄積している。データＤ２は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６に対応するデータブロックｙ１，ｙ２，ｙ３，ｙ４，ｙ５，ｙ６を含む。更に、機器４０は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６において取得されたデータＤ３を機器４０のメモリに蓄積している。データＤ３は、時間帯ｔ１，ｔ２，ｔ３，ｔ４，ｔ５，ｔ６に対応するデータブロックｘ１，ｘ２，ｘ３，ｘ４，ｙ５，ｙ６を含む。データブロックは、各機器のセンサにより取得された物理情報を表す値を含む。
【００２２】
なお、図１では、機器４０のエリア間の移動の様子を分かり易くするため、機器４０がエリアＲ１からエリアＲ２へ移動する直前に機器４０が保持していたデータＤ３ａを図示している。データＤ３ａは、時間帯ｔ１，ｔ２，ｔ３，ｔ４に対応するデータブロックｘ１，ｘ２，ｘ３，ｘ４を含む。
【００２３】
上記の「データブロックｘ１」などの表記では、同一の、または、近似する（例えば、所定の誤差の範囲内で一致する）値を含むデータブロックに対して同じ符号（例えば、「ｘ１」など）を付している。すなわち、同じ時間帯に同じエリアに存在していた機器では、同一の、または近似する内容のデータブロックを蓄積している（あるいは、同一の、または類似する内容のデータブロックを蓄積している可能性が高い）。同一の、または近似する内容のデータブロックをもつ機器が複数ある場合、そのうちの１つの機器から該当のデータブロックを取得すればよい。データ収集装置１０側で、他の機器から該当のデータブロックを取得しなくても、取得したデータブロックを基に、他の機器における当該データブロックの情報を補間可能だからである。
【００２４】
処理部１２は、抽出した複数の機器の中から、所定の条件に基づいて、時間帯およびエリアの組ごとに、時間帯およびエリアの組に対応するデータブロックの収集元の機器を割り当てる。所定の条件は、例えば、各機器のデータ送信に伴うコストの平準化である。コストには、各機器からのデータ収集時間や、各機器によるデータ送信の所要燃料（または所要電力）などが考えられる。また、所定の条件は、各機器のデータ送信後の残燃料（またはバッテリ残量）の平準化などでもよい。
【００２５】
一例として、各機器のデータ送信に伴うコスト（送信コスト）を平準化することを考える。データ収集装置１０は、当該コストを平準化して、データブロックを重複しないように収集する。本例の場合、期間Ｔ１およびエリアＲ１，Ｒ２に対して収集すべきデータは、エリアＲ１についてはデータブロックｘ１〜ｘ６であり、エリアＲ２についてはデータブロックｙ１〜ｙ６である。なお、ここでは、簡単のために、データブロック１つ当たりの収集に要するコストは、機器ごとに同じ（例えば、コスト＝１）であるとする。ただし、後述するように、当該コストは、機器の負荷などに応じて異なっていてもよい。また、処理部１２が以下に示す割り当てを行う前には、機器２０，３０，４０それぞれには、送信すべきデータブロックが割り当てられていない（各機器に対するコスト＝０である）とする。
【００２６】
第１に、時間帯ｔ１においてエリアＲ１には機器２０，４０が存在する。時間帯ｔ１およびエリアＲ１の組に対応するデータブロックｘ１は、機器２０，４０の両方により保持される。データブロックｘ１は、機器２０，４０の何れか１つから収集されればよい。機器２０，４０に対する割り当て済のデータブロックは存在しないから、この時点では、機器２０，４０に対するコストは何れも０である。このため、処理部１２は、機器２０，４０のどちらか一方を、データブロックｘ１の収集元として割り当てることができる。例えば、処理部１２は、データブロックｘ１の収集元として、機器２０を割り当てる。
【００２７】
ここで、あるデータブロックの収集元の機器の候補がＮ個（Ｎは２以上の整数）のとき、処理部１２は、収集元の機器の割り当て個数ｎを１≦ｎ≦Ｎ−１とすることができる（ｎはユーザによって予め設定されてもよい）。
【００２８】
第２に、時間帯ｔ１においてエリアＲ２には機器３０のみが存在する。したがって、時間帯ｔ１およびエリアＲ２の組に対応するデータブロックｙ１は、機器３０のみが保持するユニークなデータである。処理部１２は、データブロックｙ１の収集元として、機器３０を割り当てる。
【００２９】
第３に、時間帯ｔ２においてエリアＲ１には機器２０，４０が存在する。時間帯ｔ２およびエリアＲ１の組に対応するデータブロックｘ２は、機器２０，４０の両方により保持される。データブロックｘ２は、機器２０，４０の何れか１つから収集されればよい。この時点では、機器２０に対するコストは１であり、機器４０に対するコストは０である。このため、処理部１２は、データブロックｘ２の収集元として、機器４０を割り当てる。
【００３０】
第４に、時間帯ｔ２においてエリアＲ２には機器３０のみが存在する。時間帯ｔ２およびエリアＲ２の組に対応するデータブロックｙ２は、機器３０のみが保持するユニークなデータである。処理部１２は、データブロックｙ２の収集元として、機器３０を割り当てる。
【００３１】
第５に、時間帯ｔ３においてエリアＲ１には機器２０，４０が存在する。時間帯ｔ３およびエリアＲ１の組に対応するデータブロックｘ３は、機器２０，４０の両方により保持される。データブロックｘ３は、機器２０，４０の何れか１つから収集されればよい。この時点では、機器２０，４０に対するコストは何れも１である。このため、処理部１２は、機器２０，４０のどちらか一方を、データブロックｘ３の収集元として割り当てることができる。例えば、処理部１２は、データブロックｘ３の収集元として、機器２０を割り当てる。
【００３２】
第６に、時間帯ｔ３においてエリアＲ２には機器３０のみが存在する。時間帯ｔ３およびエリアＲ２の組に対応するデータブロックｙ３は、機器３０のみが保持するユニークなデータである。処理部１２は、データブロックｙ３の収集元として、機器３０を割り当てる。
【００３３】
第７に、時間帯ｔ４においてエリアＲ１には機器２０，４０が存在する。時間帯ｔ４およびエリアＲ１の組に対応するデータブロックｘ４は、機器２０，４０の両方により保持される。データブロックｘ４は、機器２０，４０の何れか１つから収集されればよい。この時点では、機器２０に対するコストは２であり、機器４０に対するコストは１である。このため、処理部１２は、データブロックｘ４の収集元として、機器４０を割り当てる。
【００３４】
第８に、時間帯ｔ４においてエリアＲ２には機器３０のみが存在する。時間帯ｔ４およびエリアＲ２の組に対応するデータブロックｙ４は、機器３０のみが保持するユニークなデータである。処理部１２は、データブロックｙ４の収集元として、機器３０を割り当てる。
【００３５】
第９に、時間帯ｔ５においてエリアＲ１には機器２０のみが存在する。時間帯ｔ５およびエリアＲ１の組に対応するデータブロックｘ５は、機器２０のみが保持するユニークなデータである。処理部１２は、データブロックｘ５の収集元として、機器２０を割り当てる。
【００３６】
第１０に、時間帯ｔ５においてエリアＲ２には機器３０，４０が存在する。時間帯ｔ５およびエリアＲ２の組に対応するデータブロックｙ５は、機器３０，４０の両方により保持される。データブロックｙ５は、機器３０，４０の何れか１つから収集されればよい。この時点では、機器３０に対するコストは４であり、機器４０に対するコストは２である。このため、処理部１２は、データブロックｙ５の収集元として、機器４０を割り当てる。
【００３７】
第１１に、時間帯ｔ６においてエリアＲ１には機器２０のみが存在する。時間帯ｔ６およびエリアＲ１の組に対応するデータブロックｘ６は、機器２０のみが保持するユニークなデータである。処理部１２は、データブロックｘ６の収集元として、機器２０を割り当てる。
【００３８】
第１２に、時間帯ｔ６においてエリアＲ２には機器３０，４０が存在する。時間帯ｔ６およびエリアＲ２の組に対応するデータブロックｙ６は、機器３０，４０の両方により保持される。データブロックｙ６は、機器３０，４０の何れか１つから収集されればよい。この時点では、機器３０に対するコストは４であり、機器４０に対するコストは３である。このため、処理部１２は、データブロックｙ６の収集元として、機器４０を割り当てる。
【００３９】
こうして、データブロックｘ１，ｘ３，ｘ５，ｘ６の収集元として、機器２０が割り当てられる。よって、機器２０に対するコストＣ１は４である。データブロックｙ１，ｙ２，ｙ３，ｙ４の収集元として、機器３０が割り当てられる。機器３０に対するコストＣ２は４である。データブロックｘ２，ｘ４，ｙ５，ｙ６の収集元として、機器４０が割り当てられる。機器４０に対するコストＣ３は４である。
【００４０】
処理部１２は、時間帯およびエリアの組ごとに、収集元として割り当てた機器からデータブロックを収集する。例えば、処理部１２は、データブロックｘ１，ｘ３，ｘ５，ｘ６の送信を機器２０に要求し、機器２０により送信されたデータブロックｘ１，ｘ３，ｘ５，ｘ６を受信する。また、処理部１２は、データブロックｙ１，ｙ２，ｙ３，ｙ４の送信を機器３０に要求し、機器３０により送信されたデータブロックｙ１，ｙ２，ｙ３，ｙ４を受信する。更に、処理部１２は、データブロックｘ２，ｘ４，ｙ５，ｙ６の送信を機器４０に要求し、機器４０により送信されたデータブロックｘ２，ｘ４，ｙ５，ｙ６を受信する。
【００４１】
前述のように、処理部１２は、収集したデータブロックにより、各機器の不足しているデータブロックを所定のアルゴリズムにより補間可能である。例えば、処理部１２は、機器２０における時間帯ｔ２，ｔ４のデータブロックを、機器４０から収集したデータブロックｘ２，ｘ４により補間する。また、処理部１２は、機器３０における時間帯ｔ５，ｔ６のデータブロックを、機器４０から収集したデータブロックｙ５，ｙ６により補間する。更に、処理部１２は、機器４０における時間帯ｔ１，ｔ３のデータブロックを、機器２０から収集したデータブロックｘ１，ｘ３により補間する。こうして、処理部１２は、データＤ１，Ｄ２，Ｄ３を取得し、データＤ１，Ｄ２，Ｄ３に対する分析が可能になる。
【００４２】
データ収集装置１０によれば、ユーザからの要求に基づいて、データの取得対象の期間および複数のエリアが特定される。当該期間のうちのデータの取得単位の時間帯ごとに各エリアに存在していた複数の機器が抽出される。抽出した複数の機器の中から、所定の条件に基づいて、時間帯およびエリアの組ごとに、時間帯およびエリアの組に対応するデータブロックの収集元の機器が割り当てられる。時間帯およびエリアの組ごとに、収集元として割り当てた機器からデータブロックが収集される。
【００４３】
これにより、重複する情報の収集を省くことができる。
ここで、第１の実施の形態の例のように、データの収集元の機器の少なくとも一部が移動する可能性がある場合、収集元の機器を、識別番号などによって固定的に間引いてしまうと、ある時間帯のあるエリアにおけるデータブロックの収集漏れが生じる可能性がある。上記の例でいえば、時間帯ｔ５，ｔ６の機器２０からのデータ収集を間引いたり、時間帯ｔ１〜ｔ４の機器３０からのデータ収集を間引いたりしてしまうと、機器２０のみ、または、機器３０のみが保持するデータブロックを収集できず、その後の補間もできない。
【００４４】
例えば、データの収集元の機器の少なくとも一部が移動する可能性がある場合、対象の期間Ｔ１において対象のエリアＲ１，Ｒ２に存在した機器２０，３０，４０から全てのデータＤ１，Ｄ２，Ｄ３を収集することが考えられる。しかし、前述のように、データＤ１，Ｄ２，Ｄ３には、重複するデータブロックが存在しており、全てのデータＤ１，Ｄ２，Ｄ３を機器２０，３０，４０から収集するのは非効率である。
【００４５】
そこで、データ収集装置１０は、データの取得単位の時間帯およびエリアの組ごとに、当該組に対応するデータブロックの収集元の機器を割り当てることで、重複する情報の収集を省くことができる。重複する情報の収集の省略は、データ収集の所要時間の短縮、データ収集に伴う各機器のデータ送信負荷の軽減に寄与する。
【００４６】
また、データ収集装置１０は、上記のように、各機器のコストを平準化して、データブロックの収集元の機器を割り当てることができる。コストとして、各機器からのデータ収集時間を用いることで、各機器からのデータ収集時間を平準化し、全体としてのデータ収集時間を短縮することができる。その結果、例えば、収集したデータの分析などを迅速に開始可能になる。また、コストとして、各機器の消費燃料（または消費電力）を用いることで、各機器によるデータ送信に伴う消費燃料（または消費電力）を平準化することも可能である。更に、データ収集装置１０は、各機器の残燃料（またはバッテリ残量）を平準化するように、データブロックの収集元の機器を割り当ててもよい。
【００４７】
更に、データ収集装置１０は、各機器の負荷などに応じて、１つのデータブロックの収集当たりのコスト（単位コスト）を計算し、計算した機器毎の単位コストに基づいて、各機器のコストを平準化するように、データブロックの収集元の機器を割り当ててもよい。
【００４８】
以下では、更に具体的なデータ収集システムを例示して、データ収集装置１０の機能をより詳細に説明する。
［第２の実施の形態］
次に、第２の実施の形態を説明する。
【００４９】
図２は、第２の実施の形態のデータ収集システムの例を示す図である。
第２の実施の形態のデータ収集システムは、サーバ１００およびエッジ２００，３００，４００，…を有する。サーバ１００は、ネットワーク５０に接続されている。ネットワーク５０は、例えば、ＷＡＮ（Wide Area Network）である。ネットワーク５０には、基地局５１，５２，…が接続されている。基地局５１，５２，…は、各基地局が属するエリアに存在するエッジと無線通信する。サーバ１００と各エッジとは、ネットワーク５０および何れかのエリアにおける基地局を介して通信可能である。
【００５０】
サーバ１００は、エッジ２００，３００，４００，…により取得されたデータを、エッジ２００，３００，４００，…から収集し、分析するサーバコンピュータである。サーバ１００は、ユーザの分析要求に応じて、データ収集の対象とする期間およびエリアを特定し、特定した期間およびエリアに関するデータを、エッジ２００，３００，４００，…から収集する。第２の実施の形態では、エッジ２００，３００，４００，…により取得されるデータとして、降雨量のデータを例示する。
【００５１】
サーバ１００は、第１の実施の形態のデータ収集装置１０の一例である。
エッジ２００，３００，４００，…は、車両などの移動体、または、移動体に搭載された装置である。エッジ２００，３００，４００，…それぞれは、雨滴センサを備え、雨滴センサを用いて降雨量のデータを取得する。エッジ２００，３００，４００，…は、無線通信機能を備え、自身が存在するエリアの基地局と無線で通信する。エッジ２００，３００，４００，…は、サーバ１００からの要求に応じて、取得した降雨量のデータをサーバ１００に送信する。
【００５２】
エッジ２００，３００，４００，…は、第１の実施の形態の機器２０，３０，４０の一例である。
図３は、エリアの例を示す図である。
【００５３】
地域６０は、ユーザの分析要求で指定される、分析対象の地域である。地域６０内に含まれるエリアは予め定められる。例えば、サーバ１００は、地域６０内における、１辺が１ｋｍの正方形の区画に分割された１区画をデータ収集の対象の１つのエリアとする。ただし、１ｋｍは一例であり、他の長さでもよい。地域６０は、複数のエリアを含む。複数のエリアは、例えば、「エリアＡ」、「エリアＢ」、…のように識別される。図３では、ある時間帯において、エリアＡにエッジ２００，３００，４００が存在している例が示されている。
【００５４】
一例として、サーバ１００は、地域６０に含まれる各エリアにおける単位時間（例えば、１時間）当たりの降雨量を分析する。
図４は、エリアの降雨量の分析例を示す図である。
【００５５】
例えば、サーバ１００は、エリアＡの１７時０１分〜１８時００分の期間における１時間当たりの降雨量（単位は、ｍｍ／ｈ）を次のように分析する。
サーバ１００は、１時間の期間を単位時間（例えば、１分間）の時間帯に区切り、各時間帯においてエリアＡに存在したエッジで計測された降雨量（単位は、ｍｍ／ｓ）を取得する。このとき、後述するようにサーバ１００は、各時間帯において、エリアＡに存在した少なくとも１つのエッジから降雨量のデータを収集することで、当該時間帯における他のエッジの降雨量を補間する。
【００５６】
例えば、当該補間の結果、サーバ１００は、エリアＡのデータＤＡ１を得る。データＤＡ１は、１７時０１分〜１８時００分における１分間隔ごとの時間帯においてエリアＡに存在した各エッジの降雨量を示す。
【００５７】
サーバ１００は、各時間帯において、エリアＡに存在した各エッジの降雨量の平均を求める。そして、サーバ１００は、各時間帯において求めた降雨量の平均を累積することで、エリアＡの１７時０１分〜１８時００分の期間における１時間当たりの降雨量を求める。サーバ１００は、他のエリアについても、エリアＡと同様にして、１時間当たりの降雨量を求めることができる。
【００５８】
図５は、サーバのハードウェア例を示すブロック図である。
サーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６およびＮＩＣ（Network Interface Card）１０７を有する。なお、ＣＰＵ１０１は、第１の実施の形態の処理部１２に対応する。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１に対応する。
【００５９】
ＣＰＵ１０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを含んでもよい。また、サーバ１００は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【００６０】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００６１】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００６２】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、サーバ１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなど、任意の種類のディスプレイを用いることができる。
【００６３】
入力信号処理部１０５は、サーバ１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ１００に、複数の種類の入力デバイスが接続されていてもよい。
【００６４】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００６５】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００６６】
ＮＩＣ１０７は、ネットワーク５０に接続され、ネットワーク５０を介して他のコンピュータと通信を行うインタフェースである。ＮＩＣ１０７は、例えば、ネットワーク５０に属するスイッチやルータなどの通信装置とケーブルで接続される。
【００６７】
図６は、エッジのハードウェア例を示すブロック図である。
エッジ２００は、ＣＰＵ２０１、ＲＡＭ２０２、フラッシュメモリ２０３、雨滴センサ２０４および無線部２０５を有する。
【００６８】
ＣＰＵ２０１は、プログラムの命令を実行するプロセッサである。ＣＰＵ２０１は、フラッシュメモリ２０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ２０２にロードし、プログラムを実行する。なお、ＣＰＵ２０１は複数のプロセッサコアを含んでもよい。また、エッジ２００は複数のプロセッサを有してもよい。
【００６９】
ＲＡＭ２０２は、ＣＰＵ２０１が実行するプログラムやＣＰＵ２０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。
フラッシュメモリ２０３は、ファームウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。
【００７０】
雨滴センサ２０４は、エッジ２００の周囲における降雨量を検出するセンサである。雨滴センサ２０４は、検出した降雨量のデータをＲＡＭ２０２またはフラッシュメモリ２０３に格納する。
【００７１】
無線部２０５は、基地局５１，５２，…と無線で接続可能な無線通信インタフェースである。無線部２０５は、エッジ２００が存在するエリアをカバーする基地局を介して、サーバ１００と通信する。
【００７２】
なお、エッジ２００自身が移動する場合、エッジ２００はモータやエンジンなどの移動用の機構を有するが、図６では図示を省略している。
エッジ３００，４００，…もエッジ２００と同様のハードウェアにより実現される。
【００７３】
図７は、サーバの機能例を示すブロック図である。
サーバ１００は、メタ情報記憶部１２０、収集情報記憶部１３０、選択部１４０、収集部１５０および分析部１６０を有する。メタ情報記憶部１２０および収集情報記憶部１３０は、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域により実現される。選択部１４０、収集部１５０および分析部１６０は、ＲＡＭ１０２に記憶されたプログラムがＣＰＵ１０１により実行されることで実現される。
【００７４】
メタ情報記憶部１２０は、メタ情報を記憶する。メタ情報は、各エッジの位置情報の履歴および負荷情報の履歴を含む。各エッジの位置情報および負荷情報は、各エッジから定期的に取得される。負荷情報は、例えば、各エッジのＣＰＵの使用率などである。メタ情報は、収集部１５０により取得されて、メタ情報記憶部１２０に格納されてもよい。
【００７５】
収集情報記憶部１３０は、各エッジの雨滴センサにより計測された降雨量のデータを記憶する。降雨量のデータは、ユーザの分析要求に応じて、収集部１５０により収集され、収集情報記憶部１３０に格納される。
【００７６】
選択部１４０は、降雨量の分析要求のユーザによる入力を受け付ける。選択部１４０は、分析要求に基づいて、降雨量のデータの取得対象の期間および取得対象の複数のエリアを特定する。選択部１４０は、降雨量のデータの取得対象の期間のうち、データの取得単位の時間帯（例えば、１分間の時間帯）ごとに、特定した各エリアに存在していた複数のエッジを抽出する。選択部１４０は、抽出した複数のエッジの中から、所定の条件に基づいて、降雨量のデータの取得対象の期間における時間帯およびエリアの組ごとに、当該時間帯およびエリアの組に対応するデータブロックの収集元のエッジを割り当てる。
【００７７】
収集部１５０は、選択部１４０による割り当て結果に基づいて、各エッジから降雨量のデータを収集し、収集情報記憶部１３０に格納する。収集部１５０は、選択部１４０によって時間帯およびエリアの組ごとに、収集元として割り当てられたエッジから、当該時間帯およびエリアの組に対応するデータブロックを収集する。収集部１５０は、該当の時間帯およびエリアの組に対して、収集元として割り当てられていないエッジからは、当該時間帯およびエリアの組に対応するデータブロックを収集しない。すなわち、収集部１５０は、選択部１４０によって時間帯およびエリアの組ごとに、収集元として割り当てられたエッジのみから、当該時間帯およびエリアの組に対応するデータブロックを収集する。
【００７８】
分析部１６０は、収集情報記憶部１３０に記憶された降雨量のデータに基づいて、ユーザの分析要求により要求された各エリアの所定時間単位（例えば、１時間単位）の降雨量を分析する。分析部１６０は、ディスプレイ１１１に分析結果を出力し、ユーザに提示する。あるいは、分析部１６０は、ネットワーク５０などを介して、他のコンピュータに分析結果を送信し、他のコンピュータにより分析結果を表示させることで、分析結果をユーザに提示してもよい。
【００７９】
図８は、エッジの機能例を示すブロック図である。
エッジ２００は、センサ情報記憶部２１０、前処理結果記憶部２２０、前処理部２３０およびハッシュ化処理部２４０を有する。センサ情報記憶部２１０および前処理結果記憶部２２０は、ＲＡＭ２０２またはフラッシュメモリ２０３の記憶領域により実現される。前処理部２３０およびハッシュ化処理部２４０は、ＲＡＭ２０２に記憶されたプログラムがＣＰＵ２０１により実行されることで実現される。
【００８０】
センサ情報記憶部２１０は、雨滴センサ２０４により取得された降雨量のデータ（センサ情報）を記憶する。雨滴センサ２０４により取得される降雨量のデータは、例えば、１秒毎の降雨量（ｍｍ／ｓ）である。
【００８１】
前処理結果記憶部２２０は、前処理部２３０によりセンサ情報記憶部２１０に記憶された降雨量のデータが前処理された結果（前処理結果）を記憶する。前処理では、センサ情報が、１分間隔での平均降雨量（ｍｍ／ｓ）とし、更に、所定の精度を満たすように丸められる。
【００８２】
前処理部２３０は、サーバ１００からの要求に応じて、センサ情報記憶部２１０に記憶されたセンサ情報に対する前処理を実行する。サーバ１００からの要求は、前処理結果のうち、送信すべき時間帯およびエリアの指定（後述するようにハッシュ値による指定）を含む。前処理部２３０は、サーバ１００からの要求に応じた時間帯およびエリアに対応するセンサ情報に対して前処理を実行し、前処理結果を、サーバ１００に送信する。
【００８３】
ハッシュ化処理部２４０は、サーバ１００からの要求に応じて、前処理結果記憶部２２０に記憶された前処理結果のうちの一部をハッシュ化して、サーバ１００に送信する。
エッジ３００，４００，…もエッジ２００と同様の機能を有する。
【００８４】
図９は、データの収集および分析の流れの例を示す図である。
センサ情報ＤＥ１，ＤＥ２は、エッジ（例えば、第１のエッジおよび第２のエッジそれぞれ）が雨滴センサにより取得した降雨量（秒刻み）の情報である。
【００８５】
サーバ１００は、各エッジから次のようにデータを収集する。
第１のエッジは、サーバ１００の要求に応じて、センサ情報ＤＥ１を前処理して、前処理結果ＤＰ１を生成する。前述のように、前処理結果ＤＰ１は、センサ情報ＤＥ１の降雨量を、分刻みで平均を取って丸めたものである。第１のエッジは、ネットワーク５０を介して、前処理結果ＤＰ１をサーバ１００に送信する。
【００８６】
第２のエッジは、サーバ１００の要求に応じて、センサ情報ＤＥ２を前処理して、前処理結果ＤＰ２を生成する。第２のエッジは、ネットワーク５０を介して、前処理結果ＤＰ２をサーバ１００に送信する。
【００８７】
そして、サーバ１００は、各エッジから収集したデータに基づいて、各エッジの未収集のデータを補間する。サーバ１００は、補間結果に基づいて、例えば、ＭａｐＲｅｄｕｃｅと呼ばれるフレームワークを用いて、図４で例示した分析を行う。サーバ１００は、ＭａｐＲｅｄｕｃｅにおけるＭａｐ処理やＲｅｄｕｃｅ処理を行う複数のノードと連携して、収集したデータを分散処理する。例えば、Ｍａｐ処理では、Ｍａｐ処理を行うノードが前処理結果ＤＰ１，ＤＰ２における各時間帯（例えば、１分間隔）について、エリアをｋｅｙ、降雨量をｖａｌｕｅとして、Ｒｅｄｕｃｅ処理を行うノードに、同一ｋｅｙのデータを集約する。Ｒｅｄｕｃｅ処理を行うノードは、各時間帯での該当ｋｅｙ（エリア）のｖａｌｕｅ（降雨量）の平均（ａｖｅｒａｇｅ（ｋｅｙ，ｖａｌｕｅ））を求める。更に、サーバ１００は、該当のエリアについて、各時間帯の平均降雨量を１時間に亘って累積することで、当該エリアにおける１時間当たりの降雨量（ｍｍ／ｈ）を求める。
【００８８】
図１０は、データの収集および分析のトータル時間の例を示す図である。
図９に示したデータの収集から分析までの一連の流れが完了するまでの時間は、前処理時間ｔ１、ネットワーク転送時間ｔ２、蓄積時間ｔ３および分析時間ｔ４に区分される。
【００８９】
前処理時間ｔ１は、各エッジによる前処理の所要時間である。
ネットワーク転送時間ｔ２は、各エッジからサーバ１００への前処理結果の送信の所要時間である。
【００９０】
蓄積時間ｔ３は、サーバ１００が各エッジから収集した前処理結果を蓄積するための所要時間である。
分析時間ｔ４は、サーバ１００が各エッジから収集したデータを分析するための所要時間である。
【００９１】
ユーザ指定の期間や地域を基準として、対象となるエリアに存在する各エッジから、各エッジが保持する対象期間の全てのデータを収集していると、前処理時間ｔ１やネットワーク転送時間ｔ２に時間がかかり、分析完了が遅延する可能性がある。そこで、サーバ１００は、あるエッジが保持するデータの値に近似する値をもつ他のエッジのデータ（類似データと称する）をデータ収集の対象外とし、当該他のエッジに関して、サーバ１００側で類似データを補間する。
【００９２】
図１１は、類似データの間引きおよび補間の例を示す図である。
グラフ７１は、第１のエッジ（エッジＥ１とする）により取得された降雨量のデータ（前処理結果）を示す。グラフ７２は、第２のエッジ（エッジＥ２とする）により取得された降雨量のデータ（前処理結果）を示す。
【００９３】
グラフ７１の範囲７１ａと、グラフ７２の範囲７２ａとは、データ収集対象期間における同じ時間範囲のデータである。範囲７１ａ，７２ａで示される時間範囲において、エッジＥ１，Ｅ２が両方とも同じエリアに存在していた場合、範囲７１ａ，７２ａにおける両データには相関（類似性）がある。
【００９４】
そこで、サーバ１００は、エッジＥ１が保持するデータＤ１０およびエッジＥ２が保持するデータＤ２０のうち、互いに類似する類似データＤ１１，Ｄ２１を抽出する。例えば、サーバ１００は、各エッジが各時間帯において存在していたエリアの履歴に基づいて、同一時間帯に同一エリアに存在する複数のエッジは、該当の時間帯およびエリアの組に対して互いに類似データをもつと判断する。サーバ１００は、例えば、エッジＥ１，Ｅ２のうち、エッジＥ１のみを類似データＤ１１の収集元とし、エッジＥ２を類似データＤ２１の収集元としない。
【００９５】
サーバ１００は、類似データＤ１１をエッジＥ１から収集することで、類似データＤ２１をエッジＥ２から収集しなくても、類似データＤ１１に基づき、類似データＤ２１に対応する補間データＤ２１ａを推測し、生成することができる。こうして、サーバ１００は、エッジＥ２における類似データＤ２１を間引いて、データ収集を行い、間引いた類似データを補間データＤ２１ａで補間することで、エッジＥ２における前処理結果のデータＤ２０ａを取得する。サーバ１００は、エッジＥ１から収集したデータＤ１０およびエッジＥ２のデータＤ２０ａに基づいて、分析処理を行う。
【００９６】
図１２は、エッジ履歴テーブルの例を示す図である。
エッジ履歴テーブル１２１，１２２，１２３，…は、メタ情報記憶部１２０に格納される。エッジ履歴テーブル１２１，１２２，１２３，…は、エッジごとの履歴情報（メタ情報）である。例えば、エッジ履歴テーブル１２１，１２２，１２３，…は、エッジごとに作成される。以下では、エッジ履歴テーブル１２１を例示して説明するが、エッジ履歴テーブル１２２，１２３，…も同様のデータ構造である。
【００９７】
エッジ履歴テーブル１２１は、エッジＩＤ（IDentifier）、時刻、位置情報および負荷情報の項目を含む。エッジＩＤの項目には、エッジの識別情報（エッジＩＤ）が登録される。時刻の項目には、時刻が登録される。位置情報の項目には、当該時刻においてエッジが存在したエリアが登録される。負荷情報の項目には、当該時刻におけるエッジのＣＰＵ使用率が登録される。
【００９８】
例えば、エッジ履歴テーブル１２１には、エッジＩＤが「Ｅ１」、時刻が「１７：０１」、位置情報が「Ａ」、負荷情報が「７０％」というレコードが登録されている。このレコードは、エッジＩＤ「Ｅ１」で識別されるエッジ（エッジＥ１）が、１７時０１分に、エリアＡに存在しており、ＣＰＵ使用率が７０％であったことを示す。例えば、エッジ履歴テーブル１２１における最新のレコードは、該当のエッジの最新の存在位置、および、負荷を示すことになる。
【００９９】
図１３は、ハッシュ値テーブルの例を示す図である。
ハッシュ値テーブル１２１ａは、エッジ履歴テーブル１２１，１２２，１２３，…に基づいて、選択部１４０により生成され、メタ情報記憶部１２０に格納される。ハッシュ値テーブル１２１ａには、同一時間帯に同一エリアに存在したエッジを特定するためのハッシュ値が登録される。
【０１００】
ハッシュ値テーブル１２１ａは、タイムスロットＩＤ、エッジＥ１、エッジＥ２、エッジＥ３、…の項目を含む。タイムスロットＩＤの項目には、データ収集対象期間における時間帯を区別するための識別情報（タイムスロットＩＤ）が登録される。例えば、データ収集対象期間が１７時０１分、１７時０２分、…と１分間隔の時間帯に区切られる場合、１７時０１分、１７時０２分、…それぞれに対して、タイムスロットＩＤ「１」、「２」、…となる。エッジＥ１，Ｅ２，Ｅ３，…の各項目には、エッジＥ１，Ｅ２，Ｅ３，…それぞれの該当のタイムスロットＩＤに対応するハッシュ値が登録される。
【０１０１】
ここで、ハッシュ値は、時刻およびエリアをハッシュ関数に対する入力として求められる。ハッシュ関数ｈは、ｈ＝ｈ（時刻、エリア）と表される。
選択部１４０は、２進数で表されたハッシュ値の排他的論理和をエッジ間で取り、排他的論理和の結果における各ビットの和が０であれば、両エッジが当該時間帯において、互いに類似データを保持し合うと判断する。そうでなければ、両エッジは当該時間帯において互いに類似データを保持し合わない。選択部１４０は、排他的論理和の結果における各ビットの和が０でなければ、両エッジが当該時間帯において、互いに類似データを保持し合わないと判断する。
【０１０２】
図１４は、センサデータの例を示す図である。
センサデータ２１１は、センサ情報記憶部２１０に格納される。センサデータ２１１は、時刻、位置情報および降雨量の項目を含む。時刻の項目には、秒刻みの時刻が登録される。位置情報の項目には、当該時刻においてエッジ２００が存在したエリアが登録される。降雨量の項目には、当該時刻における降雨量（ｍｍ／ｓ）が登録される。
【０１０３】
例えば、センサデータ２１１には、時刻が「１７：０１：０１」、位置情報が「Ａ」、降雨量が「０．０５」というレコードが登録される。このレコードは、１７時０１分０１秒において、エッジ２００がエリアＡに存在し、当該時刻に対して雨滴センサにより降雨量０．０５ｍｍ／ｓが計測されたことを示す。
【０１０４】
図１５は、前処理結果データの例を示す図である。
前処理結果データ２２１は、センサデータ２１１に基づいて前処理部２３０により生成され、前処理結果記憶部２２０に格納される。前処理結果データ２２１は、時刻、位置情報および降雨量の項目を含む。時刻の項目には、分刻みの時刻が登録される。位置情報の項目には、当該時刻においてエッジ２００が存在したエリアが登録される。降雨量の項目には、当該時刻における降雨量（ｍｍ／ｓ）が登録される。
【０１０５】
例えば、前処理結果データ２２１には、時刻が「１７：０１」、位置情報が「Ａ」、降雨量が「０．０５」というレコードが登録される。このレコードは、１７時０１分において、エッジ２００がエリアＡに存在し、１７時０１分０１秒〜１７時０２分００秒までの１分間の平均の降雨量として、０．０５ｍｍ／ｓが計測されたことを示す。
【０１０６】
なお、前処理部２３０は、前処理において１分刻みの時間帯で降雨量を平均化する際、センサデータ２１１における各エッジの当該時間帯での１秒刻みの存在エリアが複数になることもある。この場合、例えば、当該時間帯において、存在したエリア毎に、降雨量を平均化することが考えられる。あるいは、当該時間帯での存在エリアの検出数が最大のエリアを、当該時間帯での当該エッジの存在エリアとみなしてもよい。
【０１０７】
図１６は、収集データの例を示す図である。
収集データ１３１，１３２，１３３，…は、収集情報記憶部１３０に格納される。収集データ１３１，１３２，１３３，…は、エッジごとの収集情報である。例えば、収集データ１３１，１３２，１３３，…は、エッジごとに作成される。以下では、収集データ１３１を例示して説明するが、収集データ１３１，１３２，１３３，…も同様のデータ構造である。
【０１０８】
収集データ１３１は、エッジＩＤ、時刻、エリアおよび降雨量の項目を含む。エッジＩＤの項目には、エッジＩＤが登録される。時刻の項目には、時刻が登録される。エリアの項目には、当該時刻においてエッジＩＤで示されるエッジが存在していたエリアが登録される。降雨量の項目には、当該時刻における降雨量（ｍｍ／ｓ）が登録される。
【０１０９】
例えば、収集データ１３１には、エッジＩＤが「Ｅ１」、時刻が「１７：０１」、エリアが「Ａ」、降雨量が「０．０５」というレコードが登録される。このレコードは、１７時０１分において、エッジＥ１がエリアＡに存在し、１７時０１分０１秒〜１７時０２分００秒までの１分間の平均の降雨量として、０．０５ｍｍ／ｓがエッジＥ１により計測されたことを示す。
【０１１０】
ここで、選択部１４０は、ハッシュ値テーブル１２１ａに基づいて、互いに類似データを保持する複数のエッジと、該当のエッジのみが保持するユニークなデータ（ユニークデータ）とを区別する。そして、エッジが保持する単位データサイズとデータ収集時間に関する実測情報と、現在のエッジの負荷情報とに基づいて、当該エッジを収集元として割り当てる類似データの数に応じた当該エッジからのデータ収集時間を、エッジごとに推測する。選択部１４０は、エッジ間でデータ収集時間が平準化するように各エッジに対して割り当てる類似データの数を調整する。
【０１１１】
データ収集時間は、図１０で説明したように、前処理時間ｔ１とネットワーク転送時間ｔ２との合計である。そこで、選択部１４０は、エッジごとの前処理時間の一単位とネットワーク転送時間の一単位とを次のように求める。
【０１１２】
図１７は、エッジの前処理時間の推測例を示す図である。
選択部１４０は、前処理対象の単位ブロック当たりの、エッジのＣＰＵ使用率に応じた前処理時間の統計情報を、各エッジから事前に収集しておく。前処理対象の単位ブロックのサイズは、例えば、１秒刻みの降雨量のデータの１分間分のサイズである。そして、選択部１４０は、データ収集時には、該当のエッジの現在のＣＰＵ使用率から該当のエッジによる前処理時間を見積もる。例えば、選択部１４０は、エッジのＣＰＵ使用率に対する前処理時間（ミリ秒（ｍｓ））の関係８１を示す情報を、エッジごとに予め生成し、メタ情報記憶部１２０に格納しておく。
【０１１３】
図１７の例では、例えば、データ収集時に、関係８１に対応するエッジのＣＰＵ使用率が７０％の場合、当該エッジによる前処理対象の単位ブロック当たりの前処理時間は１０ｍｓである。
【０１１４】
図１８は、エッジの転送時間の推測例を示す図である。
選択部１４０は、エリアごとに、転送対象データサイズ（転送対象の単位データブロックのサイズ）に対するネットワーク転送時間の統計情報を、各エッジから事前に収集しておく。転送対象の単位データブロックのサイズは、例えば、１分間の平均の降雨量のデータに相当するサイズである。そして、転送対象データサイズに対するネットワーク転送時間の関係８２を示す情報を、エッジおよびエリアの組ごとに予め生成し、メタ情報記憶部１２０に格納しておく。
【０１１５】
図１８の例では、例えば、関係８２に対応するエリアにおいて、関係８２に対応するエッジによるサーバ１００への転送対象データサイズが１０ＫＢの場合、データ転送時間が１０ｍｓであることを示す。
【０１１６】
図１９は、エッジからのデータ収集時間の計算例を示す図である。
選択部１４０は、各エッジに対して割り当てた類似データの数に対するデータ収集時間ｙｉを、式（１）を用いてエッジごとに求める。
【０１１７】
ｙｉ＝ａｉｘｉ＋ｂｉ    …（１）
ここで、ｉは、エッジＩＤである。
ｙｉは、エッジＩＤ「ｉ」のエッジ（エッジｉとする）からのデータ収集時間である。
【０１１８】
ａｉは、エッジｉについて、類似データを１つ割り当てるごとのデータ収集時間の増分である。ａｉ＝（前処理対象の単位ブロック当たりの前処理時間）＋（当該単位ブロックに対する前処理結果のネットワーク転送時間）である。
【０１１９】
ｂｉは、エッジｉが保持するユニークデータ（前処理結果のデータである）の収集時間である。ｂｉ＝（ユニークデータの個数）×ａｉである。
すなわち、式（１）は、エッジｉから収集する類似データの数をｘｉ個としたときに、エッジｉからのデータ収集にかかる時間を示す。
【０１２０】
図１９におけるグラフ８３は、式（１）に対応するグラフの一例である。
図２０は、エッジに対する類似データの割り当て例を示す図である。
図２０では、エッジＥ１，Ｅ２，Ｅ３に対して、タイムスロットＩＤ「１」〜「５」の類似データの割り当てを行う場合を例示する。図２０の例では、タイムスロットＩＤ「１」〜「５」の各時間帯において、エッジＥ１，Ｅ２，Ｅ３が相互に類似データを保持するものとする。
【０１２１】
ｂＥ１は、エッジＥ１が保持するユニークデータの収集時間である。ｂＥ２は、エッジＥ２が保持するユニークデータの収集時間である。ｂＥ３は、エッジＥ３が保持するユニークデータの収集時間である。選択部１４０は、図１７，図１８で例示したエッジごとの関係８１，８２に基づいて、エッジＥ１に対してａＥ１を計算する。同様に、選択部１４０は、エッジＥ２に対してａＥ２を計算し、エッジＥ３に対してａＥ３を計算する。
【０１２２】
選択部１４０は、タイムスロットＩＤ「１」〜「５」それぞれの類似データをエッジＥ１，Ｅ２，Ｅ３に次のように割り当てる。なお、図２０における白抜きの矩形内の「１」、「２」、…、「５」の数値は、タイムスロットＩＤを示す。
【０１２３】
第１に、選択部１４０は、タイムスロットＩＤ「１」の類似データを、エッジＥ１，Ｅ２，Ｅ３それぞれに割り当てた場合のデータ収集時間を推定する。エッジＥ１に対してはｙＥ１＝ａＥ１＋ｂＥ１である。エッジＥ２に対してはｙＥ２＝ａＥ２＋ｂＥ２である。エッジＥ３に対してはｙＥ３＝ａＥ３＋ｂＥ３である。選択部１４０は、これら３つの値を比較する。３つの値のうちｙＥ１＝ａＥ１＋ｂＥ１が最小である。すると、選択部１４０は、タイムスロットＩＤ「１」の類似データを、エッジＥ１に割り当てる。
【０１２４】
第２に、選択部１４０は、タイムスロットＩＤ「２」の類似データを、エッジＥ１，Ｅ２，Ｅ３それぞれに割り当てた場合のデータ収集時間を推定する。エッジＥ１に対してはｙＥ１＝２ａＥ１＋ｂＥ１である。エッジＥ２に対してはｙＥ２＝ａＥ２＋ｂＥ２である。エッジＥ３に対してはｙＥ３＝ａＥ３＋ｂＥ３である。選択部１４０は、これら３つの値を比較する。３つの値のうちｙＥ２＝ａＥ２＋ｂＥ２が最小である。すると、選択部１４０は、タイムスロットＩＤ「２」の類似データを、エッジＥ２に割り当てる。
【０１２５】
第３に、選択部１４０は、タイムスロットＩＤ「３」の類似データを、エッジＥ１，Ｅ２，Ｅ３それぞれに割り当てた場合のデータ収集時間を推定する。エッジＥ１に対してはｙＥ１＝２ａＥ１＋ｂＥ１である。エッジＥ２に対してはｙＥ２＝２ａＥ２＋ｂＥ２である。エッジＥ３に対してはｙＥ３＝ａＥ３＋ｂＥ３である。選択部１４０は、これら３つの値を比較する。３つの値のうちｙＥ１＝２ａＥ１＋ｂＥ２が最小である。すると、選択部１４０は、タイムスロットＩＤ「３」の類似データを、エッジＥ１に割り当てる。
【０１２６】
第４に、選択部１４０は、タイムスロットＩＤ「４」の類似データを、エッジＥ１，Ｅ２，Ｅ３それぞれに割り当てた場合のデータ収集時間を推定する。エッジＥ１に対してはｙＥ１＝３ａＥ１＋ｂＥ１である。エッジＥ２に対してはｙＥ２＝２ａＥ２＋ｂＥ２である。エッジＥ３に対してはｙＥ３＝ａＥ３＋ｂＥ３である。選択部１４０は、これら３つの値を比較する。３つの値のうちｙＥ３＝ａＥ３＋ｂＥ３が最小である。すると、選択部１４０は、タイムスロットＩＤ「４」の類似データを、エッジＥ３に割り当てる。
【０１２７】
第５に、選択部１４０は、タイムスロットＩＤ「５」の類似データを、エッジＥ１，Ｅ２，Ｅ３それぞれに割り当てた場合のデータ収集時間を推定する。エッジＥ１に対してはｙＥ１＝３ａＥ１＋ｂＥ１である。エッジＥ２に対してはｙＥ２＝２ａＥ２＋ｂＥ２である。エッジＥ３に対してはｙＥ３＝２ａＥ３＋ｂＥ３である。選択部１４０は、これら３つの値を比較する。３つの値のうちｙＥ１＝３ａＥ１＋ｂＥ１が最小である。すると、選択部１４０は、タイムスロットＩＤ「５」の類似データを、エッジＥ１に割り当てる。
【０１２８】
バー９１は、エッジＥ１に対する当該割り当て後のデータ収集時間ｙＥ１を示す。バー９２は、エッジＥ２に対する当該割り当て後のデータ収集時間ｙＥ２を示す。バー９３は、エッジＥ３に対する当該割り当て後のデータ収集時間ｙＥ３を示す。
【０１２９】
こうして、エッジＥ１，Ｅ２，Ｅ３にタイムスロットＩＤ「１」〜「５」の類似データが、エッジＥ１，Ｅ２，Ｅ３からのデータ収集時間を平準化するように割り当てられる。
次に、サーバ１００による処理手順を説明する。
【０１３０】
図２１は、サーバの処理例を示すフローチャートである。
（Ｓ１０）選択部１４０は、ユーザの降雨量の分析要求を受け付ける。分析要求は、分析対象の期間および地域を示す情報を含む。
【０１３１】
（Ｓ１１）選択部１４０は、分析要求で指定された分析対象期間において、指定された地域に含まれる分析対象の複数のエリアを特定する。選択部１４０は、分析対象期間に、分析対象の各エリアに存在したエッジを特定する。
【０１３２】
（Ｓ１２）選択部１４０は、ステップＳ１１で特定した各エッジのエッジ履歴テーブルに基づいて、分析対象期間の時間帯（タイムスロット）ごとの各エッジのハッシュ値を計算し、ハッシュ値テーブル１２１ａを生成する。ハッシュ値を求める際に用いられるハッシュ関数の入力は、前述のように、該当の時間帯に対応する時刻（例えば、時間帯の始めの時刻）と該当のエッジが存在したエリアの識別情報である。
【０１３３】
（Ｓ１３）選択部１４０は、エッジ間でハッシュ値の一致があるか否かを判定する。エッジ間でハッシュ値の一致がある場合、ステップＳ１５に処理が進む。エッジ間でハッシュ値の一致がない場合、ステップＳ１４に処理が進む。ここで、ステップＳ１３において、エッジ間でハッシュ値の一致がある場合、同一時間帯において同一エリアに存在した複数のエッジを抽出可能であることを意味する。一方、ステップＳ１３において、エッジ間でハッシュ値の一致がない場合、同一時間帯において同一エリアに単一のエッジのみが存在していたことを意味する。選択部１４０は、例えば、タイムスロットごとに、エッジ間でハッシュ値の一致があるか否かを判定することで、タイムスロットごとに、複数のエッジで互いに保持される類似データがあるか否かを判定してもよい。
【０１３４】
（Ｓ１４）選択部１４０は、時刻および降雨量の組に対するハッシュ値を各エッジに要求し、当該ハッシュ値を各エッジから受信する。この場合、選択部１４０は、各エッジに対して、対象期間の降雨量のデータに対する前処理を実行させ、前処理結果に対して計算されたハッシュ値を要求する。幾つかのエッジでは、ある時間帯において計測された降雨量が所定の誤差内で一致していることが期待される。それらのエッジは、互いに類似データを保持し合っていると言え、後述のステップＳ１５の処理が可能である。
【０１３５】
（Ｓ１５）選択部１４０は、類似データに対する収集元エッジの割り当てを実行する。類似データに対する収集元エッジの割り当ての手順の詳細は後述される。
（Ｓ１６）収集部１５０は、選択部１４０により各エッジに割り当てられた類似データに対応するハッシュ値を送信する。
【０１３６】
（Ｓ１７）収集部１５０は、送信したハッシュ値に対応する降雨量のデータを各エッジから受信する。
（Ｓ１８）収集部１５０は、各エッジから収集した降雨量のデータを用いて、各エッジから収集しなかった（間引いた）類似データに対する補間データを生成し、補間データにより各エッジにおける降雨量のデータを完成させる。
【０１３７】
（Ｓ１９）分析部１６０は、収集部１５０により取得された降雨量のデータを分析する。
（Ｓ２０）分析部１６０は、降雨量のデータの分析結果を出力する。そして、サーバ１００の処理が終了する。
【０１３８】
なお、ステップＳ１４で取得したハッシュ値が何れのエッジ間でも一致していないことも考えられる。その場合には、選択部１４０は、全てのエッジから、取得対象期間における全ての降雨量のデータを収集すると決定してもよい。
【０１３９】
図２２は、収集元エッジの割り当て例を示すフローチャートである。
類似データの収集元エッジの割り当てはステップＳ１５に相当する。
（Ｓ３０）選択部１４０は、互いに類似データを保持し合うエッジの組を取得する。例えば、あるタイムスロットについて、同じハッシュ値の組があるとき、当該同じハッシュ値の組に対応するエッジの組が、互いに類似データを保持し合うエッジの組である。
【０１４０】
（Ｓ３１）選択部１４０は、取得した各エッジからのデータ収集時間を表す関数を取得する。例えば、当該関数はエッジごとに予め生成されて、メタ情報記憶部１２０に格納されている。
【０１４１】
（Ｓ３２）選択部１４０は、ステップＳ３１で取得した関数に基づいて、類似データを１つ追加した場合のデータ収集時間をステップＳ３０で取得したエッジ毎に計算する。
（Ｓ３３）選択部１４０は、ステップＳ３２で計算した各エッジのデータ収集時間を比較する。
【０１４２】
（Ｓ３４）選択部１４０は、データ収集時間が小さいエッジに該当の類似データに対応するハッシュ値を割り当て、該当のエッジのデータ収集時間を更新する。
（Ｓ３５）選択部１４０は、互いに類似データを保持し合う未処理の（すなわち、ステップＳ３１〜Ｓ３４の手順を行っていない）エッジの組があるか否かを判定する。ある場合、ステップＳ３０に処理が進む。ない場合、類似データに対する収集元エッジの割り当てが終了する。
【０１４３】
このように、選択部１４０は、収集元エッジの割り当ての際、ある時間帯にあるエリアに存在していた２以上のエッジのうちの１つのエッジを、当該時間帯の当該エリアにおける類似データ（データブロック）の収集元として割り当てる。
【０１４４】
選択部１４０が割り当ての際に用いる条件は、複数のエッジそれぞれを収集元として割り当てた全てのデータブロック（類似データまたはユニークデータ）の送信コストの平準化である。選択部１４０は、ある時間帯およびあるエリアの組におけるデータブロックを保持する２以上のエッジそれぞれを当該データブロックの収集元とする場合の当該エッジによる送信コストを算出し、算出された送信コストが最小のエッジを収集元として割り当てる。
【０１４５】
送信コストの一例は、各エッジからのデータの収集時間の平準化である。選択部１４０は、複数のエッジそれぞれによるデータブロックの生成のための、エッジごとの負荷に応じた前処理時間、および、複数のエッジそれぞれが存在するエリアに応じたデータ転送時間に基づいて、各エッジからのデータの収集時間を算出する。
【０１４６】
選択部１４０は、エッジの割り当ての際、複数のエッジの存在位置の履歴情報に基づいて、時間帯およびエリアの組に対応するハッシュ値を計算する。選択部１４０は、ハッシュ値が共通するエッジの組を、当該時間帯およびエリアの組に対応するデータブロック（類似データ）を共通して保持するエッジの組であると判定する。このようにハッシュ値を用いることで、互いに類似データを保持するエッジの組を高速に抽出できる。
【０１４７】
図２２で例示した手順により、図２０で説明したように、各エッジからのデータ収集時間を平準化して、類似データの収集元エッジを割り当てることができる。例えば、図２０で例示したように、選択部１４０は、互いに類似データを保持し合うエッジの組を、タイムスロットの時系列に選択しながら、ステップＳ３０〜Ｓ３５の手順を実行してもよい。時系列の順番は、古い方から新しい方へ向かう方向でもよいし、新しい方向から古い方向へ向かう方向でもよい。
【０１４８】
なお、図２１のステップＳ１４で例示したように、時間帯およびエリアの何れの組に対しても２以上のエッジがない場合、選択部１４０は、複数のエッジが保持するデータブロックと当該データブロックに対応する時刻とに応じたハッシュ値を複数のエッジそれぞれから収集する。そして、選択部１４０は、共通のハッシュ値を送信したエッジの組の中から、該当の時刻に対応するデータブロック（類似データ）の収集元のエッジを割り当てる。収集部１５０は、当該時刻ごとに、収集元として割り当てたエッジからデータブロック（類似データ）を収集する。
【０１４９】
次に、図２１のステップＳ１４に基づく類似データ探索の例を説明する。
図２３は、エッジの生データによる類似データ探索の例を示す図である。
各エッジの時刻およびエリアの履歴から時刻およびエリアに対するハッシュ値が一致するエッジがない場合（エッジ間にエッジが保持するデータに相関がない、または、相関パラメータが複数の場合）、サーバ１００は、各エッジから時刻と生データとに応じたハッシュ値を収集する。生データとは、前処理結果のデータである。この場合、サーバ１００は、収集対象の時刻およびエリアを指定した前処理の実行、および、時刻と各時刻の前処理に対するハッシュ値の送信を、各エッジに要求する。各エッジは、前処理を実行する。
【０１５０】
図２３では、エッジ２００の前処理結果データ２２２およびエッジ３００の前処理結果データ３２２が例示されている。各エッジのハッシュ化処理部（例えば、ハッシュ化処理部２４０）は、時刻と、時刻ごとの前処理結果に対するハッシュ値を計算し、サーバ１００に送信する。例えば、エッジ２００は、ハッシュ値ｈ（１７：０１，０．０５）、ｈ（１７：０２，０．０７）、…、および現在時刻のエッジ２００の負荷を含むデータ２５０をサーバ１００に送信する。また、エッジ３００は、ハッシュ値ｈ（１７：０１，０．０５）、ｈ（１７：０２，０．０６）、および現在時刻のエッジ３００の負荷を含むデータ３５０をサーバ１００に送信する。
【０１５１】
この場合、サーバ１００は、各エッジから受信したハッシュ値に基づいて、類似データを探索する。上記の例の場合、サーバ１００は、エッジ２００，３００がハッシュ値ｈ（１７：０１，０．０５）に対応する類似データを互いに保持していると判断できる。したがって、サーバ１００は、当該類似データを、エッジ２００，３００のうちの何れか一方から収集すればよい。
【０１５２】
図２３のように、生データによる類似データ探索を行った場合、エッジ側では前処理済なので、収集部１５０は、前処理時間およびデータ転送時間のうち、データ転送時間のみを考慮して、図２２のステップＳ３１〜Ｓ３４を実行すればよい。
【０１５３】
図２４は、サーバによるエッジからのデータ収集例を示す図である。
サーバ１００は、エッジに割り当てた類似データに対応するハッシュ値を、各エッジに送信し、当該ハッシュ値に対応するデータを各エッジから収集する。例えば、サーバ１００は、１７時０２分のエリアＡに関する類似データ、１７時０４分のエリアＢに関する類似データ、および、１７時０５分のエリアＣに関する類似データの収集元として、エッジ２００を割り当てたとする。この場合、サーバ１００は、エッジ２００に割り当てた各類似データに対応するハッシュ値ｈ（１７：０２，Ａ）、ｈ（１７：０４，Ｂ）、ｈ（１７：０５，Ｃ）を含む要求データ１５１をエッジ２００に送信する。
【０１５４】
エッジ２００は、センサ情報記憶部２１０に記憶されたセンサデータを前処理して前処理結果データ２２３を生成する。エッジ２００は、前処理結果データ２２３の時刻およびエリアに対するハッシュ値を、要求データ１５１に含まれるハッシュ値と照合し、一致するハッシュ値に対応する降雨量データ（データブロック）を、前処理結果データ２２３から抽出して、サーバ１００に送信する。この場合、エッジ２００は、１７時０２分のエリアＡに関する降雨量データ、１７時０４分のエリアＢに関する降雨量データ、および、１７時０５分のエリアＣに関する降雨量データをサーバ１００に送信する。
【０１５５】
同様に、サーバ１００は、１７時０１分のエリアＡに関する類似データ、１７時０２分のエリアＢに関する類似データ、１７時０３分のエリアＢに関する類似データ、および、１７時０５分のエリアＤに関する類似データの収集元として、エッジ３００を割り当てたとする。この場合、サーバ１００は、エッジ３００に割り当てた各類似データに対応するハッシュ値ｈ（１７：０１，Ａ）、ｈ（１７：０２，Ｂ）、ｈ（１７：０３，Ｂ）、ｈ（１７：０５，Ｄ）を含む要求データ１５２をエッジ３００に送信する。
【０１５６】
エッジ３００は、エッジ３００のセンサ情報記憶部に記憶されたセンサデータを前処理して前処理結果データ３２３を生成する。エッジ３００は、前処理結果データ３２３の時刻およびエリアに対するハッシュ値を、要求データ１５２に含まれるハッシュ値と照合し、一致するハッシュ値に対応する降雨量データを、前処理結果データ３２３から抽出して、サーバ１００に送信する。この場合、エッジ３００は、１７時０１分のエリアＡに関する降雨量データ、１７時０２分のエリアＢに関する降雨量データ、１７時０３分のエリアＢに関する降雨量データ、および、１７時０５分のエリアＤに関する降雨量データをサーバ１００に送信する。
【０１５７】
こうして、サーバ１００は、各エッジが保持する類似データを重複なく収集できる。このとき、図２２の手順によれば、各エッジからのデータ収集時間が次のように平準化される。
【０１５８】
図２５は、データ収集時間の平準化例を示す図である。
図２５（Ａ）は、エッジＥ１のＣＰＵ使用率５０１、エッジＥ２のＣＰＵ使用率５０２およびエッジＥ３のＣＰＵ使用率５０３を示す。図２５（Ａ）によれば、３つのエッジのうち、エッジＥ２の負荷が最も高く、次いでエッジＥ３の負荷が高く、エッジＥ１の負荷が最も低い。
【０１５９】
図２５（Ｂ）は、図２５（Ａ）で示す負荷の場合の、サーバ１００によるエッジＥ１，Ｅ２，Ｅ３に対する類似データの割り当て例５１１，５１２，５１３を示す。割り当て例５１１は、エッジＥ１に対する割り当て例である。割り当て例５１２は、エッジＥ２に対する割り当て例である。割り当て例５１３は、エッジＥ３に対する割り当て例である。エッジＥ１から収集する類似データの数が最も多く、エッジＥ２から収集する類似データの数が２番目に多く、エッジＥ３から収集する類似データの数が最も少ない。その代わり、エッジＥ３は保持するユニークデータが最も多く、エッジＥ３からはユニークデータが多く収集される。
【０１６０】
図２５（Ｃ）は、図２２の手順により、図２５（Ａ）で示す負荷において、図２５（Ｂ）のように各エッジから収集する類似データの数を調整した場合の、各エッジからのデータ収集時間の例を示す。データ収集時間５２１は、エッジＥ１からのデータ収集時間である。データ収集時間５２２は、エッジＥ２からのデータ収集時間である。データ収集時間５２３は、エッジＥ３からのデータ収集時間である。前述のように、データ収集時間は、前処理時間と転送時間との和である。図２５（Ｃ）によれば、各エッジからのデータ収集時間が平準化されていることが分かる。
【０１６１】
次に、データ収集の比較例を説明する。
図２６は、データ収集の比較例を示す図である。
図２６（Ａ）は、時刻ｔ１〜ｔ４に対して、エッジＥ１が保持するデータに対応するハッシュ値群６０１、エッジＥ２が保持するデータに対応するハッシュ値群６０２、および、エッジＥ３が保持するデータに対応するハッシュ値群６０３を示す。各ハッシュ値群におけるハッシュ関数は、ｈ（時刻、値（エリア識別情報））である。
【０１６２】
例えば、図２６（Ａ）によれば、時刻ｔ１およびエリアＡに対して、エッジＥ１，Ｅ２は互いに類似データを保持する。時刻ｔ２およびエリアＢに対して、エッジＥ２，Ｅ３は互いに類似データを保持する。時刻ｔ３およびエリアＢに対して、エッジＥ１，Ｅ２は互いに類似データを保持する。それ以外の時刻およびエリアの組については、ユニークデータである。
【０１６３】
このとき、例えば、各類似データの収集元のエッジを、類似データごとにランダムに１つ選択することも考えられる。しかし、この場合、各エッジからのデータ収集時間の差が比較的大きくなる可能性がある。例えば、ハッシュ値（ｔ１，Ａ）に対応する類似データの収集元がエッジＥ２、ハッシュ値ｈ（ｔ２，Ｂ）に対応する類似データの収集元がエッジＥ３、ハッシュ値（ｔ３，Ｂ）に対応する類似データの収集元がエッジＥ２と選択されたとする。このとき、エッジＥ１，Ｅ２，Ｅ３からのデータ収集時間は、次のようになる。
【０１６４】
図２７は、データ収集の比較例（続き）を示す図である。
グラフ６１１は、図２６（Ｂ）のように収集元を割り当てた場合のエッジＥ１，Ｅ２，Ｅ３に対する収集対象データ（類似データおよびユニークデータ）の割り当て数を示す。エッジＥ１に対する割り当て数は２である。エッジＥ２に対する割り当て数は３である。エッジＥ３に対する割り当て数は４である。
【０１６５】
グラフ６２１は、この場合のエッジＥ１，Ｅ２，Ｅ３からのデータ収集時間を示す。このように、類似データのデータ収集元のエッジをランダムに選択すると、各エッジからのデータ収集時間に比較的大きく差が生じてしまう。
【０１６６】
全てのエッジからのデータ収集後に後段の分析処理が可能になるため、データ収集時間の差は、データ収集後の分析処理の開始時間を遅延させる要因になる。例えば、図２５（Ｃ）のように、データ収集時間の差が小さくなるように、類似データの収集元のエッジを割り当てることで、データ収集時間を短縮できる。その結果、後段の分析処理を早く開始でき、データ収集から分析までの一連の処理を高速化できる。
【０１６７】
なお、各エッジからのデータ収集時間を推測する計算式の作成にかかる時間はオーバーヘッドとはならない。当該計算式の作成は、ハッシュ値により互いに類似データを保持するエッジを特定する処理と並行して実行可能だからである。
【０１６８】
更に、第２の実施の形態で例示されるように、車載の雨滴センサにより計測された降雨量を、既存の地域気象観測システムや、レーダーなどによる降雨量の情報と組み合わせることで、地域ごとのより詳細な降雨量を取得可能になる。
【０１６９】
なお、第２の実施の形態の例では、各エッジの負荷（ＣＰＵ使用率）に基づいて、前処理時間を推測し、類似データの収集元のエッジを選択するものとした。一方、類似データの収集元の選択の方法としては他の例も考えられる。
【０１７０】
図２８は、類似データの収集元の選択の他の例を示す図である。
例えば、サーバ１００は、各エッジの現時点での燃料残量を示す燃料残量情報１２１ｂを保持する。選択部１４０は、ハッシュ値テーブル１２１ａから互いに類似データを保持するエッジの組み合わせを抽出して、図１７〜図２０で例示した方法におけるＣＰＵ使用率を、エッジの燃料残量に置き換えることで、各エッジの燃料残量を平準化するように類似データの収集元のエッジを選択することが考えられる。
【０１７１】
この場合、式（１）のｙｉをエッジの燃料残量、ａｉをエッジからの１ブロックの収集に要する燃料（燃料の減少量）、ｂｉを該当エッジの現燃料残量と考えればよい。収集部１５０は、選択部１４０により割り当てられた収集元からデータを収集することで、各エッジの燃料残量を平準化するように、データ収集を行える。また、平準化対象のパラメータは、例えば、消費燃料や消費電力量などでもよい。
【０１７２】
なお、第１の実施の形態の情報処理は、処理部１２にプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、ＣＰＵ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１１３に記録できる。
【０１７３】
例えば、プログラムを記録した記録媒体１１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１７４】
５  ネットワーク
６，７  基地局
１０  データ収集装置
１１  記憶部
１２  処理部
２０，３０，４０  機器
Ｃ１，Ｃ２，Ｃ３  コスト
Ｄ１，Ｄ２，Ｄ３，Ｄ３ａ  データ
Ｒ１，Ｒ２  エリア
Ｔ１  期間
【図１】
2020112896.tif 000003
【図２】
2020112896.tif 000004
【図３】
2020112896.tif 000005
【図４】
2020112896.tif 000006
【図５】
2020112896.tif 000007
【図６】
2020112896.tif 000008
【図７】
2020112896.tif 000009
【図８】
2020112896.tif 000010
【図９】
2020112896.tif 000011
【図１０】
2020112896.tif 000012
【図１１】
2020112896.tif 000013
【図１２】
2020112896.tif 000014
【図１３】
2020112896.tif 000015
【図１４】
2020112896.tif 000016
【図１５】
2020112896.tif 000017
【図１６】
2020112896.tif 000018
【図１７】
2020112896.tif 000019
【図１８】
2020112896.tif 000020
【図１９】
2020112896.tif 000021
【図２０】
2020112896.tif 000022
【図２１】
2020112896.tif 000023
【図２２】
2020112896.tif 000024
【図２３】
2020112896.tif 000025
【図２４】
2020112896.tif 000026
【図２５】
2020112896.tif 000027
【図２６】
2020112896.tif 000028
【図２７】
2020112896.tif 000029
【図２８】
2020112896.tif 000030