(57)【要約】  一態様では、情報蓄積装置は、スクリプト実行環境と、データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、蓄積検索部に新たに蓄積されたデータが条件に合致した際に通知を出力する通知部と、スクリプトと、アクション対応情報とを備える。スクリプト実行環境は、実行されるスクリプトによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有する。情報蓄積装置は、ネットワークを通じてデータを収集し蓄積検索部に登録する収集部と、通知を受けて、アクション対応情報によって条件に対応付けられるスクリプトを、前記スクリプト実行環境を用いて実行するスクリプト実行部とをさらに備える。
2018088490.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して受信した情報を蓄積する情報蓄積装置であって、
前記情報蓄積装置は、
スクリプト実行環境と、
データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、
前記蓄積検索部に新たに蓄積されたデータが事前に登録された条件のいずれかに合致したことに応答して通知を出力する通知部と、
スクリプトと、前記事前に登録された条件と前記スクリプトとの対応関係を示すアクション対応情報とを保持する記憶部と
を具備し、
前記スクリプト実行環境は、実行されるスクリプトによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有し、
前記情報蓄積装置は、
前記ネットワークを通じてデータを収集し前記蓄積検索部に登録する収集部と、
前記通知を受けて、前記アクション対応情報によって前記合致した条件に対応付けられるスクリプトを、前記スクリプト実行環境を用いて実行するスクリプト実行部と
をさらに具備する情報蓄積装置。
【請求項２】
前記スクリプトは、
前記データを検索する指示によって、前記蓄積検索部からデータを取得する取得部と、
前記ネットワークを通じて通信する指示によって、前記取得部によって取得されたデータを前記ネットワークに対して送出する送出部と
を有する請求項１に記載の情報蓄積装置。
【請求項３】
前記事前に登録された条件は、前記収集部によって登録される全てのデータの集合のうちの一部のデータのみに合致する条件であり、
前記取得部によって取得されたデータは、１つまたは複数個のデータであり、
前記ネットワークを通じて通信する指示によって前記１つまたは複数個のデータを送出する際に、前記１つまたは複数個のデータは、配列、リスト、構造体および入れ子構造のうちのいずれかのデータ構造に格納して送出されるか、あるいは、前記１つまたは複数個のデータの各々に対して任意の識別子を付与してから送出される請求項２に記載の情報蓄積装置。
【請求項４】
前記スクリプト実行環境は、クラスライブラリを備え、
前記クラスライブラリは、データを検索するクラスと、ネットワークを通じて通信するクラスとを有し、
前記特徴は、前記実行されるスクリプトにより前記クラスライブラリを呼び出すことによって実現される請求項１に記載の情報蓄積装置。
【請求項５】
前記ネットワークを通じて通信する指示は、ＨＴＴＰまたはＨＴＴＰＳプロトコルをトランスポートプロトコルとして用い、ＪＳＯＮまたはＸＭＬデータフォーマットをデータ交換用符号として用いる請求項１に記載の情報蓄積装置。
【請求項６】
前記スクリプト実行部は、前記ネットワークを通じて通信する指示によって、ＪＳＯＮまたはＸＭＬデータフォーマットで記述されたドキュメントを蓄積するドキュメント指向データベースに蓄積指示を送出する請求項５に記載の情報蓄積装置。
【請求項７】
前記スクリプト実行部は、前記ネットワークを通じて通信する指示によって、前記ネットワークに接続された情報処理装置に対してイベント発生を知らせる通知信号を送出する請求項１に記載の情報蓄積装置。
【請求項８】
前記スクリプト実行部は、前記ネットワークを通じて通信する指示によって、前記ネットワークに接続された情報処理装置に対してイベント発生を知らせる通知信号を送出し、
前記通知信号は、前記１つまたは複数個のデータからなるデータ集合を他のデータ集合と区別するための識別情報を含む請求項３に記載の情報蓄積装置。
【請求項９】
前記蓄積検索部および前記通知部は、いずれもｕＴＳＬｉｔｅを用いて実現される請求項１に記載の情報蓄積装置。
【請求項１０】
スクリプト実行環境と、データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、スクリプトと、事前に登録された条件と前記スクリプトとの対応関係を示すアクション対応情報とを保持する記憶部とを備え、前記スクリプト実行環境が、実行されるスクリプトによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有する、情報蓄積装置が実行する情報蓄積方法であって、
ネットワークを通じてデータを収集し前記蓄積検索部に登録することと、
前記蓄積検索部に新たに登録されたデータが前記事前に登録された条件のいずれかに合致したことに応答して通知を出力することと、
前記通知を受けて、前記アクション対応情報によって前記合致した条件に対応付けられるスクリプトを、前記スクリプト実行環境を用いて実行することと、
を具備する情報蓄積方法。
【請求項１１】
請求項１に記載の情報蓄積装置の各部としてコンピュータを機能させるためのプログラム。
【請求項１２】
ネットワークを介して受信した情報を蓄積する情報蓄積装置であって、
バイナリ実行環境と、
データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、
前記蓄積検索部に新たに蓄積されたデータが事前に登録された条件のいずれかに合致したことに応答して第１の通知を出力する第１の通知部と、
前記事前に登録された条件と前記バイナリ実行環境上で動作しているプロセスとの対応関係を示すアクション対応情報を保持する記憶部とを具備し、
前記バイナリ実行環境は、実行されるプロセスによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有し、
前記情報蓄積装置は、
前記ネットワークを通じてデータを収集し前記蓄積検索部に登録する収集部と、
前記第１の通知を受けて、前記アクション対応情報によって前記合致した条件に対応付けられるプロセスに対して第２の通知を出力する第２の通知部と
をさらに具備する情報蓄積装置。
【請求項１３】
前記プロセスは、
前記データを検索する指示によって、前記蓄積検索部からデータを取得する取得部と、
前記ネットワークを通じて通信する指示によって、前記取得部によって取得されたデータを前記ネットワークに対して送出する送出部と
を有する請求項１２に記載の情報蓄積装置。
【請求項１４】
前記事前に登録された条件は、前記収集部によって登録される全てのデータの集合のうちの一部のデータのみに合致する条件であり、
前記取得部によって取得されたデータは、１つまたは複数個のデータであり、
前記ネットワークを通じて通信する指示によって前記１つまたは複数個のデータを送出する際に、前記１つまたは複数個のデータは、配列、リスト、構造体および入れ子構造のうちのいずれかのデータ構造に格納して送出されるか、あるいは、前記１つまたは複数個のデータの各々に対して任意の識別子を付与してから送出される請求項１３に記載の情報蓄積装置。
【請求項１５】
前記バイナリ実行環境は、クラスライブラリを備え、
前記クラスライブラリは、データを検索するクラスと、ネットワークを通じて通信するクラスとを有し、
前記特徴は、前記実行されるプロセスにより前記クラスライブラリを呼び出すことによって実現される請求項１２に記載の情報蓄積装置。
【請求項１６】
前記ネットワークを通じて通信する指示は、ＨＴＴＰまたはＨＴＴＰＳプロトコルまたはＭＱＴＴプロトコルをトランスポートプロトコルとして用い、ＪＳＯＮまたはＸＭＬデータフォーマットをデータ交換用符号として用いる請求項１２に記載の情報蓄積装置。
【請求項１７】
前記バイナリ実行環境を使用して前記プロセスを実行するプロセス実行部をさらに備え、
前記プロセス実行部は、前記ネットワークを通じて通信する指示によって、ＪＳＯＮまたはＸＭＬデータフォーマットで記述されたデータまたはファイルを蓄積するデータベースに蓄積指示を送出する請求項１６に記載の情報蓄積装置。
【請求項１８】
前記バイナリ実行環境を使用して前記プロセスを実行するプロセス実行部をさらに備え、
前記プロセス実行部は、前記ネットワークを通じて通信する指示によって前記ネットワークに接続された情報処理装置に対して、イベント発生を知らせる通知信号を送出し、
前記通知信号は、前記１つまたは複数個のデータからなるデータ集合を他のデータ集合と区別するための識別情報を含む請求項１４に記載の情報蓄積装置。
【請求項１９】
バイナリ実行環境と、データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、事前に登録された条件と前記バイナリ実行環境上で動作しているプロセスとの対応関係を示すアクション対応情報を保持する記憶部とを備え、前記バイナリ実行環境が、実行されるプロセスによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有する、情報蓄積装置が実行する情報蓄積方法であって、
ネットワークを通じてデータを収集し前記蓄積検索部に登録することと、
前記蓄積検索部に新たに登録されたデータが前記事前に登録された条件のいずれかに合致したことに応答して第１の通知を出力することと、
前記第１の通知を受けて、前記アクション対応情報によって前記合致した条件に対応付けられるプロセスに対して第２の通知を出力することと
を具備する情報蓄積方法。
【請求項２０】
請求項１２に記載の情報蓄積装置の各部としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、センサデータなどの情報を蓄積する情報蓄積装置、情報蓄積方法およびプログラムに関する。
【背景技術】
【０００２】
センサネットワークやＩｏＴ（Internet of Things）と呼ばれる分野では、センサをネットワークに接続し、センサにより取得された情報を集約して、クラウドに蓄積するシステムを構築する例が多い。しかし、一つ一つのセンサをインターネットに接続してクラウドに直接に送信するようにシステムを設計した場合、セキュリティやセンサの処理能力や通信負荷などの面で問題がある。【０００３】
このため、センサとクラウドとの間に、情報を集約する装置を設置する構成を採用することが多い。センサ、情報集約装置、クラウドの３段構成とすることで、インターネット通信の際のセキュリティ確保は情報集約装置に一任できるとともに、センサは情報集約装置にのみ通信すればよいため簡易なコンピュータで実現でき、処理能力の問題を解決できる。【０００４】
さらに、このような情報集約装置に対して情報を一時的に蓄積する機能をも付加することにより、情報を一時的に集約するバッファとして動作させることができる。例えば１分に１回送出される温度センサの情報を６０回分蓄積して、１時間分をひとまとめにしてクラウドに送信すれば、通信回数を削減できるため通信負荷の問題も解決できる。【０００５】
また、従来、ｕＴＳＬｉｔｅ（軽量化ｕＴｕｐｌｅＳｐａｃｅ）と呼ばれるセンサネットワーク向けのデータベース（ＤＢ）技術が知られている（特許第５９４８３９９号公報を参照）。ｕＴＳＬｉｔｅは、通常のリレーショナルデータベース（ＲＤＢ）のようにデータを蓄積し後から検索する機能を持つだけでなく、事前に条件を登録しておき、後からデータが蓄積された際に当該条件に合致するかを自動的に判定し、合致した際にはアプリケーションに通知する機能を有するという特徴を持つ。このような機能を活用すれば、様々な異常事象に対して事前に条件式を設定しておき、異常事象が発生した際に通知を行うようなアプリケーションを開発する労力が軽減される。【０００６】
上述したような既存の情報の集約と蓄積を行う装置には、以下に詳述するように、汎用性が乏しく、開発が困難であるという問題がある。例えば、どのようなセンサを接続するか、情報を何回分集約して送出するか、情報をどのようなクラウド上のサービスに送出するか、といった事項は、個々のセンサネットワークの応用例ごとに異なるものであるから、均一の装置として汎用的に作り込みを行っておくことはできず、応用例毎に個別に開発する必要が生じるという問題がある。【０００７】
特にこの問題は、情報を集約する際に、特定の注目すべき事象が発生した際に特別に送出を行わせたい応用例において顕著に問題となる。例えば上述の例であれば、温度センサによって火災と思われる異常事象を検知した場合には、１時間に１回の送出を待たず、緊急に警報情報を送出する必要がある。しかし、どのようなセンサを接続し、どのような条件判定によって、どのような緊急情報を送出すべきであるかは応用例ごとに全く異なるため、例えば「Ｎ回分を集約」あるいは「Ｎ秒分を集約」といった単純なデータ定義では、このような処理は実現できないため、個別開発が必要となり開発が困難であるという問題に繋がっている。【０００８】
また、ｕＴＳＬｉｔｅを用いたとしても、上記の問題は依然として存在する。なぜならば、ｕＴＳＬｉｔｅはあくまでもソフトウェアライブラリであるから、ｕＴＳＬｉｔｅを用いたアプリケーションソフトウェアを新規に開発しなければならないという点において、ｕＴＳＬｉｔｅ単体で上記の問題を解決できるものではない。
【発明の概要】
【０００９】
本発明は、上記の事情を鑑みてなされたものであり、その目的は、センサデータなどの情報の集約と蓄積を行う装置においてどのような条件判定によってどのように情報を集約して送出するかを柔軟に定義可能とする情報蓄積装置、情報蓄積方法およびプログラムを提供することである。
【００１０】
本発明の第１の態様では、ネットワークを介して受信した情報を蓄積する情報蓄積装置は、スクリプト実行環境と、データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、前記蓄積検索部に新たに蓄積されたデータが事前に登録された条件のいずれかに合致したことに応答して通知を出力する通知部と、スクリプトと、前記事前に登録された条件と前記スクリプトとの対応関係を示すアクション対応情報とを保持する記憶部とを備え、前記スクリプト実行環境は、実行されるスクリプトによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有し、前記情報蓄積装置は、前記ネットワークを通じてデータを収集し前記蓄積検索部に登録する収集部と、前記通知を受けて、前記アクション対応情報によって前記合致した条件に対応付けられるスクリプトを、前記スクリプト実行環境を用いて実行するスクリプト実行部とをさらに備える。
【００１１】
第２の態様では、前記スクリプトは、前記データを検索する指示によって、前記蓄積検索部からデータを取得する取得部と、前記ネットワークを通じて通信する指示によって、前記取得部によって取得されたデータを前記ネットワークに対して送出する送出部とを有する。
【００１２】
第３の態様では、前記事前に登録された条件は、前記収集部によって登録される全てのデータの集合のうちの一部のデータのみに合致する条件であり、前記取得部によって取得されたデータは、１つまたは複数個のデータであり、前記ネットワークを通じて通信する指示によって前記１つまたは複数個のデータを送出する際に、前記１つまたは複数個のデータは、配列、リスト、構造体および入れ子構造のうちのいずれかのデータ構造に格納して送出されるか、あるいは、前記１つまたは複数個のデータの各々に対して任意の識別子を付与してから送出される。
【００１３】
第４の態様では、前記スクリプト実行環境は、クラスライブラリを備え、前記クラスライブラリは、データを検索するクラスと、ネットワークを通じて通信するクラスとを有し、前記特徴は、前記実行されるスクリプトにより前記クラスライブラリを呼び出すことによって実現される。
【００１４】
第５の態様では、前記ネットワークを通じて通信する指示は、ＨＴＴＰまたはＨＴＴＰＳプロトコルをトランスポートプロトコルとして用い、ＪＳＯＮまたはＸＭＬデータフォーマットをデータ交換用符号として用いる。
【００１５】
第６の態様では、前記スクリプト実行部は、前記ネットワークを通じて通信する指示によって、ＪＳＯＮまたはＸＭＬデータフォーマットで記述されたドキュメントを蓄積するドキュメント指向データベースに蓄積指示を送出する。
【００１６】
第７の態様では、前記スクリプト実行部は、前記ネットワークを通じて通信する指示によって、前記ネットワークに接続された情報処理装置に対してイベント発生を知らせる通知信号を送出する。
【００１７】
第８の態様では、前記スクリプト実行部は、前記ネットワークを通じて通信する指示によって、前記ネットワークに接続された情報処理装置に対してイベント発生を知らせる通知信号を送出し、前記通知信号は、前記１つまたは複数個のデータからなるデータ集合を他のデータ集合と区別するための識別情報を含む。
【００１８】
第９の態様では、前記蓄積検索部および前記通知部は、いずれもｕＴＳＬｉｔｅを用いて実現される。
【００１９】
第１０の態様では、ネットワークを介して受信した情報を蓄積する情報蓄積装置は、バイナリ実行環境と、データを蓄積し、蓄積しているデータに対する検索を行う蓄積検索部と、前記蓄積検索部に新たに蓄積されたデータが事前に登録された条件のいずれかに合致したことに応答して第１の通知を出力する第１の通知部と、前記事前に登録された条件と前記バイナリ実行環境上で動作しているプロセスとの対応関係を示すアクション対応情報を保持する記憶部とを備え、前記バイナリ実行環境は、実行されるプロセスによって、データを検索する指示とネットワークを通じて通信する指示とを記述可能である特徴を有し、前記情報蓄積装置は、前記ネットワークを通じてデータを収集し前記蓄積検索部に登録する収集部と、前記第１の通知を受けて、前記アクション対応情報によって前記合致した条件に対応付けられるプロセスに対して第２の通知を出力する第２の通知部とをさらに備える。
【００２０】
第１１の態様では、前記プロセスは、前記データを検索する指示によって、前記蓄積検索部からデータを取得する取得部と、前記ネットワークを通じて通信する指示によって、前記取得部によって取得されたデータを前記ネットワークに対して送出する送出部とを有する。
【００２１】
第１２の態様では、前記事前に登録された条件は、前記収集部によって登録される全てのデータの集合のうちの一部のデータのみに合致する条件であり、前記取得部によって取得されたデータは、１つまたは複数個のデータであり、前記ネットワークを通じて通信する指示によって前記１つまたは複数個のデータを送出する際に、前記１つまたは複数個のデータは、配列、リスト、構造体および入れ子構造のうちのいずれかのデータ構造に格納して送出されるか、あるいは、前記１つまたは複数個のデータの各々に対して任意の識別子を付与してから送出される。
【００２２】
第１３の態様では、前記バイナリ実行環境は、クラスライブラリを備え、前記クラスライブラリは、データを検索するクラスと、ネットワークを通じて通信するクラスとを有し、前記特徴は、前記実行されるプロセスにより前記クラスライブラリを呼び出すことによって実現される。
【００２３】
第１４の態様では、前記ネットワークを通じて通信する指示は、ＨＴＴＰまたはＨＴＴＰＳプロトコルまたはＭＱＴＴプロトコルをトランスポートプロトコルとして用い、ＪＳＯＮまたはＸＭＬデータフォーマットをデータ交換用符号として用いる。
【００２４】
第１５の態様では、前記情報蓄積装置は、前記バイナリ実行環境を使用して前記プロセスを実行するプロセス実行部をさらに備え、前記プロセス実行部は、前記ネットワークを通じて通信する指示によって、ＪＳＯＮまたはＸＭＬデータフォーマットで記述されたデータまたはファイルを蓄積するデータベースに蓄積指示を送出する。
【００２５】
第１６の態様では、前記情報蓄積装置は、前記バイナリ実行環境を使用して前記プロセスを実行するプロセス実行部をさらに備え、前記プロセス実行部は、前記ネットワークを通じて通信する指示によって、前記ネットワークに接続された情報処理装置に対してイベント発生を知らせる通知信号を送出し、前記通知信号は、前記１つまたは複数個のデータからなるデータ集合を他のデータ集合と区別するための識別情報を含む。
【００２６】
本発明によれば、センサデータなどの情報の集約と蓄積を行う装置においてどのような条件判定によってどのように情報を集約して送出するかを柔軟に定義可能となる。
【図面の簡単な説明】
【００２７】
【図１】図１は、本発明の第１の実施形態に係る情報管理システムの構成を例示するブロック図である。
【図２】図２は、図１に示した情報蓄積装置のセンサデータ登録処理を示すフローチャートである。
【図３】図３は、スクリプトの一例を示す図である。
【図４】図４は、情報蓄積装置からクラウドＤＢへの通信内容の一例を示す図である。
【図５】図５は、スクリプトの別の例を示す図である。
【図６】図６は、本発明の第２の実施形態に係る情報管理システムの構成を例示するブロック図である。
【図７】図７は、図６に示した情報蓄積装置のセンサデータ登録処理を示すフローチャートである。
【図８】図８は、本発明の一実施形態に係る情報蓄積装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照しながら本発明の実施形態を説明する。
【００２９】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る情報管理システム１００の構成を示す。情報管理システム１００では、情報蓄積装置１０１とセンサ１０３とクラウドＤＢ１０４とタブレット１０５とがネットワーク１０２に接続される。ネットワーク１０２への接続は、有線接続であってもよく、無線接続であってもよい。センサ１０３は、例えば一定の時間間隔で、計測を行い、計測結果（センサデータ）をネットワーク１０２を通じて情報蓄積装置１０１に送出する。情報蓄積装置１０１は、ネットワーク１０２を通じてセンサ１０３から収集したデータを蓄積する。本実施形態では、説明を簡単にするために、センサ１０３は１台とするが、複数台のセンサ１０３がネットワーク１０２に接続されてもよい。
【００３０】
情報蓄積装置１０１は、事前に登録された条件を少なくとも１つ保持しており、新たにデータを蓄積した際に、当該データが各条件に合致するか否かを判定し、合致した条件に応じた処理を行う。例えば、情報蓄積装置１０１は、ネットワーク１０２を介してクラウドＤＢ１０４またはタブレット１０５に通知信号を送出する。通知信号は、例えば、情報蓄積装置１０１が蓄積しているデータの一部を含むことができる。クラウドＤＢ１０４は、例えば、図示しないサーバ装置上に実装される。タブレット１０５は、情報処理装置の一例であり、当該情報処理装置の例には、パーソナルコンピュータ（ＰＣ）、サーバ装置、スマートフォン、携帯電話などが含まれる。また、複数台のタブレット１０５がネットワーク１０２に接続されてもよい。
【００３１】
情報蓄積装置１０１は、例えば、サーバ装置、ＰＣなどの情報処理装置からなり、ハードウェアとして、ＣＰＵ（Central Processing Unit）などのプロセッサと、メモリと、ネットワーク１０２を通じて通信を行うための通信インタフェース１１９とを備える。情報蓄積装置１０１は、ディスプレイ、キーボード、マウスなどの入出力のためのインタフェースをさらに備えていてもよい。上記の条件は、入出力のためのインタフェースを通じて設定されてもよく、あるいは、例えばネットワーク１０２を通じて、外部から設定されてもよい。条件はメモリに保存される。
【００３２】
情報蓄積装置１０１は、軽量ストリームＤＢ１１１、センサデータ収集部１１２、スクリプト実行環境１１５、クラスライブラリ１１６、初期化部１１７、および処理部１１８を備え、アクション対応情報１１３およびスクリプト１１４を保持する。軽量ストリームＤＢ１１１、センサデータ収集部１１２、初期化部１１７、および処理部１１８による各種処理は、プロセッサがメモリから各種プログラムを読み出して実行することにより実現することができる。また、軽量ストリームＤＢ１１１に蓄積されるデータ、クラスライブラリ１１６、アクション対応情報１１３およびスクリプト１１４はメモリに保存される。
【００３３】
本実施形態では、軽量ストリームＤＢ１１１としてｕＴＳＬｉｔｅを用いる。ｕＴＳＬｉｔｅは、データを蓄積し、蓄積しているデータに対する検索処理を行う蓄積検索機能と、新たに蓄積されたデータが事前に登録された条件のうちのいずれかの条件に合致した際に通知を出力する通知機能とを有する。具体的には、蓄積検索機能は、データをデータ用デポジトリに先に蓄積しておき、後から条件式を投入することで、条件式に合致するデータをデータ用デポジトリから検索するデータ値蓄積型の検索処理を行い、検索結果を通知する。また、通知機能は、条件式を条件式用デポジトリに先に蓄積しておき、後からデータをデータ用デポジトリに書き込むことで、当該データに合致する条件式を条件式用デポジトリから検索する条件式待ち受け型の検索処理を行い、検索結果を通知する。
【００３４】
スクリプト１１４はＪａｖａＳｃｒｉｐｔ（登録商標）言語で記述し、スクリプト実行環境１１５としてＪａｖａＳｃｒｉｐｔ実行環境を用いる。ＪａｖａＳｃｒｉｐｔ実行環境は、例えばNode.jsのようなオープンソースソフトウェアを用いることで容易に実現することができる。さらに、スクリプト実行環境１１５には、ＪａｖａＳｃｒｉｐｔ実行環境の標準的な機能を用いて、クラスライブラリ１１６を事前登録（インストール）しておく。これによって、スクリプト１１４内の記述によってクラスライブラリ１１６の呼び出しを行うことができる。クラスライブラリ１１６は、軽量ストリームＤＢ１１１からデータを検索するクラスと、ネットワーク１０２を通じてＨＴＴＰ（HyperText Transfer Protocol）またはＨＴＴＰＳ（HyperText Transfer Protocol Secure）プロトコルで通信するクラスとを提供する。言い換えると、スクリプト実行環境１１５は、実行されるスクリプト１１４によって、軽量ストリームＤＢ１１１からデータを検索する指示とネットワーク１０２を通じてＨＴＴＰまたはＨＴＴＰＳプロトコルで通信する指示とを記述可能である特徴を有する。
【００３５】
センサデータ収集部１１２は、ＨＴＴＰでの接続を待ち受ける機能を有し、すなわちＨＴＴＰサーバとする。センサデータ収集部１１２は、ネットワーク１０２を通じてセンサ１０３からセンサデータを受け取り、センサデータを軽量ストリームＤＢ１１１に登録する。
【００３６】
クラウドＤＢ１０４は、一般的にドキュメント指向ＤＢと呼ばれる種類のソフトウェアを用いる。例えば、オープンソースソフトウェアであるElasticsearchを用いてもよい。ドキュメント指向ＤＢは、ＪＳＯＮ（JavaScript Object Notation）またはＸＭＬ（Extensible Markup Language）データフォーマットで記述されたドキュメントを蓄積することができる。
【００３７】
タブレット１０５は、一般的なAndroid端末に、オープンソースソフトウェアであるＤｅｖｉｃｅＣｏｎｎｅｃｔをインストールしたものを用いる。ＤｅｖｉｃｅＣｏｎｎｅｃｔは、外部からの通知信号を受け取って画面にアラート表示を描画したり、指定されたＵＲＬ（Uniform Resource Locator）のウェブコンテンツをブラウザで表示する機能を提供するソフトウェアである。ＤｅｖｉｃｅＣｏｎｎｅｃｔと同等の機能を有する他のソフトウェアを用いてもよい。
【００３８】
初期化部１１７は、情報蓄積装置１０１の起動時に、軽量ストリームＤＢ１１１への条件式の登録と、スクリプト１１４の保持とを行うとともに、条件式とスクリプト１１４との対応関係をアクション対応情報１１３として保持する処理を行う。例えば、起動時に読み込む定義ファイルに、「温度＞８０度」という条件式をaction1.jsというスクリプトに対応付け、「侵入者＝true」という条件式をaction2.jsというスクリプトに対応付けるような対応関係を記述する。初期化部１１７は、軽量ストリームＤＢ１１１へ「温度＞８０度」という条件式を登録し、スクリプト１１４としてaction1.jsというファイルの中身を読み込んでメモリ上に保持する。同様に、軽量ストリームＤＢ１１１へ「侵入者＝true」という条件式を登録し、スクリプト１１４としてaction2.jsというファイルの中身を読み込んでメモリ上に保持する。さらに、アクション対応情報１１３に相当する情報として、条件式とスクリプト１１４との対応関係を以下のようにしてメモリ上に保持する。
【００３９】
アクション対応情報１１３としては、例えば上記の例においては、「温度＞８０度」という条件式に合致したことが通知された際にaction1.jsという対応関係が得られるようにデータ構造をメモリ上に保持する。例えば、ｕＴＳＬｉｔｅにおいては、通知の際に、指定した関数を指定した識別子を持って呼び出す機能を有しているので、Ｃ＋＋言語におけるクラスオブジェクトや連想配列やラムダ式機能といった言語機能を用いることで、どの条件式に対するイベント通知であるかは容易に区別可能であるから、例えば上記の例では、「温度＞８０度」という条件に合致した場合にaction1.jsという対応関係を容易に得ることができる。この場合、前記クラスオブジェクトや連想配列やラムダ式といったＣ＋＋言語の機能がメモリ上に確保する情報と、ｕＴＳＬｉｔｅ内で保持されているイベント通知のための情報とが、アクション対応情報１１３に該当することとなる。この例のように、アクション対応情報１１３に相当するような配列などの明示的なデータ構造やストレージなどが存在せず、該当する情報が細切れになってメモリ上に保持されているような実施も当然可能である。
【００４０】
処理部１１８は、軽量ストリームＤＢ１１１からの通知を受けて、アクション対応情報１１３を参照して当該通知が発せられる契機となった条件式に対応付けられるスクリプト１１４を特定し、このスクリプト１１４をスクリプト実行環境１１５を用いて実行する。
【００４１】
図２は、情報蓄積装置１０１におけるセンサデータ登録処理のフローの一例を示す。
センサ１０３がネットワーク１０２を通じて情報蓄積装置１０１に計測結果のセンサデータをＨＴＴＰプロトコルを用いて送信すると、センサデータ収集部１１２は、ＨＴＴＰ接続を受け付け、具体的には、センサ１０３からセンサデータを受け取り（ステップＳ２００）、受け取ったデータを軽量ストリームＤＢ１１１に蓄積する（ステップＳ２０１）。なお、ステップＳ２０１の蓄積処理は、受け取ったデータを引数として軽量ストリームＤＢ１１１が提供するデータ登録機能を呼び出すことにより容易に実現することができる。この際、当該データが事前に登録された条件式に合致した場合には、軽量ストリームＤＢ１１１から通知が出力され（ステップＳ２０２）、処理部１１８が当該通知を受け取る（ステップＳ２０３）。軽量ストリームＤＢ１１１の持つ機能により、当該通知には、ステップＳ２０１で蓄積されたデータすなわち通知契機となったデータが含まれる。処理部１１８は、次に、アクション対応情報１１３に基づいて、対応するスクリプト１１４を特定する（ステップＳ２０４）。次いで、処理部１１８は、スクリプト実行環境１１５を用いて、ステップＳ２０４で特定したスクリプト１１４を実行する（ステップＳ２０５）。その際、前記の通知契機となったデータを、スクリプト内で読み出し可能な変数「event」の値として設定してからスクリプトの実行を行う。最後に、当該通知に対する処理を完了する（ステップＳ２０６）。
【００４２】
なお、データがＮ個の条件式に合致した場合には、情報蓄積装置１０１は、軽量ストリームＤＢ１１１から通知をＮ回受け取るので、上記のステップＳ２０３からステップＳ２０６に示す処理をＮ回繰り返し実行する。ここで、Ｎは０以上の整数である。
【００４３】
本実施形態に係る情報蓄積装置１０１は、以上に示した基本動作を行うことによって、初期化時に指定した様々な条件に対して、各種のアクションをＪａｖａＳｃｒｉｐｔのプログラムによって記述することができ、単一の開発済み装置を用いて設定ファイルの入れ替えのみによって様々な機能を実現することができる。特に、ＪａｖａＳｃｒｉｐｔからは軽量ストリームＤＢ１１１の検索と、様々な通信相手へのＨＴＴＰまたはＨＴＴＰＳの通信とを、クラスライブラリ１１６の機能を用いて容易に記述できるので、センサデータなどの情報の集約と蓄積を行う装置において求められる機能を柔軟かつ容易に実現することができる。
【００４４】
以下ではさらに、スクリプト記載の例を何点か示すことによって、本実施形態に係る情報蓄積装置１０１の利点について具体的に述べる。
【００４５】
図３はスクリプトの一例を示す。図３に示すスクリプト３００は、軽量ストリームＤＢ１１１に蓄積されているデータの中で、“subject”というキーの値が「sensor」という文字列であり、かつ、“type”というキーの値が「thermometer」という文字列であり、かつ、“date”というキーの値として格納されているミリ秒精度のタイムスタンプが現在より６０秒前から現在までの時刻の範囲にあるデータの集合を検索して、それらを１つのデータエントリとしてクラウドＤＢ１０４に登録する動きを実現するものである。
【００４６】
まず行群３０１によって、現在時刻の値とその６０秒前の時刻の値とを得る。次に、行３０２で、クラスライブラリ「ajax.collect」を呼び出し、軽量ストリームＤＢ１１１を検索して結果を得る。「ajax.collect」は、クラスライブラリ１１６が提供するクラスの機能の１つである。このクラスの実装は、与えられた引数を、軽量ストリームＤＢ１１１の入出力に用いる変数型に代入してから、軽量ストリームＤＢ１１１の機能を呼び出すことにより容易に実現することができる。
【００４７】
検索結果が空でなかった場合には、行３０３でクラスライブラリ「ajax.request」を呼び出し、クラウドＤＢ１０４に登録するためのＨＴＴＰ ＰＯＳＴ通信を送出する。この「ajax.request」は、クラスライブラリ１１６が提供するクラスの機能の１つである。このクラスの実装は、与えられた引数“url”で示されるＵＲＬのホストに対して、与えられた引数“type”および“headers”の内容をＨＴＴＰプロトコルのヘッダに設定し、与えられた引数“data”の内容をコンテンツとして、ＨＴＴＰ通信を行うことにより、容易に実現することができる。なお、ＨＴＴＰ通信を行う処理は、ＯＳＳ（Open Source Software）などで広く提供されているものを用いてよい。行３０３では、引数“data”として前記検索結果を格納している。検索結果は複数個のデータの並びである。ＪａｖａＳｃｒｉｐｔおよびＪＳＯＮフォーマットが持つ、データを入れ子にして記述可能とする標準的機能によって、このように複数個のデータの並びを入れ子の値として取り扱うことができる。この内容はそのまま通信内容に反映される。また、ＪａｖａＳｃｒｉｐｔでは、外部との入出力の際は自動的にＪＳＯＮフォーマットに変換するという機能を言語自体が有している。
【００４８】
なお、スクリプト３００の例では利用していないが、変数「event」の値には、前述のように通知契機となったデータが格納されているため、そのデータを利用するようにスクリプトを記述することも可能である。例えば、通知契機となったデータのタイムスタンプを識別子の値として用い、その値を他の全てのデータにも付与することで、後から他のデータと区別するようなスクリプトを記述することも容易である。
【００４９】
図４は、クラウドＤＢ１０４への通信内容の一例を示す。図４に示す通信文４００は、ＨＴＴＰプロトコルにおけるボディに格納されるコンテンツを示したものである。前述のように、コンテンツには、図３に示したスクリプト３００の行３０３によって検索結果であるデータの並びが格納される。ＤＢの検索で得られるのはＤＢに蓄積してあるデータであるから、以前にステップＳ２００（図２）でセンサ１０３から受け取ってステップＳ２０１で蓄積されたデータがそのまま通信文４００に反映されることになる。例えば、行４０１は、キー“date”が値1473240068であり、キー“subject”が値sensorであり、キー “temperature”が値27.53125であり、キー“type”が値thermometerであるデータを表している。
【００５０】
通信文４００の例では、５個のデータエントリを入れ子として並べた配列データのＪＳＯＮフォーマットによる表現となっている。クラウドＤＢ１０４としてElasticsearchを用いた場合、このような通信文を受け取ると、５個分のデータエントリを生成するという動作仕様となっている。なお、データエントリの数は、５個に限らず、１、２〜４、または６以上であることもある。
【００５１】
データは、入れ子構造に限らず、他のデータ構造（例えば、配列、リスト、構造体など）に格納して送出されてもよい。また、データは、データの各々に対して任意の識別子を付与してから送出されてもよい。このようにすることで、データが一組となって一度期に送出されたものであることをネットワーク１０２の受信側に判別可能となる。
【００５２】
図５は、スクリプトの別の例を示す。図５に示すスクリプト５００は、現在より６０秒前から現在までの時刻の範囲を示す時刻情報を指示文に埋め込んだリクエストをタブレット１０５に送信することで、タブレット１０５上に通知ならびにブラウザ表示を促すという動きを実現するものである。
【００５３】
まず、行群５０１によって、現在時刻の値とその６０秒前の時刻の値を得る。次に、行５０２で、クラスライブラリ「ajax.request」を呼び出し、タブレット１０５に対してＨＴＴＰ ＰＯＳＴ通信を送出する。ここでは、引数“url”としてタブレット１０５のＩＰアドレスを指定する。また、ＨＴＴＰのコンテンツとなる引数“data”の内容として、行群５０１によって算出した時刻情報を埋め込んだ文字列を生成して送出している。
【００５４】
本実施形態で用いるタブレット１０５にインストールされているＤｅｖｉｃｅＣｏｎｎｅｃｔは、このような形式のＨＴＴＰコンテンツを受け取ると、まず端末上に通知を表示し、その通知アイコンがタップされると、当該コンテンツによって指定されたＵＲＬのウェブコンテンツを表示するという動作仕様となっている。
【００５５】
当該ＵＲＬとともに前記時刻情報を埋め込んでおくことにより、表示するウェブコンテンツでは当該時刻情報を用いた処理が可能となる。例えば、時刻情報の範囲で示されるデータをクラウドＤＢ１０４から検索して、折れ線グラフとして表示するようなウェブコンテンツを、容易に作成することができる。
【００５６】
上述したように、本実施形態では、初期化の際に、条件式とスクリプトとの対応関係を複数個登録しておくことができる。この際、条件式はそれぞれ異なっていてもよく、あるいは、一部の組の対応関係で同一の条件式が用いられてもよい。そこで、同一の条件式に対して、スクリプト３００が対応するような関係と、同じく条件式に対してスクリプト５００が対応するような関係とを、初期化の際に登録しておく。このようにすると、ある時刻に発生した出来事によってセンサのデータが登録され、それに伴って当該条件式がどちらも真となり、スクリプト３００とスクリプト５００が時間をおかずに順に実行される。スクリプト３００の行３０２で検索対象となったデータのタイムスタンプの範囲と、スクリプト５００の行５０２で通信文に含めた時刻範囲とが合致することになるから、スクリプト５００による通知信号を受け取ったタブレットが表示するウェブコンテンツでは、前記検索対象となったデータがグラフ表示できる。このように、本実施形態では、センサのデータに当然埋め込まれているタイムスタンプ情報を識別子としても用いることで、クラウドＤＢ１０４に登録したデータを後からウェブコンテンツとして表示する際に対応関係を判別可能としている。
【００５７】
本発明の範囲はこれに限るものではなく、複数個のデータを、例えば一つの長大なデータエントリとしてクラウドＤＢ１０４に登録したり、もしくは、それぞれのデータに対して新たなＪＳＯＮデータフォーマットにおけるキーを付加して、そのキーの値として特定の識別子を付与しておくような実現も可能である。特に後者の場合は、スクリプト３００の行３０３の前に、変数「thermometer」の各要素を巡回してキーを付加するようなループ文を追加することで、容易に実現可能である。また、当該キーとしては、前記の変数「event」に含まれる値を用いてもよい。
【００５８】
以上で述べてきた本実施形態について、得られる具体的な効果を以下に示す。
条件式として成立頻度の低い条件を記述し、当該条件式に対応付けられるスクリプトで軽量ストリームＤＢ１１１から多数のエントリを取得するような範囲で検索を行ってその結果をクラウドＤＢ１０４に送出するよう記述することにより、複数のセンサのデータ登録を集約して通信量を削減できるという利点が得られる。例えば、１分に１回送出される温度センサの情報を６０回蓄積して、１時間分をひとまとめにしてクラウドＤＢ１０４に送信すれば、通信回数を削減できるため、通信負荷を削減することができる。あるいは、温度が異常に上昇した際に、その直前数回分のデータのみをひとまとめにしてクラウドＤＢ１０４に送信すれば、通信回数を削減できるため、通信負荷を削減することができる。さらに、温度が異常に上昇した際に、１時間分をひとまとめにする処理の実行を待たずにクラウドに送信することができるため、通信負荷を削減しつつ、異常を素早く検知できるという利点を得ることもできる。
【００５９】
これらの条件式や、どのようなクラウドＤＢ１０４の検索条件とするかといった設定は、初期化時に読み込まれるファイルの変更によって容易にカスタマイズが可能となるため、柔軟に定義を変更可能であり、本発明の装置を利用したセンサネットワークのシステムの開発工数を削減できる。
【００６０】
本実施形態では、スクリプト３００（図３）の行３０３におけるクラウドＤＢ１０４へのデータ登録と、スクリプト５００（図５）の行５０２におけるタブレット１０５への通知とが、いずれも単一のクラスライブラリ「ajax.request」によって実現できている。これは、本実施形態で用いたクラウドＤＢ１０４とタブレット１０５とが、いずれもＨＴＴＰによる通信を受け取ることによって、データ登録であったり通知表示であったりといった機能を実現するようなＡＰＩ（Application Program Interface）を提供しているためである。このように、ウェブ技術であるＨＴＴＰあるいはＨＴＴＰにＪＳＯＮを組み合わせたＡＰＩは、クラウドやＩｏＴと呼ばれる技術領域で広く普及しているため、本実施形態に係る情報蓄積装置１０１のような装置は、ＨＴＴＰおよびＪＳＯＮを標準的な入出力して採用することにより、単一の仕組みによって広汎な装置と結合可能であるという利点が得られる。そもそも、本実施形態においては、スクリプト１１４からの通信機能はクラスライブラリ１１６によって提供されているため、クラスライブラリ１１６の拡充によって様々なプロトコルをＡＰＩとして持つような接続相手へと拡張可能であるという利点がある。その上で、クラスライブラリ１１６としてＨＴＴＰおよびＪＳＯＮでの通信を予め標準機能として提供しておくことにより、クラスライブラリ１１６を拡充せずとも多くの相手と接続可能である。
【００６１】
本実施形態においては、軽量ストリームＤＢ１１１としてｕＴＳＬｉｔｅを用いた。これによって、データを蓄積し後から検索する機能と、事前に登録した条件に従って後から蓄積されたデータが当該条件に合致した際に通知を行う機能とを、単一の機能部によって実現できるという利点がある。本発明の範囲はこれに限るものではなく、別のＤＢシステムを用いてもよいし、あるいはそれぞれの機能を別々に実現してもよい。例えば、データを蓄積し後から検索する機能は、リレーショナルデータベースを用いて実現してもよく、また、事前に登録した条件に従って後から蓄積されたデータが当該条件に合致した際に通知する機能は、配列やリストや連想配列や木構造やPub-SubシステムやストアドプロシジャやストリームＤＢなどの技術を用いて実現してもよい。
【００６２】
本実施形態においては、スクリプト１１４はＪａｖａＳｃｒｉｐｔ言語を用いた。ＪａｖａＳｃｒｉｐｔ言語は、ＨＴＴＰおよびＪＳＯＮと組み合わせてクラウドへの通信を記述する際に広く用いられており、様々な既存のライブラリを活用可能であるなどの利点がある。本発明の範囲はこれに限るものではなく、別のプログラミング言語を用いてもよい。
【００６３】
本実施形態においては、データ交換用符号のデータ形式にＪＳＯＮを用いた。本発明の範囲はこれに限るものではなく、別のデータ形式を用いてもよい。特に、ドキュメント指向ＤＢでは、データ形式としてＸＭＬも広く用いられており、ＸＭＬをデータ形式として用いることで、組み合わせられるクラウドＤＢの種類を広くできるという利点が得られる。
【００６４】
なお、本実施形態においては、情報蓄積装置１０１が１台の情報処理装置により実現されるものとして説明を行った。他の実施形態では、情報蓄積装置１０１は、複数台の情報処理装置の組み合わせにより実現されてもよい。
【００６５】
（第２の実施形態）
図６は、本発明の第２の実施形態に係る情報管理システム６００の構成を示す。図６において、図１に示した要素と同様の要素に同じ参照符号を付して、それらの要素についての説明を適宜省略する。情報管理システム６００では、情報蓄積装置６０１とセンサ１０３とクラウドＤＢ１０４と機器６０５とがネットワーク１０２に接続される。機器６０５は、情報処理装置の一例である。機器６０５は、第１の実施形態において説明したタブレット１０５と同様の構成を有することができる。機器６０５はセンサ６０６を含む。センサ６０６は、計測を行ってセンサデータを生成し、このセンサデータをネットワーク１０２を通じて情報蓄積装置６０１に送信する。
【００６６】
情報蓄積装置６０１は、例えば、サーバ装置やＰＣなどの情報処理装置であり、ハードウェアとして、ＣＰＵなどのプロセッサと、メモリと、ネットワーク１０２を通じて通信を行うための通信インタフェース１１９とを備える。情報蓄積装置６０１は、ディスプレイ、キーボード、マウスなどの入出力のためのインタフェースをさらに備えていてもよい。
【００６７】
情報蓄積装置６０１は、軽量ストリームＤＢ１１１、センサデータ収集部１１２、アクション対応情報６１３、バイナリ実行環境６１５、初期化部１１７、および処理部６１８を備える。処理部６１８は、通知部６１９およびプロセス実行部６２０を含む。軽量ストリームＤＢ１１１、センサデータ収集部１１２、および初期化部１１７による各種処理は、プロセッサがメモリから各種プログラムを読み出して実行することにより実現することができる。
【００６８】
バイナリ実行環境６１５は、第１の実施形態で説明したクラスライブラリ１１６と同様のクラスライブラリ（図６では図示されていない）を備える。例えば、クラスライブラリは、軽量ストリームＤＢ１１１からデータを検索するクラスと、ネットワーク１０２を通じてＨＴＴＰまたはＨＴＴＰＳプロトコルまたはＭＱＴＴ（MQ telemetry transport）プロトコルで通信するクラスとを提供する。言い換えると、バイナリ実行環境６１５は、バイナリ実行環境６１５上で動作しているプロセス６１４によって、軽量ストリームＤＢ１１１からデータを検索する指示とネットワーク１０２を通じてＨＴＴＰまたはＨＴＴＰＳプロトコルまたはＭＱＴＴで通信する指示とを記述可能である特徴を有する。
【００６９】
プロセス実行部６２０は、バイナリ実行環境６１５を使用してプロセス（バイナリファイルまたはバイナリとも称される）６１４を実行する。それにより、プロセス６１４がバイナリ実行環境６１５上で動作する。プロセス６１４は、ソースファイルが通信インタフェース１１９または入出力のためのインタフェースを通じて情報蓄積装置６０１に入力されて情報蓄積装置６０１上でコンパイルされることにより、生成される。アクション対応情報６１３は、事前に登録された条件とバイナリ実行環境６１５上で動作するプロセス６１４との対応関係を示す。
【００７０】
通知部６１９は、軽量ストリームＤＢ１１１からの通知を受けて、アクション対応情報６１３を参照して当該通知が発せられる契機となった条件に対応付けられるプロセス６１４を特定し、特定したプロセス６１４に対して通知を出力する。通知部６１９から通知を受けたプロセス６１４は、所定の処理を行う。プロセス６１４は、第１の実施形態において説明したスクリプト１１４と同様の処理を行うことができる。例えば、あるプロセス６１４は、軽量ストリームＤＢ１１１を検索する処理と、検索により得られたデータを含む、イベント発生を知らせる通知信号を、ネットワーク１０２を通じて外部装置（例えば機器６０５）に送信する処理とを行う。
なお、上記の実施に代えて、プロセス実行部６２０が、軽量ストリームＤＢ１１１からの通知を受けて、アクション対応情報６１３を参照して当該通知が発せられる契機となった条件に対応付けられるプロセス６１４を特定し、特定したプロセス６１４をバイナリ実行環境６１５を使用して実行してもよい。この場合、プロセス６１４は、起動すると所定の処理を行う。
【００７１】
初期化部１１７は、情報蓄積装置６０１の起動時に、軽量ストリームＤＢ１１１へ条件を登録し、プロセス実行部６２０にプロセス６１４を実行させ、条件とプロセス６１４との対応関係を示すアクション対応情報６１３をメモリに保持させる。アクション対応情報６１３は、情報蓄積装置６０１の起動中に、プロセス６１４からの指示に基づいて編集することが可能である。
【００７２】
図７は、情報蓄積装置６０１におけるセンサデータ登録処理のフローの一例を示す。
センサ１０３がネットワーク１０２を通じて情報蓄積装置６０１にセンサデータを送信すると、センサデータ収集部１１２は、センサ１０３からセンサデータを受け取り（ステップＳ７００）、受け取ったセンサデータを軽量ストリームＤＢ１１１に蓄積する（ステップＳ７０１）。
軽量ストリームＤＢ１１１に新たに蓄積されたセンサデータが条件に合致すると、軽量ストリームＤＢ１１１は、軽量ストリームＤＢ１１１に新たに蓄積されたセンサデータが合致した条件を示す通知を処理部６１８の通知部に出力する。処理部６１８内の通知部６１９は、アクション対応情報６１３を参照して、条件に対応付けられたプロセス６１４を特定する（ステップＳ７０２）。次いで、通知部６１９は、特定したプロセス６１４に対して通知を出力する（ステップＳ７０３）。特定されたプロセス６１４を実行しているプロセス実行部６２０は、通知部６１９から通知を受け取り（ステップＳ７０４）、軽量ストリームＤＢ１１１の検索および／またはネットワーク１０２を通じた通知信号の送出を行う（ステップＳ７０５）。
【００７３】
本実施形態に係る情報蓄積装置６０１では、第１の実施形態と同様に、単一の開発済み装置を用いて設定ファイル（プロセスまたはそのソースファイル）の入れ替えのみによって様々な機能を実現することができる。
【００７４】
図８は、一実施形態に係る情報蓄積装置７００のハードウェア構成の一例を示している。情報蓄積装置７００は、情報蓄積装置１０１または情報蓄積装置６０１であり得る。図８に示すように、情報蓄積装置８００は、ＣＰＵ８０１、メインメモリ８０２、プログラムメモリ８０３、補助記憶装置８０４、通信インタフェース８０５、および外部インタフェース８０６を備え、これらは、バス８０７を通じて接続されている。
【００７５】
ＣＰＵ８０１は、プログラムメモリ８０３に記憶されているプログラムを読み出してメインメモリ８０２に展開し、そのプログラムを実行することで、情報蓄積装置１０１または情報蓄積装置６０１に関して上述した機能を実現する。メインメモリ８０２は、例えばＳＲＡＭ（Static Random Access Memory）またはＤＲＡＭ（Dynamic Random Access Memory）である。プログラムメモリ８０３は、ＲＯＭ（Read-Only memory）であってもよく、補助記憶装置８０４の一部として実施されてもよい。補助記憶装置８０４は、例えば、ＨＤＤ、ＳＳＤであり、各種データを記憶する。
【００７６】
通信インタフェース８０５は、有線通信モジュール、無線通信モジュール、またはそれらの組み合わせを含み、外部機器（例えばセンサ１０３やクラウドＤＢ１０４）と通信する。外部インタフェース８０６は、キーボードなどの入力装置、ディスプレイ装置などの出力装置などと接続するためのインタフェースである。
【００７７】
ＣＰＵ８０１は、プロセッサの一例である。プロセッサは、ＣＰＵ８０１などの汎用の処理回路に限らず、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field Programmable Gate Array）などの専用の処理回路であってもよい。プロセッサとして専用の処理回路が使用される場合、プログラムはその専用の処理回路内に存在していてもよい。プロセッサは、１つまたは複数の汎用の処理回路および／または１つまたは複数の専用の処理回路を含むことができる。
【００７８】
上述した処理を実現するプログラムは、コンピュータで読み取り可能な記録媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記録媒体に記憶される。記録媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどを使用することができる。記録媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上述した処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由で情報蓄積装置８００にダウンロードさせてもよい。
【００７９】
なお、本発明のいうセンサデータとは、センサデバイスによって計測される実世界の情報を含み、その他様々な情報も対象とすることができる。具体的な例を挙げると、温度や湿度、電流あるいは電圧値、流体の流量、物質の濃度、明度、騒音、位置、加速度などを含むセンサデバイスが計測した値を取り扱ってよく、またそれに限らず、センサ以外の例えばＷｅｂやインターネットを経由して取得した情報であってもよい。さらに、それら値に加えて、センサの特性や状態、計測日時などを示すメタデータを含む情報であってもよい。
【００８０】
本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図１】
2018088490.tif 000003
【図２】
2018088490.tif 000004
【図３】
2018088490.tif 000005
【図４】
2018088490.tif 000006
【図５】
2018088490.tif 000007
【図６】
2018088490.tif 000008
【図７】
2018088490.tif 000009
【図８】
2018088490.tif 000010
【国際調査報告】
2018088490.tif 000011
2018088490.tif 000012