(57)【要約】【課題】比較的小さな計算量および使用メモリによって、センサ情報などのデータをチャンクを生成しつつ順次蓄積し、検索を行う情報記録方法および情報記録装置及びプログラムを提供する。【解決手段】情報記録装置１００は、情報保持部１１１へのデータ蓄積に先立って情報選択部１１０による分類選択を行い、その結果に基づいて予め区分けして情報を記録する。情報切り出し部１１２は、該区分けされた記憶領域の中の一つに含まれるデータを含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部１１１から削除する。【選択図】図１
2014164382.tif 000002
【特許請求の範囲】
【請求項１】
複数の属性値を含むデータ群を記録する情報記録方法であって、
データを予め定められた条件により分類選択する第１の手順と、
該分類結果に従って情報保持部の区分けされた記憶領域にデータを保持する第２の手順と、
該区分けされた記憶領域の中の一つに含まれるデータを含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する第３の手順とを具備することを特徴とする情報記録方法。
【請求項２】
該第２の手順は、該区分けされた記憶領域の一つ一つをファイルとして保持し、
該第３の手順は、該ファイルをチャンクのファイル名へとリネームすることで該チャンクの生成と該削除とを一度に行うことを特徴とする請求項１に記載の情報記録方法。
【請求項３】
複数の属性値を含むデータ群を記録する情報記録方法であって、
データには少なくとも時刻情報を含み、
該データを情報保持部に保持する第１の手順と、
該データ集合の部分集合を含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する第２の手順と、
該情報保持部が保持するデータならびに該生成されたチャンク群とを対象として与えられた条件に合致するデータを検索する第３の手順と、
該生成されたチャンク内に含まれるデータの時刻情報の最大値ならびに最小値をチャンクごとに保持する第４の手順とを具備し、
該第３の手順は該与えられた条件が時刻情報を含む場合には該第４の手順の持つ時刻情報と照合することによって時刻情報が合致するチャンクのみを検索対象とすることを特徴とする情報記録方法。
【請求項４】
複数の属性値を含むデータ群を記録する情報記録装置に用いられる情報記録方法であって、
データを情報保持部に保持する第１の手順と、
該データ集合の部分集合を含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する第２の手順と、
該情報保持部が保持するデータならびに該生成されたチャンク群とを対象として与えられた条件に合致するデータを検索する第３の手順とを具備し、
該第３の手順において、
生成順序の古いチャンクから順にデータ検索ならびに検索結果の返却を全てのチャンクに対して繰り返し行う処理と、
該情報保持部に対するデータ検索ならびに検索結果の返却を行う処理とを
順に実行することによって、登録順序の古いデータから順に検索結果を返却することを特徴とする情報記録方法。
【請求項５】
さらに、該情報記録装置は、データの検索動作中に別のデータの登録要求を受け付けた場合にも正常に動作することができる排他制御手段を有し、
該第３の手順は、検索結果を順次返却する際に、一の検索結果を返却した時点で別のデータの登録要求を受け付けた際にそのデータの登録要求の処理を完了して該検索結果に引き続く検索処理を継続実行できるように該排他制御手段を用いて制御する手順と、
データ検索ならびに検索結果の返却を全てのチャンクに対して繰り返し行った後に他のデータの登録要求の処理に起因して当初存在しなかった新たなチャンクが当該検索処理中に追加されていることを検出する手順と、
該追加されたチャンクに対してデータ検索ならびに検索結果の返却を行う手順とを有することを特徴とする請求項４に記載の情報記録方法。
【請求項６】
複数の属性値を含むデータ群を記録する情報記録装置であって、
データを予め定められた条件により分類選択する情報選択部と、
該分類結果に従って区分けされた記憶領域にデータを保持する情報保持部と、
該区分けされた記憶領域の中の一つに含まれるデータを含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する情報切り出し部とを具備することを特徴とする情報記録装置。
【請求項７】
該情報保持部は該区分けされた記憶領域の一つ一つをファイルとして保持し、
該情報切り出し部は該ファイルをチャンクのファイル名へとリネームすることで該チャンクの生成と該削除とを一度に行うことを特徴とする請求項６に記載の情報記録装置。
【請求項８】
複数の属性値を含むデータ群を記録する情報記録装置であって、
該データには少なくとも時刻情報を含み、
データを保持する情報保持部と、
該データ集合の部分集合を含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する情報切り出し部と、
該情報保持部が保持するデータならびに該生成されたチャンク群とを対象として与えられた条件に合致するデータを検索する情報検索部と、
該生成されたチャンク内に含まれるデータの時刻情報の最大値ならびに最小値をチャンクごとに保持するメタ情報保持部とを具備し、
該情報検索部は該与えられた条件が時刻情報を含む場合には該メタ情報保持部の持つ時刻情報と照合することによって時刻情報が合致するチャンクのみを検索対象とすることを特徴とする情報記録装置。
【請求項９】
複数の属性値を含むデータ群を記録する情報記録装置であって、
データを保持する情報保持部と、
該データ集合の部分集合を含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する情報切り出し部と、
該情報保持部が保持するデータならびに該生成されたチャンク群とを対象として与えられた条件に合致するデータを検索する情報検索部とを具備し、
該情報記録装置はさらに、該情報検索部において、
生成順序の古いチャンクから順にデータ検索ならびに検索結果の返却を全てのチャンクに対して繰り返し行う手段と、
該情報保持部に対するデータ検索ならびに検索結果の返却を行う手段とを
順に実行することによって、登録順序の古いデータから順に検索結果を返却することを特徴とする情報記録装置。
【請求項１０】
さらに、データの検索動作中に別のデータの登録要求を受け付けた場合にも正常に動作することができる排他制御手段を有し、
該情報検索部は、検索結果を順次返却する際に、一の検索結果を返却した時点で別のデータの登録要求を受け付けた際にそのデータの登録要求の処理を完了して該検索結果に引き続く検索処理を継続実行できるように該排他制御手段を用いて制御する手段と、
データ検索ならびに検索結果の返却を全てのチャンクに対して繰り返し行った後に他のデータの登録要求の処理に起因して当初存在しなかった新たなチャンクが当該検索処理中に追加されていることを検出する手段と、
該追加されたチャンクに対してデータ検索ならびに検索結果の返却を行う手段とを有することを特徴とする請求項９に記載の情報記録装置。
【請求項１１】
複数の属性値を含むデータ群を記録する情報記録装置により実行されるプログラムであって、前記情報記録装置を、
データを予め定められた条件により分類選択し、
該分類結果に従って情報保持部の区分けされた記憶領域にデータを保持し、
該区分けされた記憶領域の中の一つに含まれるデータを含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除するように動作させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、センサ情報データベースを構成する情報記録方法及び情報記録装置及びプログラムに関する。
【背景技術】
【０００２】
従来、センサの計測データのような情報すなわちセンサ情報を効率的に蓄積することを目的として、チャンクと呼ばれるデータファイルを生成する方法ならびに装置（特許文献1）が提案されていた。
該装置の基本的な動作の要点は、特許文献1の記載を、以下で述べていく本発明の記載内容に倣って適宜読み替えると、次の特徴で表される。「複数の属性値を含むデータ群を保持する情報保持部と、前記情報保持部が保持する前記データのうち、前記属性値に関して予め定められた条件を満たす情報を選択する情報選択部と、前記情報選択部が選択した前記情報を含む前記予め定められた条件毎のファイルを生成し、前記情報選択部が選択した前記情報を前記情報保持部から削除する情報切り出し部と、を具備することを特徴とする。」
上記従来技術の特徴によれば、情報保持部がセンサ情報の一時的なバッファとして機能し、センサ情報のアーカイブファイルであるチャンクと呼ばれるデータファイルを順次生成していく。チャンクは予め定められた条件、例えば「温度センサに関するデータ」等によって整理された状態で生成される。この条件は、例えば、個々のデータが複数の属性値を含むため、その属性の値あるいは属性の名前等によって判断してよい。これによって、大量のデータを長期間に渡って高速に蓄積でき、情報保持部は一定程度の記憶領域で実現でき、かつ、チャンクはファイル転送等によって容易に別のコンピュータに移し替えて使用することができる等の利点が得られる。
【０００３】
また従来、多次元検索木UBI-Treeのような木構造アルゴリズムを用いて、効率的にチャンクを生成する方法（非特許文献2）があった。この従来技術によれば、情報保持部を木構造アルゴリズムで保持することにより、木構造で近傍にあるデータすなわちデータ値が相互に関連の深いデータをひとまとまりとして、チャンクを生成することができる。このため、様々な種類のセンサ情報を一度に取り扱う場合にも柔軟な動作が可能である。
【０００４】
一方、近年、スマートフォンに代表される小型の携帯型装置が普及している。これらの装置は、計算速度やメモリ等に関してはパソコンやサーバ装置に比べて劣る反面、小型軽量で可搬性に優れ、かつ、加速度センサやGPSやジャイロセンサや近接センサや温度計や照度計やカメラや音量計やマイクやNFCやFeliCaなどの、数多くのセンサを搭載しているという特徴がある。また、携帯電話回線や無線LAN等によってインターネット接続も可能であり、内蔵センサに加えてそれらネット上の情報も併せて取り扱うことができる。従って、これらの情報を順次蓄積したいという要求が高まっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2011-170791号公報
【非特許文献】
【０００６】
【非特許文献１】「多次元検索木UBI-Treeを用いたスキーマレスなセンサデータの高品質なチャンク生成方式」荒川 豊ほか著、電子情報通信学会 2012年総合大会、B-19-16、2012年3月
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来技術におけるチャンク生成ならびにそれを特徴とする情報記録装置では、スマートフォン等で用いる際、計算量（処理の量）や必要メモリが大きすぎるといった問題があった。具体的には以下のような問題が挙げられる。
まず、情報保持部が多くのメモリを要求するとともに、情報保持部から情報を選択する動作に多くの計算量を要するという問題があった。例えば特許文献1には一実施形態が開示されているが、この情報選択動作においては、情報保持部の保持するデータ内容を全て調べて、情報切り出しの対象を選択する必要があり、計算量が大きかった。また例えば非特許文献1では、情報保持部をUBI-Tree検索木で構成する形態が開示されているが、この索引が占めるメモリ量が大きかった。
【０００８】
次に、情報切り出しは情報保持部からチャンクへのデータの複製を伴うが、この処理の量が大きいという問題があった。
次に、データ検索の際の計算量が大きいという問題があった。チャンクの形で保存されているデータに対して検索を行う際、全てのデータを検索すると、大量のデータを調査しなければならず、このための処理の量が大きかった。
【０００９】
次に、データ検索で得られたセンサ情報を、アプリケーションプログラムが使用する際に必要となるメモリが大きくなってしまうという問題があった。情報記録装置、いわゆるデータベース管理システムに対してアプリケーションが検索要求を発行すると、データベース管理システムは検索結果のデータをアプリケーションに返却する。センサ情報を扱うアプリケーションでは、例えば加速度の分析処理を行う場合等、一定期間のセンサ情報が時系列的にどのように変化するかを解析して、その特徴を抽出することが求められる。このために必要となるデータの総量は比較的大きくなってしまう。PC上での解析であれば問題ないデータ量であっても、スマートフォン等ではアプリケーションプログラムで使用可能なメモリ領域に制約がある場合が多く、上記のような処理がメモリ制約によって記述できないという問題があった。
【００１０】
さらに、処理性能の関係からデータ検索には一定の時間がかかってしまうが、その間にも新たなセンサ情報の蓄積処理は正常に継続されなければならず、このような要求を満たすことができないという問題があった。
本発明は、このような事情を考慮してなされたものであり、その目的は、比較的小さな計算量および使用メモリによって、センサ情報などのデータをチャンクを生成しつつ順次蓄積し、検索を行う情報記録方法及び情報記録装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
この発明は上述した課題を解決するためになされたもので、本発明の一様態による情報記録装置は、情報保持部へのデータ蓄積に先立って情報選択部による分類選択を行い、その結果に基づいて予め区分けして情報を記録する。これによって、情報保持部のメモリ量が小さくてすむとともに、情報切り出しの計算量が小さくてすむ。
【００１２】
また、本発明の一様態による情報記録装置は、上述の情報記録装置であって、上記区分けはファイルを個々に作成することで行い、チャンクの生成はファイルのリネームによって行う。これによって、情報切り出しの処理量が小さくてすむ。
また、本発明の一様態による情報記録装置は、チャンクに含まれる時刻情報の範囲をメタ情報保持部が記憶しておく。これによって、検索の際に不要なチャンクのデータファイルへのアクセス処理を行わなくてすむ。
【００１３】
また、本発明の一様態による情報記録装置は、検索結果をアプリケーションに返却する際、複数回に分けて結果を返却する。その際、回数分けの単位はチャンクごととし、生成順序が古いチャンクから処理対象とする。これによって、アプリケーションは検索結果のデータを細切れに受け取ることができるため、一度の処理に要するメモリが少なくてすむ。さらに、アプリケーションは検索結果のデータを蓄積された順番で受け取ることができるため、時系列順にデータ解析するといった処理を記述する際、前回受け取った検索結果等は適宜破棄することができるようになるため、一度の処理に要するメモリが少なくてすむ。一方、これを実現する情報記録装置は簡易な構成あるいは処理でよく、計算量および必要メモリが小さくてすむ。
【００１４】
また、本発明の一様態による情報記録装置は、上述の情報記録装置であって、排他制御手段すなわちマルチスレッドのロックを適切に確保・解放することで複数スレッドによる同時要求を正しく取り扱うことができる。その際、一般的にはデータの読み出し（検索）中には他のデータの書き込み（登録）を同時に行うことはできず処理が待たされることが多いが、該情報記録装置においては、前記のように検索結果のデータを細切れに受け取っている際、その受け取ったアプリケーションプログラムから他のデータの登録要求を受け付けるように、ロックの解放を行う。さらに、そのようなデータ登録要求があった際、それに起因して新たなチャンクが生成される場合があるが、そのような生成を検出する手段と、当該チャンクに対して追加でデータ検索ならびに検索結果の返却を行う手段とを具備することを特徴とする。これによって、データ検索に時間がかかる場合であっても、新たなセンサ情報の蓄積を継続して行うことができ、かつ、そのような蓄積によって該データ検索の結果にデータ抜け等の矛盾を来すことなく正常に動作を継続できる。
【００１５】
より詳細には、以下のようにして、課題を解決する。
複数の属性値を含むデータ群を記録する情報記録装置であって、データを予め定められた条件により分類選択する情報選択部と、該分類結果に従って区分けされた記憶領域にデータを保持する情報保持部と、該区分けされた記憶領域の中の一つに含まれるデータを含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する情報切り出し部とを具備する。
【００１６】
該情報保持部は該区分けされた記憶領域の一つ一つをファイルとして保持し、該情報切り出し部は該ファイルをチャンクのファイル名へとリネームすることで該チャンクの生成と該削除とを一度に行う。
複数の属性値を含むデータ群を記録する情報記録装置であって、該データには少なくとも時刻情報を含み、該データを保持する情報保持部と、該データ集合の部分集合を含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する情報切り出し部と、該情報保持部が保持するデータならびに該生成されたチャンク群とを対象として与えられた条件に合致するデータを検索する情報検索部と、該生成されたチャンク内に含まれるデータの時刻情報の最大値ならびに最小値をチャンクごとに保持するメタ情報保持部とを具備し、該情報検索部は該与えられた条件が時刻情報を含む場合には該メタ情報保持部の持つ時刻情報と照合することによって時刻情報が合致するチャンクのみを検索対象とする。
【００１７】
複数の属性値を含むデータ群を記録する情報記録装置であって、該データを保持する情報保持部と、該データ集合の部分集合を含むチャンクと呼ばれるデータファイルを生成し、該生成されたデータは該情報保持部から削除する情報切り出し部と、該情報保持部が保持するデータならびに該生成されたチャンク群とを対象として与えられた条件に合致するデータを検索する情報検索部とを具備し、該情報記録装置はさらに、該情報検索部において、生成順序の古いチャンクから順にデータ検索ならびに検索結果の返却を全てのチャンクに対して繰り返し行う手段と、該情報保持部に対するデータ検索ならびに検索結果の返却を行う手段とを順に実行することによって、登録順序の古いデータから順に検索結果を返却する。
【００１８】
さらに、データの検索動作中に別のデータの登録要求を受け付けた場合にも正常に動作することができる排他制御手段を有し、該情報検索部は、検索結果を順次返却する際に、一の検索結果を返却した時点で別のデータの登録要求を受け付けた際にそのデータの登録要求の処理を完了して該検索結果に引き続く検索処理を継続実行できるように該排他制御手段を用いて制御する手段と、データ検索ならびに検索結果の返却を全てのチャンクに対して繰り返し行った後に他のデータの登録要求の処理に起因して当初存在しなかった新たなチャンクが当該検索処理中に追加されていることを検出する手段と、該追加されたチャンクに対してデータ検索ならびに検索結果の返却を行う手段とを有する。
【発明の効果】
【００１９】
以上述べたように、本発明によれば、比較的小さな計算量および使用メモリによって、センサ情報などのデータをチャンクを生成しつつ順次蓄積し、検索を行う情報記録方法および情報記録装置及びプログラムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態における装置構成を示すブロック図。
【図２】本実施の形態におけるディレクトリ構成を示す図。
【図３】上記図２に示したディレクトリ構成におけるファイル（２０３）の中身の一例を示す図。
【図４】上記図２に示したディレクトリ構成におけるファイル（２０６）の中身の一例を示す図。
【図５】上記図２に示したディレクトリ構成におけるファイル（２０４，２０５）の中身の一例を示す図。
【図６】上記図１に示したメタ情報保持部の保持する情報を示す図。
【図７】本実施の形態において、登録しようとするセンサデータの一例を示す図。
【図８】本実施の形態における登録処理のフローチャート。
【図９】本実施の形態において、登録処理後のファイル(203)の中身および新たに生成されるファイルの中身を示す図。
【図１０】本実施の形態において、登録処理後のメタ情報保持部の保持する情報を示す図。
【図１１】本実施の形態において、登録処理ならびに検索処理の動作シーケンスの一例を示す図。
【図１２】本実施の形態における検索条件を示す図。
【図１３】本実施の形態における検索処理のフローチャート。
【図１４】本実施の形態における検索結果を示す図。
【図１５】本実施の形態において、検索処理中に登録処理を行った場合の動作シーケンスの一例を示す図。
【図１６】本実施の形態において、チャンクを同一ファイルシステムに配置した場合のディレクトリ構成例を示す図。
【発明を実施するための形態】
【００２１】
本発明の実施の形態の一つを以下に示す。
図１は本実施の形態における装置構成を示す。情報記録装置１００は温度センサ１０３と加速度センサ１０４を具備し、アプリケーション１０２のプログラムとライブラリ１０１のプログラムが動作する。ライブラリ１０１内には、情報選択部１１０と情報保持部１１１と情報切り出し部１１２と情報検索部１１３とメタ情報保持部１１４があり、さらに、マルチスレッド動作を保護するためのロック１１５を１つ持つ。ロック１１５は一般的なread-writeロック(shared-exclusiveロック)である。この他、情報記録装置１００は一般的なスマートフォンが具備するような、タッチパネルディスプレイ１３０と携帯電話回線のデータ通信機能１３１と無線LAN(WiFi)通信機能１３２と内蔵フラッシュメモリ１２０とmicroSDカードスロット１２１とを具備する。カードスロット１２１にはメモリカードが挿入されているものとする。
【００２２】
アプリケーション１０２は名称を「apl1」と呼称する。また、温度センサ１０３と加速度センサ１０４は、大分類を「smphone」と呼称し、小分類をそれぞれ「temperature」と「accel」と呼称するものとする。
上記に示した情報記録装置１００を構築するには、例えば、次のような方法がある。まず、ライブラリ１０１のプログラムは予め作成しておく。次に、アプリケーション１０２のプログラムを作成し、上記作成したライブラリ１０１のプログラムと共にコンパイルして、スマートフォン用の実行ファイルを得る。該実行ファイルを、記録媒体あるいは通信回線を通じてスマートフォン用アプリとしてインストールする。以上が情報記録装置１００の構築方法の一例である。このような構築方法は、スマートフォンのアプリケーション開発において一般的に行われている。なお、アプリケーション１０２のプログラムとライブラリ１０１のプログラムの具体的な中身については、以下で詳細に説明していく。
【００２３】
図２はディレクトリ構成を示す。情報記録装置１００は、内蔵フラッシュメモリ１２０をディレクトリパス/mnt/sdcardにマウントし、microSDカードを/mnt/sdcard/external_sdにマウントする。このようなマウント状況は、市販のスマートフォンにおいて一般的な構成の一例である。図２はそれらマウントされたディレクトリおよびファイルの配置の様子を示している。例えば、ファイル(203)は
パス/mnt/sdcard/apl1/smphone/temperature/pool.txt  
で示されるファイルであることが図示されており、また、ファイル(204)は
パス/mnt/sdcard/external_sd/chunk/smphone/temperature/01.cnk
で示されるファイルであることが図示されている。
【００２４】
パスの意味について説明する。ディレクトリ名apl1とは、アプリケーション１０２の名称「apl1」に由来する。ディレクトリ名smphoneとは、上述の大分類の名称「smphone」に由来する。ディレクトリ名temperatureとは、上述の小分類の名称「temperature」に由来し、同様に、ディレクトリ名accelとは、上述の小分類の名称「accel」に由来する。ディレクトリ名chunkとは、以下で説明する本装置の動作によって次々に生成される、チャンクと呼ばれるデータファイルを格納することに由来する。
【００２５】
図中、記号201は、情報保持部１１１を示している。本実施の形態においては、情報保持部１１１とは、特定のフォルダ以下に配置されたファイル群により実現される。ここではセンサの種類によって、ファイル(203)とファイル(206)の2つの記憶領域に区分けされている様子が図示されている。すなわち、ファイル(203)は大分類「smphone」かつ小分類「temperature」に関するセンサデータを保持するために区分けされており、同様に、ファイル(206)は大分類「smphone」かつ小分類「accel」に関するセンサデータを保持するために区分けされている。
【００２６】
また、図中、記号(207)は、以下に示す動作の一例によって、新たなファイルが生成される様子を説明するために本図に記載している。具体的な生成手順は以下で詳細に説明していく。
図３はファイル(203)の中身を示す。既に示したように、該ファイルは大分類「smphone」かつ小分類「temperature」に関するセンサデータ、すなわち、温度センサ１０３から得られた情報を保持する。ここでは３つのセンサデータが保持されている様子が図示されている。例えば行(301)は、日時(date)が2012年12月06日02時36分18秒かつ大分類(subject)がsmphoneかつ小分類(type)がtemperatureかつ観測値(value)が3.7(度)であるという一の観測結果のデータを表す。なお簡単のため、以下では、時刻表記に「2012-12-06 02:36:18」のような記載も用いることとする。このように、本実施の形態においては、それぞれのセンサデータは「キー＝値」の任意個の並びから構成されるデータ形式によって記述することとする。
【００２７】
なお、本発明のいうセンサ情報とは、上記に限らず様々な情報がその対象となるものであって、具体的に一例を挙げると、温度や湿度、電流あるいは電圧値、流体の流量、物質の濃度、明度、騒音、位置、加速度などを含むセンサデバイスが計測した値を取り扱ってよく、またそれに限らず、センサ以外の例えばWebやインターネットを経由して取得した情報であってもよい。さらに、それら値に加えて、センサの特性や状態、計測日時等を示すメタデータを含む情報であってもよい。
【００２８】
図４はファイル(206)の中身を示す。既に示したように、該ファイルは大分類「smphone」かつ小分類「accel」に関するセンサデータ、すなわち、加速度センサ１０４から得られた情報を保持する。ここでは2つのセンサデータが保持されている様子が図示されている。例えば行(341)は、日時(date)が2012-12-07 13:28:10かつ大分類(subject)がsmphoneかつ小分類(type)がaccelであって、かつ、X軸観測値(x)が0.52かつY軸観測値(y)が0.23かつZ軸観測値(z)が9.78であるという一の観測結果のデータを表す。Z軸だけ値が大きいのは重力加速度が観測されている様子を表す。また、行(342)は日時が2012-12-07 13:28:11であり、行(341)からは1秒しか経過していない。これは加速度センサ１０４の時間軸分解能が高いためであり、このように、センサデータが観測され登録操作が行われる間隔はセンサの種類によって様々である。
【００２９】
図５はファイル(204)の中身およびファイル(205)の中身を示す。いずれのファイルも大分類(subject)がsmphoneかつ小分類(type)がtemperatureに関する観測結果のデータである。それぞれのファイルは4つずつのセンサデータを保持している。また、ファイル内で日時(date)は古い順に並んでおり、かつ、ファイル名が若いファイル(204)よりファイル名が大きいファイル(205)のほうが、日時(date)が新しいセンサデータを保持している。
【００３０】
本実施の形態においては、このように、観測されたセンサデータを4つずつ組にして、チャンクと呼ばれるデータファイルを生成していく。データファイルは、センサの大分類および小分類ごとに別々のディレクトリに、通し番号を含むファイル名で格納される。新たなセンサデータが観測され登録操作が行われるに従って、このようなチャンクが次々と生成されていく。以下ではまず、この登録操作の具体的な処理手順を説明し、その後、これらのセンサデータに対して検索操作を行う処理手順を説明していく。
【００３１】
図６はメタ情報保持部１１４の保持する情報を示す。桁(351)は大分類(subject)を表し、桁(352)は小分類(type)を表し、桁(353)はチャンクファイルの通し番号を表し、桁(354)は時刻(date)の最小値を表し、桁(355)は時刻(date)の最大値を表す。一方、行(356)は、大分類(subject)がsmphoneかつ小分類(type)がtemperatureかつチャンクファイルの通し番号が01であるチャンクのデータファイル、すなわちファイル(204)に含まれるデータ群は、時刻(date)の最小値が2012-12-01 05:45:12かつ最大値が2012-12-03 01:45:30であることを表している。実際、図５に示したファイル(204)の中身において、行(311)が時刻の最小値であり、かつ、行(314)が時刻の最大値であって、これは上述の記載内容と合致している。
【００３２】
図７は登録しようとするセンサデータを示す。ここでは、2012-12-07 13:28:20という時刻に温度センサ１０３が14.8度という観測値を得たとする。センサデータ(401)は上記内容を記載したものである。記載の規則は既に述べた通りである。
【００３３】
図８は登録処理のフローチャートを示す。これに沿って処理手順を説明していく。
アプリケーション１０２がライブラリ１０１のデータ登録関数を呼び出すと、ライブラリ１０１は登録処理を開始する(手順410)。ライブラリ１０１は、まず、ロック１１５を取得する(手順411)。ここではデータへの書き込みが発生するので、writeロックを取得する。なお、このようにライブラリ関数の入口でロックを確保し終了直前で解放するやり方は、マルチスレッドのプログラミング技法として一般的である。次に、情報選択部１１０は、センサデータ(401)から分類情報すなわち大分類(subject)および小分類(type)の値を取得する(手順412)。ここではそれぞれ「smphone」「temperature」という値が得られる。次に、ライブラリ１０１は、センサデータ(401)を情報保持部１１１内の区分けされた記憶領域のうち該分類情報で選択される領域へと保存する。すなわち、当該大分類および小分類のパス名で表されるファイル(203)の末尾行に、センサデータ(401)の行を追記する(手順413)。
【００３４】
次に、情報切り出し部１１２は、該領域すなわちファイル(203)のサイズ判定を行い、チャンク生成処理を実行するかどうかを判定する(手順414)。サイズ判定とは、例えば、ファイルの行数あるいはバイト数が一定の閾値を越えたかどうかによって判定してよい。本実施の形態においては、ファイルの行数が4行以上となった時点で、以下に示す手順でチャンク生成処理を実行することとする。
【００３５】
情報切り出し部１１２は、まず、ファイル移動によるチャンク生成を試みる(手順415)。生成すべきファイルは、図２における記号(207)のディレクトリ位置に、通し番号において次の番号を含むファイル名を生成する。すなわちこの例においては、  
パス/mnt/sdcard/external_sd/chunk/smphone/temperature/03.cnk  
で示されるファイルを生成することを行おうとする。
【００３６】
ここで、ファイル移動によるチャンク生成とは、  
「/mnt/sdcard/apl1/smphone/temperature/pool.txt」  
というファイルを、  
「/mnt/sdcard/external_sd/chunk/smphone/temperature/03.cnk」
にリネームする操作を行うことにより実現する。一般に、Linux（登録商標）やWindows（登録商標）などのOSでは、ファイルのリネームの際に別のディレクトリ名を指定することによって、ファイルのディレクトリ間移動も同時に行うことができる。ただし、移動元と移動先が同じディスク装置である場合に限り、リネーム操作が成功する。
【００３７】
本実施の形態においては、既に述べたように、移動元のディレクトリは内蔵フラッシュメモリ１２０上に存在し、移動先のディレクトリはmicroSDカードスロット１２１に挿入されたメモリカード上に存在する。すなわち、移動元と移動先は別のディスク装置なので、該リネーム操作は失敗する(手順416における成功判定)。
【００３８】
次に、情報切り出し部１１２は、ファイルをコピーして元ファイルを削除することでファイルの移動操作を代替し、これによってチャンクの生成を行う。すなわち、ファイル(203)を、  
「/mnt/sdcard/external_sd/chunk/smphone/temperature/03.cnk」  
にコピーする(手順417)。続いて、ファイル(203)を削除する(手順418)。
【００３９】
次に、情報切り出し部１１２は、新たなファイル(203)を作成する(手順419)。内容は空とする。
図９は登録処理後のファイル(203)の中身および新たに生成されるファイルの中身を示す。行(331)から行(333)は、元のファイル(203)に記載されていた内容である。行(334)は、手順413によって追記された行であり、センサデータ(401)の内容である。
【００４０】
次に、情報切り出し部１１２は、上記一連の手順によって作成した新たなチャンクのデータファイルが含む時刻の最小値と最大値に関する情報を、メタ情報保持部１１４に追記する(手順420)。
図１０は登録処理後のメタ情報保持部１１４の保持する情報を示す。行(359)が手順420によって新たに追記された情報であり、大分類(subject)がsmphoneかつ小分類(type)がtemperatureであって、03という通し番号を持つチャンクは、時刻(date)の最小値が2012-12-06 02:36:18かつ、最大値が2012-12-07 13:28:20であることを表している。これらの時刻は、該生成されたチャンクにおける行(331)および行(334)の時刻情報と同じものである。
【００４１】
最後に、ライブラリ１０１は、ロック１１５を解放(手順421)して、ライブラリの呼び出し元にリターンし、一連の処理を完了する。
図１１は登録処理ならびに検索処理の動作シーケンスの一例を示す。本図１１のうち、記号560から記号561までが、上記に示した登録処理に関するアプリケーション１０２とライブラリ１０１とのインタラクションを図示している。すなわち、本図１１において、スレッドA(551)がアプリケーション１０２内で走行しライブラリ１０１を呼び出したスレッドであり、データ登録関数呼び出し(560)によってライブラリ１０１に制御が移り、リターン(561)で呼び出し元へと制御が復帰する。
【００４２】
以下では、次に、検索処理について説明していく。図１１においては、記号562から記号567までの動作にあたる。
図１２は検索条件を示す。検索条件(501)は、時刻(date)の範囲が2012-12-04 12:00:00から2012-12-06 12:00:00に含まれ、かつ、大分類(subject)がsmphoneかつ小分類(type)がtemperatureという条件を全て満たすデータを検索するという条件を表している。
【００４３】
なお、本実施の形態においては、大分類(subject)および小分類(type)の値を検索条件として指定することは必須である。一般に、アプリケーション１０２は自分が登録したデータのsubjectおよびtypeは把握しているため、この制約は問題とはならない。
【００４４】
図１３は検索処理のフローチャートを示す。本図１３および図１１に沿って処理手順を説明していく。
アプリケーション１０２がライブラリ１０１のデータ検索関数を呼び出す(記号562)と、ライブラリ１０１は検索処理を開始する(手順510)。呼び出しの際、アプリケーション１０２は検索条件(501)に加えて、コールバック関数を引数として渡す。このような操作は、例えばプログラミング言語Cであれば関数ポインタを引数として渡すことで容易に実現でき、一般的なプログラミング技法である。該関数が呼び出されると、情報検索部１１３は、まず、ロック１１５を取得する(手順511)。ここではデータへの読み出しのみが発生するので、readロックを取得する。
【００４５】
次に、情報検索部１１３は、検索候補となるチャンクのファイルリストを取得する(手順512)。ここでいう検索候補とは、検索条件から取得された分類情報に適合するチャンクであって、かつ、メタ情報保持部１１４が保持する時刻情報の範囲と照らし合わせて対象データを含む可能性があるファイルのことである。具体的には、本例においてはこの時点で「01.cnk」「02.cnk」「03.cnk」の3つのチャンクが、検索条件(501)から取得された分類情報すなわち大分類(subject)がsmphoneかつ小分類(type)がtemperatureに該当する保存ディレクトリである  
パス/mnt/sdcard/external_sd/chunk/smphone/temperature/
に存在している。ここで、この3つのファイルのそれぞれに対して、メタ情報保持部１１４から該当する行を探し、時刻の最小値と最大値を得る。例えば、01.cnkに対しては、最小値が2012-12-01 05:45:12かつ最大値が2012-12-03 01:45:30という情報を得る。これと、検索条件(501)が含む時刻情報の範囲とを比較し、少しでも重なりがあるかどうかを判定する。例えば、01.cnkに対しては、検索条件(501)が含む時刻情報の範囲は2012-12-04 12:00:00から2012-12-06 12:00:00であるから、重なりは無いと判定され、従って01.cnkは検索候補ではないと判断できる。同様にして、02.cnkと03.cnkについては、時刻情報の範囲に重なりがあると判定され、これらは検索候補であると判断できる。結果として、該ファイルリストとして、02.cnkおよび03.cnkというリストが得られる。
【００４６】
次に、情報検索部１１３は、ロック１１５を解放する(手順513)。この時点で、マルチスレッド処理における他のスレッドからのデータ登録要求を、ライブラリ１０１が受け付け可能となる。
以降、該ファイルリストをファイル名の小さい順に、手順515から手順517までを繰り返し実行する(手順514)。この例では、まず02.cnkに対する処理を行い、次に03.cnkに対する処理を行う。
【００４７】
情報検索部１１３は、当該ファイルを読み込み(手順515)、その中のデータに対して検索条件(501)に合致するものを抽出する(手順516)。例えば、02.cnkに対する処理の場合、行(323)と行(324)が抽出される。次いで、情報検索部１１３は、該抽出結果が空でなかった場合、該抽出結果を検索結果としてコールバックを行う(手順517および記号563)。コールバック先は、アプリケーション１０２から渡されたコールバック関数である。コールバック関数から処理がリターン(記号564)した後、情報検索部１１３は処理を継続する。
【００４８】
図１４は検索結果を示す。コールバック関数に渡される検索結果(591)の内容は上記の通りである。
また例えば、03.cnkに対する処理の場合、行(331)が抽出される。これを検索結果としてコールバックを行う(手順517および記号565)。コールバック関数に渡される検索結果(592)の内容は上記の通りである。コールバック関数から処理がリターン(記号566)した後、情報検索部１１３は処理を継続する。
【００４９】
このように、検索結果は複数回に分けてコールバックされるが、その際に含まれるデータは登録された順すなわちdateの古いものから新しいものの順番で返却されている。このため、アプリケーションが検索結果のデータを時系列に沿って分析する際、k回目のコールバックを受けた時点で(k-1)回目までのコールバックで返されたデータは破棄することができ、アプリケーションの必要メモリ量を小さく抑えることができるという効果が得られる。
【００５０】
該ファイルリストの全てのファイルを処理完了したのち(手順514)、情報検索部１１３は、再度ロック１１５を取得する(手順518)。次に、情報検索部１１３は、検索候補となるチャンクのファイルリストであって前回取得からの増加分を取得する(手順519)。増加分とは、既に述べたように手順514から手順517を実行中にはロックを解放しておりデータ登録要求を受け付け可能であるため、データ登録に伴い新たなチャンクが生成される場合があり、そのようなチャンクのことを指す。増加分を得るには、前回の取得結果を記憶しておき、それと現在のファイルリストとを比較すればよい。また、ファイルリストに対しては、手順512と同様に、メタ情報保持部１１４が保持する時刻情報の範囲と照らし合わせる処理を行って検索候補を絞り込んでおく。
【００５１】
もし増加分があれば(手順520)、手順513以降を再度実行することによって、該増加分に対する検索処理を行う。
増加分が無ければ、チャンクの検索は完了しており残りの検索候補はメタ情報保持部１１４が保持するデータだけとなるので、情報検索部１１３は、検索条件から取得された分類情報に適合する場所に格納されているpool.txtを読み込む(手順521)。この例では、大分類(subject)がsmphoneかつ小分類(type)がtemperatureに該当するファイル(203)が対象となる。情報検索部１１３は、読み込んだデータに対して検索条件(501)に合致するものを抽出する(手順522)。情報検索部１１３は、ロック１１５を解放する(手順523)。次いで、情報検索部１１３は、該抽出結果が空でなかった場合、該抽出結果を検索結果としてコールバックを行う(手順524)。この例では、手順522で抽出された結果は空集合なので、コールバックは省略できる。
【００５２】
最後に、情報検索部１１３は、ライブラリの呼び出し元にリターンし(記号567)、一連の処理を完了する。
なお、記号570は、上記一連の処理中に別のスレッドA(551)からデータ登録要求を受け付けることも可能である旨を図示している。このような要求は、ロック１１５によって自動的に待ち合わせが行われ、ロック１１５が解放された時点で処理される。処理の流れは既に述べた通りのものである。
【００５３】
以上の手順によれば、時間がかかると想定される多数のチャンクの検索処理(手順515から手順516)、および、アプリケーション１０２へのコールバックが行われているタイミングで、ロック１１５は解放された状態に保たれる。つまり、データ登録要求などの別の処理要求を受け付けることができる。このため、例えば検索処理中にも新たなセンサデータの登録を行うことができ、登録漏れ（データの取りこぼし）といった事象の発生を防ぐことができる。また、コールバック関数内で新たなデータを登録することができるという利点もあり、これについて以下で詳述する。
【００５４】
図１５は検索処理中に登録処理を行った場合の動作シーケンスの一例を示す。ここでは、図１から図６までで説明した初期状態に対して、アプリケーション(102)の変種が、図１２の検索を行い、そのコールバック関数内において図７の新たなデータの登録要求を行った場合の動作について例示する。これを図１１の動作シーケンスと対応づけると、記号580は記号562に対応し、記号581は記号563に対応し、記号582は記号560に対応し、記号583は記号561に対応し、記号584は記号564に対応し、記号585は記号565に対応し、記号586は記号566に対応し、記号587は記号567に対応するといえる。
【００５５】
この動作例では、まず、アプリケーション１０２がデータ検索関数を呼び出す(記号580)。上記説明してきた一連の処理のうち、候補ファイルリスト取得(手順512)では、チャンクは01.cnkと02.cnkしかこの時点で存在しないので、検索候補となるチャンクのファイルリストは02.cnkとなる。そして、02.cnkに対して検索処理を行い検索結果をコールバックする(記号581)。ここで、アプリケーション１０２内にあるコールバック関数では、データ登録関数を呼び出し(記号582)たのち(記号583)、リターンする(記号584)。この際、ロック１１５は解放された状態になっているので、該データ登録関数呼び出しはロック１１５によって動作阻害されることなく、正常に動作を継続できる。該データ登録関数呼び出しの処理において、上記説明してきた一連の処理により、新たに03.cnkというチャンクが生成される。記号584でリターンした後、手順519によって、増加分の候補ファイルリストとして新たに生成された03.cnkというファイルが取得される。手順520で増加分があったと判定されるので、手順513以降を再度実行し、03.cnkの検索結果に関するコールバックが行われる(記号585)。コールバックからリターンする(記号586)と、再び手順519によって増加分の候補ファイルリストが取得される。今回はチャンクが生成されていないので、空リストとなり、手順520で増加分はなかったと判定され、以降の処理が行われる。以上述べた処理により、アプリケーション１０２は図１４と同じ検索結果を得ることができる。このように、手順519から手順520の工夫によって、マルチスレッドでのデータ登録やコールバック関数内でのデータ登録を行い、それによってチャンクが次々と生成されている場合であっても、データ検索の結果にデータ抜け等の矛盾を来すことなく正常に動作できる。
【００５６】
上記説明したように、本実施の形態においては、図１３に示す処理手順によって検索処理を行うことにより、センサ情報を順次蓄積し、マルチスレッドで検索と挿入を同時実行できつつ、検索結果に矛盾を来すことなく、時系列順で検索結果を返却することが、比較的簡素な処理手順で実現できている。これらの効果についてさらに解説する。
【００５７】
もし、センサ情報を順次蓄積するのではなく、一般的なRDBMSのようなテーブルの書き換えが必要だった場合には、より複雑な処理が必要となったであろう。一方、本実施の形態においてはチャンクのファイルリストを取得(手順512)した後、すぐにロック１１５を解放する(手順513)という簡素な処理手順でよい。これは、センサ情報を順次蓄積するという本来の目的上、一度蓄積された古いセンサ情報は書き換え等を行う必要がないため、チャンクは書き換え等を行われることがなく単に増加する一方であり、従って最初に取得したファイルリストはその後の検索処理中にも有効であるという特性を利用しているためである。
【００５８】
また、もし、時系列順で検索結果を返却するという必要性がなかった場合には、図１３の処理手順はさらに簡略化できたであろう。すなわち、ロック１１５を取得(手順511)してファイルリストを取得(手順512)した後、pool.txtに関する検索処理を行い(手順521から522)、ロックを解放(手順523)して、以降はpool.txtに対するコールバック(手順524)とチャンクに対する検索処理(手順514から517)を行うだけでよく、増加分の再確認(手順519から520)は不要である。これは、仮に検索処理中にデータ登録が並行して発生し、その結果として新たなチャンクが生成されたとしても、既に処理対象となるチャンクのファイルリストは取得済みであって影響を受けないため、単にそのような登録データが無視されるだけとなり検索結果の妥当性には影響を与えないためである。しかし、このような処理では検索結果は時系列順には返却できなくなるため、アプリケーション１０２の必要メモリ量が増大してしまい、問題である。一方、本実施の形態においては時系列順に検索結果を返却し、それによって生じる可能性のある矛盾を手順519から手順520によって発見し処理を再実行する動作を新たに組み入れたことによって、これらの要求を比較的簡素な手順で満たすことができるという利点が得られている。
【００５９】
また言うまでもないことであるが、もし、マルチスレッド処理の必要性がなかった場合には、これらの矛盾はそもそも発生し得ず、従って図１３の処理手順は大幅に簡略化できたであろう。しかし、このような処理では検索処理中に新たなデータ登録を並行して行うことができず、アプリケーション１０２の本来の目的に対して支障を来してしまう。一方、本実施の形態においては、別スレッドおよびコールバック関数中から新たなデータ登録を並行して行うことができるという利点が得られている。
【００６０】
上記説明したように、本実施の形態においては、センサの種類ごとに異なるディレクトリにチャンクが格納される。これにより、センサ種類ごとに古いチャンクを異なる頻度で随時削除できるという利点も得られる。つまり、例えば本実施の形態においては、温度センサ１０３は1日あたり1〜2回程度の観測周期であり、加速度センサ１０４は1秒あたり1回程度の観測周期である。このため、記憶装置の空き容量を考えると、温度センサ１０３のデータは1年程度保存し、一方、加速度センサ１０４のデータは1時間程度で破棄したいという要求がある。本実施の形態においては、これら2つのデータが異なるディレクトリに区分されて格納されているため、例えば加速度センサ１０４のチャンクが格納されるディレクトリだけを一定周期で監視して1時間以上経過したファイルは削除するという処理を行うことが容易であるという利点が得られる。
【００６１】
上記説明してきた一連の処理では、図２に示したように、チャンクをmicroSDカードに生成するようなディレクトリ構成とした。一般に、内蔵フラッシュメモリ１２０は容量が小さいが速度が速く、外部のメモリカードは容量は大きいが速度が遅いという傾向がある。本実施の形態においては、頻繁に書き込みを繰り返すが一定以上の記憶領域を必要としない情報保持部１１１は内蔵フラッシュメモリ１２０に配置し、チャンクはmicroSDカードスロット１２１に挿入されたメモリカード上に生成していくことで大量のデータを保存可能な特徴が得られる。一方で、チャンクも内蔵フラッシュメモリ１２０上に生成する構成も可能であり、以下ではその場合の動作について述べる。
【００６２】
図１６はチャンクを同一ファイルシステムに配置した場合のディレクトリ構成例を示す。本構成例では、図２におけるディレクトリ(202)配下を、図１６におけるディレクトリ(210)に配置した点が違いである。
このディレクトリ構成で図８に示したデータ登録処理を行った場合、リネームによるファイルのチャンクへの移動(手順415)は、移動元と移動先が同一ファイルシステムであるため、成功する。よって、手順417から手順418を省略できる。すなわち、ファイルのコピーと古いファイルの削除操作を、一度のリネーム操作で完了できるという利点が得られる。これにより、情報保持部１１１からチャンクへの情報切り出しの処理量が小さくてすむという効果を得ることができる。
【００６３】
なお、本発明の装置はコンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【００６４】
１００…情報記録装置、１０１…ライブラリ、１０２…アプリケーション、１０３…温度センサ、１０４…加速度センサ、１１０…情報選択部、１１１…情報保持部、１１２…情報切り出し部、１１３…情報検索部、１１４…メタ情報保持部、１１５…ロック、１２０…内蔵フラッシュメモリ、１２１…microSDカードスロット、１３０…タッチパネルディスプレイ、１３１…データ通信機能、１３２…LAN(WiFi)通信機能。
【図１】
2014164382.tif 000003
【図２】
2014164382.tif 000004
【図３】
2014164382.tif 000005
【図４】
2014164382.tif 000006
【図５】
2014164382.tif 000007
【図６】
2014164382.tif 000008
【図７】
2014164382.tif 000009
【図８】
2014164382.tif 000010
【図９】
2014164382.tif 000011
【図１０】
2014164382.tif 000012
【図１１】
2014164382.tif 000013
【図１２】
2014164382.tif 000014
【図１３】
2014164382.tif 000015
【図１４】
2014164382.tif 000016
【図１５】
2014164382.tif 000017
【図１６】
2014164382.tif 000018