(57)【要約】【課題】データとそのデータを取得した取得時刻とを対応付けた情報の情報量を削減する。【解決手段】コンピュータは、取得開始時刻から所定のサンプリング間隔で取得される複数のデータと複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、取得時刻の順に複数のデータを抽出する（ステップ４０１）。そして、コンピュータは、取得時刻の順に抽出した複数のデータと、取得開始時刻と、サンプリング間隔を示す間隔情報とを含む、圧縮情報を出力する（ステップ４０２）。【選択図】図４
2017022522.tif 000002
【特許請求の範囲】
【請求項１】
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出し、
前記取得時刻の順に抽出した前記複数のデータと、前記取得開始時刻と、前記サンプリング間隔を示す間隔情報とを含む、圧縮情報を出力する、
処理をコンピュータに実行させるデータ圧縮プログラム。
【請求項２】
前記コンピュータは、特定の取得時刻におけるデータが存在しない場合、データが存在しないことを示す欠落情報を、前記圧縮情報内において前記特定の取得時刻に対応する位置に含めることを特徴とする請求項１記載のデータ圧縮プログラム。
【請求項３】
前記コンピュータは、特定の取得時刻におけるデータが存在しない場合、前記圧縮情報内において前記特定の取得時刻に対応する位置を示す欠落位置情報を、前記圧縮情報に含めることを特徴とする請求項１記載のデータ圧縮プログラム。
【請求項４】
前記コンピュータは、前記それぞれの取得時刻においてデータが存在するか否かを示す有無情報を、前記圧縮情報に含めることを特徴とする請求項１記載のデータ圧縮プログラム。
【請求項５】
前記圧縮対象情報は、複数の項目それぞれに対する複数の圧縮対象情報を含み、前記複数の圧縮対象情報それぞれのサンプリング間隔は異なっており、前記コンピュータは、前記複数の圧縮対象情報それぞれに対応する複数の圧縮情報を出力し、前記複数の圧縮情報の各々は、前記複数の圧縮対象情報の各々のサンプリング間隔を示す間隔情報を含むことを特徴とする請求項１乃至４のいずれか１項に記載のデータ圧縮プログラム。
【請求項６】
前記コンピュータは、前記圧縮対象情報を複数のブロックに分割し、ブロック毎に前記取得時刻の順に複数のデータを抽出し、前記圧縮情報は複数のブロック単位圧縮情報を含み、各ブロック単位圧縮情報は、ブロック毎に抽出された前記複数のデータと、ブロック毎の取得開始時刻と、前記間隔情報とを含むことを特徴とする請求項１乃至４のいずれか１項に記載のデータ圧縮プログラム。
【請求項７】
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報を記憶する記憶部と、
前記圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出し、前記取得時刻の順に抽出した前記複数のデータと、前記取得開始時刻と、前記サンプリング間隔を示す間隔情報とを含む、圧縮情報を生成する圧縮部と、
前記圧縮情報を出力する出力部と、
を備えることを特徴とするデータ圧縮装置。
【請求項８】
コンピュータが、
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出し、
前記取得時刻の順に抽出した前記複数のデータと、前記取得開始時刻と、前記サンプリング間隔を示す間隔情報とを含む、圧縮情報を出力する、
ことを特徴とするデータ圧縮方法。
【請求項９】
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出することで生成された圧縮情報に基づいて、前記複数のデータのうち所定のデータを抽出し、
前記圧縮情報内における前記所定のデータの位置と、前記圧縮情報に含まれる、前記取得開始時刻と前記サンプリング間隔を示す間隔情報とに基づいて、前記所定のデータの取得時刻を求め、
前記所定のデータの前記取得時刻を出力する、
処理をコンピュータに実行させるデータ復元プログラム。
【請求項１０】
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出することで生成された圧縮情報に含まれる、前記取得開始時刻と前記サンプリング間隔を示す間隔情報とに基づいて、前記圧縮情報に含まれる、所定の取得時刻に取得されたデータの位置を特定し、
前記圧縮情報内の特定した位置から、前記所定の取得時刻に取得された前記データを抽出し、
前記所定の取得時刻に取得された前記データを出力する、
処理をコンピュータに実行させるデータ復元プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮プログラム、データ圧縮装置、データ圧縮方法、及びデータ復元プログラムに関する。
【背景技術】
【０００２】
近年、様々な種類のログデータが収集され、コンピュータにより処理されている。例えば、自動車のログデータには、エンジン回転数、速度等の数値データが含まれることがあり、身体のログデータには、体温、血圧、心拍数等の数値データが含まれることがある。自動車のログデータを分析することで、エンジン回転数又は速度の変化から、自動車が走行している道路又は運転者の状況を推定することができ、身体のログデータを分析することで、体温、血圧、又は心拍数の変化から、人間の健康状態を推定することができる。
【０００３】
このようなログデータを記録する場合、各項目の数値データとその数値データを取得した取得時刻とを対応付けて記録することが多い。ログデータの分析では、例えば、ある項目の数値データが所定値となる取得時刻を特定し、その時刻における他の項目の数値データ、又は他のログデータを参照することで、データ間の関係が分析される。
【０００４】
時系列データの正規化処理における効率化を実現するデータ処理装置も知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１００６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ログデータを効率よく格納するために、ログデータに含まれる取得時刻に着目したデータ圧縮方法は知られていない。
【０００７】
１つの側面において、本発明は、データとそのデータを取得した取得時刻とを対応付けた情報の情報量を削減することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、データ圧縮プログラムは、以下の処理をコンピュータに実行させる。
（１）コンピュータは、取得開始時刻から所定のサンプリング間隔で取得される複数のデータと複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、取得時刻の順に複数のデータを抽出する。
（２）コンピュータは、取得時刻の順に抽出した複数のデータと、取得開始時刻と、サンプリング間隔を示す間隔情報とを含む、圧縮情報を出力する。
【発明の効果】
【０００９】
１つの実施形態によれば、データとそのデータを取得した取得時刻とを対応付けた情報の情報量を削減することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の記録方法を示す図である。
【図２】第２の記録方法を示す図である。
【図３】データ圧縮装置の機能的構成図である。
【図４】データ圧縮処理のフローチャートである。
【図５】データ圧縮装置の第１の具体例を示す機能的構成図である。
【図６】データ圧縮処理の具体例を示すフローチャートである。
【図７】データ圧縮装置の第２の具体例を示す機能的構成図である。
【図８】第１の圧縮情報出力処理のフローチャートである。
【図９】第１の圧縮情報出力処理により出力される圧縮情報を示す図である。
【図１０】データ圧縮装置の第３の具体例を示す機能的構成図である。
【図１１】第２の圧縮情報出力処理のフローチャートである。
【図１２】第２の圧縮情報出力処理により出力される圧縮情報を示す図である。
【図１３】データ圧縮装置の第４の具体例を示す機能的構成図である。
【図１４】第３の圧縮情報出力処理のフローチャートである。
【図１５】第３の圧縮情報出力処理により出力される圧縮情報を示す図である。
【図１６】データ圧縮装置の第５の具体例を示す機能的構成図である。
【図１７】第４の圧縮情報出力処理のフローチャートである。
【図１８】データ復元装置の機能的構成図である。
【図１９】時刻復元処理のフローチャートである。
【図２０】データ抽出処理のフローチャートである。
【図２１】データ復元装置の第１の具体例を示す機能的構成図である。
【図２２】時刻復元処理の第１の具体例を示すフローチャートである。
【図２３】時刻復元処理の第２の具体例を示すフローチャートである。
【図２４】時刻復元処理の第３の具体例を示すフローチャートである。
【図２５】データ復元装置の第２の具体例を示す機能的構成図である。
【図２６】データ抽出処理の第１の具体例を示すフローチャートである。
【図２７】データ抽出処理の第２の具体例を示すフローチャートである。
【図２８】データ抽出処理の第３の具体例を示すフローチャートである。
【図２９】情報処理装置の構成図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら、実施形態を詳細に説明する。
ログデータの記録方法を、まとめて記録するデータの単位に基づいて分類すると、以下の２つの方法に大別できる。
【００１２】
第１の記録方法は、各項目のデータを受け取った順に記録する方法である。第１の記録方法における１レコードは、取得時刻、複数の項目のうちいずれか１つを示す項目情報、及び項目情報が示す項目のデータを含む。
【００１３】
第２の記録方法は、記録対象のすべての項目のデータをまとめて記録する方法である。第２の記録方法における１レコードは、取得時刻及び複数の項目のデータを含む。
【００１４】
図１は、第１の記録方法の例を示している。図１の各レコードは、時刻、項目、及び数値を含む。時刻は、データを取得した時刻を表し、項目は、データの項目（体温、血圧、又は心拍数）を表し、数値は、取得されたデータを表す。例えば、１番目のレコードは、時刻“Ｔ”、項目“体温”、及び数値“ＢＴ１”を含み、２番目のレコードは、時刻“Ｔ”、項目“血圧”、及び数値“ＢＰ１”を含み、３番目のレコードは、時刻“Ｔ”、項目“心拍数”、及び数値“ＨＲ１”を含む。
【００１５】
この記録方法では、各レコードに時刻及び項目が含まれるため、同じ時刻又は項目の情報が重複して記録され、データ量が多くなる。
【００１６】
図２は、第２の記録方法の例を示している。図２の各レコードは、時刻、体温、血圧、及び心拍数を含む。時刻は、データを取得した時刻を表し、体温、血圧、及び心拍数は、それぞれの項目について取得されたデータを表す。記号“−”は、空データを表し、データが取得されなかったことを示している。例えば、１番目のレコードは、時刻“Ｔ”、体温“ＢＴ１”、血圧“ＢＰ１”、及び心拍数“ＨＲ１”を含み、３番目のレコードは、時刻“Ｔ＋２Ｓ”及び心拍数“ＨＲ２”を含む。３番目のレコードの体温及び血圧は空データである。
【００１７】
この記録方法では、すべての項目のデータがまとめて記録されるため、同じ時刻のレコードが繰り返されることはなく、項目毎にデータの記録領域が異なるため、データの項目を表す項目情報は不要になる。しかし、依然として、レコード毎にデータの取得時刻が記録される。
【００１８】
図３は、実施形態のデータ圧縮装置の機能的構成例を示している。図３のデータ圧縮装置３０１は、記憶部３１１、圧縮部３１２、及び出力部３１３を含む。
【００１９】
記憶部３１１は、取得開始時刻から所定のサンプリング間隔で取得される複数のデータと、それぞれのデータの取得時刻とを含む、圧縮対象情報３２１を記憶する。圧縮部３１２は、圧縮対象情報３２１から圧縮情報３２２を生成し、出力部３１３は、圧縮情報３２２を出力する。
【００２０】
図４は、図３のデータ圧縮装置３０１が行うデータ圧縮処理の例を示すフローチャートである。圧縮部３１２は、圧縮対象情報３２１から、取得時刻の順に複数のデータを抽出し、取得時刻の順に抽出した複数のデータと、取得開始時刻と、サンプリング間隔を示す間隔情報とを含む、圧縮情報３２２を生成する（ステップ４０１）。そして、出力部３１３は、圧縮情報３２２を出力する（ステップ４０２）。
【００２１】
図３のデータ圧縮装置３０１によれば、データとそのデータを取得した取得時刻とを対応付けた情報の情報量を削減することができる。
【００２２】
図５は、図３のデータ圧縮装置３０１の第１の具体例を示している。図５の圧縮部３１２は、データ処理部５０１及び時刻処理部５０２を含む。圧縮対象情報３２１は、Ｋ個の項目（Ｋは１以上の整数）のログデータに対応し、各項目について、数値データと取得時刻との組を複数個含んでいる。取得時刻は、例えば、３２ビット又は６４ビットのビット列で表現される。Ｋ個の項目のサンプリング間隔は同じであってもよく、それぞれ異なっていてもよい。
【００２３】
データ処理部５０１は、項目毎に数値データを取得時刻の順に並べる。時刻処理部５０２は、項目毎に各数値データに対応する取得時刻を参照して、取得開始時刻、サンプリング間隔、及び取得終了時刻を求める。
【００２４】
図６は、図５のデータ圧縮装置３０１が行うデータ圧縮処理の具体例を示すフローチャートである。この例では、圧縮対象情報３２１に含まれる各項目の情報は、取得時刻と数値データの組を要素とする配列で表される。
【００２５】
まず、データ処理部５０１は、処理対象の項目を示す制御変数ｋに１を設定し（ステップ６０１）、ｋ番目の項目の配列に含まれる要素を取得時刻の順に並べ替えて、配列Ｘ＝｛（ｔ１，ｘ１），（ｔ２，ｘ２），．．．｝を生成する（ステップ６０２）。配列Ｘのｉ番目の要素（ｔｉ，ｘｉ）（ｉ＝１，２，．．．）は、取得時刻ｔｉとデータｘｉの組を表し、配列Ｘ内において、要素（ｔｉ，ｘｉ）は取得時刻ｔｉの早い順に並んでいる。
【００２６】
次に、時刻処理部５０２は、配列Ｘの先頭の要素（ｔ１，ｘ１）の取得時刻ｔ１を取得開始時刻Ｔｓとして抽出し、配列Ｘの末尾の要素の取得時刻を取得終了時刻Ｔｅとして抽出する（ステップ６０３）。また、時刻処理部５０２は、配列Ｘ内の連続する２個の要素から取得時刻の差分を求め、取得時刻の差分に基づいてサンプリング間隔Ｓを求める。
【００２７】
例えば、いくつかの取得時刻においてデータが取得されなかった場合、２個の要素の取得時刻の差分がサンプリング間隔Ｓよりも長くなることがある。このような場合に対処するために、時刻処理部５０２は、配列Ｘから求めた複数の差分のうち最も短い差分を、サンプリング間隔Ｓとして採用してもよい。
【００２８】
次に、時刻処理部５０２は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、及びサンプリング間隔Ｓを、ｋ番目の項目の圧縮情報に記録する（ステップ６０４）。そして、データ処理部５０１は、配列Ｘから取得時刻の順に数値データｘｉを抽出して、データ列｛ｘ１，ｘ２，．．．｝をｋ番目の項目の圧縮情報に記録し、出力部３１３は、ｋ番目の項目の圧縮情報を出力する。
【００２９】
このとき、出力部３１３は、例えば、内部バスを介してハードディスクドライブ等の補助記憶装置へ圧縮情報を転送してもよく、通信ネットワークを介してデータ圧縮装置３０１の外部の装置へ圧縮情報を転送してもよい。
【００３０】
次に、データ処理部５０１は、ｋがＫに達したか否かをチェックし（ステップ６０５）、ｋがＫよりも小さい場合（ステップ６０５，ＮＯ）、ｋを１だけインクリメントして（ステップ６０６）、ステップ６０２以降の処理を繰り返す。そして、ｋがＫに達した場合（ステップ６０５，ＹＥＳ）、データ圧縮装置３０１は、処理を終了する。
【００３１】
ステップ６０３において、時刻処理部５０２は、取得終了時刻Ｔｅの代わりに、数値データのサンプリング数Ｎｓを求めてもよい。サンプリング数Ｎｓは、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、及びサンプリング間隔Ｓを用いて、次式のように表される。
Ｎｓ＝（Ｔｅ−Ｔｓ）／Ｓ＋１      （１）
【００３２】
このようなデータ圧縮処理によれば、配列Ｘの各要素の数値データのみが圧縮情報３２２として出力され、取得時刻が省略されるため、配列Ｘの情報量を削減することができる。また、項目毎に数値データをまとめて圧縮情報を生成することで、数値データ毎に項目情報を記録する必要がなくなる。これにより、ログデータを格納する補助記憶装置の容量を削減したり、ログデータの転送時間を短縮したりすることが可能になる。
【００３３】
圧縮情報３２２から圧縮対象情報３２１を復元する際には、データ列｛ｘ１，ｘ２，．．．｝内における各数値データの位置に対応して、取得開始時刻Ｔｓにサンプリング間隔Ｓの整数倍を加算することで、各数値データの取得時刻を復元することができる。
【００３４】
ところで、図６のステップ６０４において、特定の取得時刻における数値データが欠落している場合、それ以降の数値データについて、実際に取得された取得時刻と、圧縮情報３２２から復元される取得時刻との間にずれが生じることがある。そこで、このような数値データの欠落に対処するため、圧縮部３１２は、圧縮情報３２２内において特定の取得時刻に対応する位置に、データが存在しないことを示す情報を含めてもよい。
【００３５】
図７は、このような圧縮情報３２２を出力するデータ圧縮装置３０１の第２の具体例を示している。図７の圧縮部３１２は、図５の圧縮部３１２に欠落情報挿入部７０１を追加した構成を有する。欠落情報挿入部７０１は、データ処理部５０１が生成するデータ列｛ｘ１，ｘ２，．．．｝内の数値データが存在しない取得時刻に対応する位置に、データが欠落していることを示す欠落情報を挿入する。欠落情報は、空データであってもよい。図７のデータ圧縮装置３０１は、図６と同様のデータ圧縮処理を行う。
【００３６】
図８は、図６のステップ６０４において、図７のデータ圧縮装置３０１が行う第１の圧縮情報出力処理の例を示すフローチャートである。まず、時刻処理部５０２は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、及びサンプリング間隔Ｓを、ｋ番目の項目の圧縮情報に記録し、出力部３１３は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、及びサンプリング間隔Ｓを出力する（ステップ８０１）。
【００３７】
次に、欠落情報挿入部７０１は、配列Ｘ内の数値データの位置を示す制御変数ｉに１を設定し、サンプリング間隔Ｓにより隔てられた実際の取得時刻の順位を示す制御変数ｊに１を設定する（ステップ８０２）。そして、欠落情報挿入部７０１は、取得時刻ｔｉとＴｓ＋（ｊ−１）×Ｓの計算結果とを比較する（ステップ８０３）。
【００３８】
ｔｉがＴｓ＋（ｊ−１）×Ｓと一致する場合（ステップ８０３，ＹＥＳ）、データ処理部５０１は、配列Ｘから取得時刻ｔｉに対応する数値データｘｉを抽出して、ｋ番目の項目の圧縮情報に記録し、出力部３１３は、数値データｘｉを出力する（ステップ８０４）。そして、欠落情報挿入部７０１は、ｉ及びｊを１だけインクリメントする（ステップ８０５）。
【００３９】
一方、ｔｉがＴｓ＋（ｊ−１）×Ｓと一致しない場合（ステップ８０３，ＮＯ）、欠落情報挿入部７０１は、欠落情報をｋ番目の項目の圧縮情報に挿入し、出力部３１３は、その欠落情報を出力する（ステップ８０７）。そして、欠落情報挿入部７０１は、ｊを１だけインクリメントする（ステップ８０８）。
【００４０】
次に、欠落情報挿入部７０１は、ｉと配列Ｘ内の要素の個数とを比較し（ステップ８０６）、ｉが要素の個数以下である場合（ステップ８０６，ＮＯ）、ステップ８０３以降の処理を繰り返す。そして、ｉが要素の個数を超えた場合（ステップ８０６，ＹＥＳ）、欠落情報挿入部７０１は、処理を終了する。
【００４１】
ステップ８０１において、時刻処理部５０２は、取得終了時刻Ｔｅの代わりにサンプリング数Ｎｓを出力してもよい。
【００４２】
図９は、図１に示した複数のレコードを圧縮対象情報３２１として用いた場合に、図８の圧縮情報出力処理により出力される“体温”の圧縮情報の例を示している。図９の取得開始時刻ＴｓはＴであり、サンプリング間隔Ｓは１０秒であり、サンプリング数ＮｓはＢＴ＿Ｘである。
【００４３】
また、図９のデータ列は、ＢＴ＿Ｘ個の数値データを含み、空データ“−”は欠落情報に対応する。データ列には、配列Ｘ内の数値データが取得時刻の順に格納されており、数値データが欠落している位置には空データ“−”が格納される。このような圧縮情報出力処理によれば、データ列内のｊ番目の格納位置がｊ番目の実際の取得時刻に対応しているため、すべての数値データについて、その格納位置と取得開始時刻Ｔｓとサンプリング間隔Ｓとから、実際の取得時刻を復元することが可能になる。
【００４４】
しかし、多数の数値データが欠落している場合、欠落情報の個数も多くなるため、圧縮効率が低下する可能性がある。例えば、項目毎にサンプリング間隔Ｓが異なっている場合、短いサンプリング間隔の項目に合わせて、長いサンプリング間隔の項目に欠落情報が挿入されるため、多くの欠落情報が発生する。
【００４５】
１０秒間隔で取得される項目Ａの数値データと１秒間隔で取得される項目Ｂの数値データとを１００秒間に渡って記録する場合、項目Ｂの１００個のデータに合わせて、項目Ａの１０個のデータと、項目Ａの９０個の欠落情報とが記録される。この場合、９０個の欠落情報の情報量が大きくなるため、これらの欠落情報を省略することが望ましい。
【００４６】
そこで、多数の数値データの欠落に対処するため、特定の取得時刻におけるデータが存在しない場合、圧縮部３１２は、圧縮情報３２２のデータ列内においてその取得時刻に対応する位置を示す情報を、圧縮情報３２２に含めることができる。これにより、欠落情報が不要になり、圧縮情報３２２の情報量をさらに削減することができる。
【００４７】
図１０は、このような圧縮情報３２２を出力するデータ圧縮装置３０１の第３の具体例を示している。図１０の圧縮部３１２は、図５の圧縮部３１２に欠落位置生成部１００１を追加した構成を有する。欠落位置生成部１００１は、データ処理部５０１が生成するデータ列｛ｘ１，ｘ２，．．．｝内の数値データが存在しない取得時刻に対応する位置を示す欠落位置情報を生成する。図１０のデータ圧縮装置３０１は、図６と同様のデータ圧縮処理を行う。
【００４８】
図１１は、図６のステップ６０４において、図１０のデータ圧縮装置３０１が行う第２の圧縮情報出力処理の例を示すフローチャートである。まず、時刻処理部５０２は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、及びサンプリング間隔Ｓをｋ番目の項目の圧縮情報に記録する（ステップ１１０１）。また、データ処理部５０１は、配列Ｘから取得時刻の順に数値データｘｉを抽出して、データ列｛ｘ１，ｘ２，．．．｝をｋ番目の項目の圧縮情報に記録する。そして、出力部３１３は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、サンプリング間隔Ｓ、及びデータ列｛ｘ１，ｘ２，．．．｝を出力する。
【００４９】
次に、欠落位置生成部１００１は、配列Ｘ内の数値データの位置を示す制御変数ｉに１を設定し、サンプリング間隔Ｓにより隔てられた実際の取得時刻の順位を示す制御変数ｊに１を設定する（ステップ１１０２）。そして、欠落位置生成部１００１は、取得時刻ｔｉとＴｓ＋（ｊ−１）×Ｓの計算結果とを比較する（ステップ１１０３）。
【００５０】
ｔｉがＴｓ＋（ｊ−１）×Ｓと一致する場合（ステップ１１０３，ＹＥＳ）、欠落位置生成部１００１は、ｉ及びｊを１だけインクリメントする（ステップ１１０４）。
【００５１】
一方、ｔｉがＴｓ＋（ｊ−１）×Ｓと一致しない場合（ステップ１１０３，ＮＯ）、欠落位置生成部１００１は、ｊの値を欠落位置情報としてｋ番目の項目の圧縮情報に記録し、出力部３１３は、その欠落位置情報を出力する（ステップ１１０６）。そして、欠落位置生成部１００１は、ｊを１だけインクリメントする（ステップ１１０７）。
【００５２】
次に、欠落位置生成部１００１は、ｉと配列Ｘ内の要素の個数とを比較し（ステップ１１０５）、ｉが要素の個数以下である場合（ステップ１１０５，ＮＯ）、ステップ１１０３以降の処理を繰り返す。そして、ｉが要素の個数を超えた場合（ステップ１１０５，ＹＥＳ）、欠落位置生成部１００１は、処理を終了する。
【００５３】
ステップ１１０１において、時刻処理部５０２は、取得終了時刻Ｔｅの代わりにサンプリング数Ｎｓを出力してもよい。
【００５４】
図１２は、図１に示した複数のレコードを圧縮対象情報３２１として用いた場合に、図１１の圧縮情報出力処理により出力される“血圧”の圧縮情報の例を示している。図１２の取得開始時刻ＴｓはＴであり、サンプリング間隔Ｓは１０秒であり、サンプリング数ＮｓはＢＰ＿Ｘである。
【００５５】
また、図１２のデータ列は、Ｎ１個の数値データを含む。数値データの個数Ｎ１は、サンプリング数ＢＰ＿Ｘから欠落している数値データの個数を減算した個数であり、データ列には、配列Ｘ内の数値データが取得時刻の順に格納されている。
【００５６】
欠落位置情報１２０１は、データ列内に存在する数値データの位置ではなく、データ列内で欠落している数値データに対応する実際の取得時刻の順位を示している。例えば、実際の２番目の取得時刻において数値データが欠落している場合、ｙ１＝２となる。複数の数値データが欠落している場合、欠落位置情報１２０１として、複数の取得時刻の順位を表す配列｛ｙ１，ｙ２，．．．｝が用いられる。例えば、実際の２番目〜４番目の取得時刻において数値データが欠落している場合、欠落位置情報１２０１は｛２，３，４｝となる。
【００５７】
このような圧縮情報出力処理によれば、データ列内で欠落している数値データの実際の取得時刻に対応する欠落位置情報と、取得開始時刻Ｔｓと、サンプリング間隔Ｓとから、それ以降の数値データの実際の取得時刻を復元することが可能になる。
【００５８】
また、欠落位置情報を記録することで空データが不要になるため、圧縮情報３２２の情報量をさらに削減することができる。例えば、空データが３２ビットのビット列で表現され、１箇所の欠落位置が１６ビットのビット列で表現される場合、空データの代わりに欠落位置情報を用いることで、欠落位置の情報量が半分に削減される。
【００５９】
しかし、欠落している数値データの個数がさらに多くなると、欠落位置を示す欠落位置情報の情報量も増大する。そこで、圧縮部３１２は、欠落位置情報の代わりに、それぞれの取得時刻においてデータが存在するか否かを示す情報を、圧縮情報３２２に含めることができる。
【００６０】
図１３は、このような圧縮情報３２２を出力するデータ圧縮装置３０１の第４の具体例を示している。図１３の圧縮部３１２は、図５の圧縮部３１２に有無情報生成部１３０１を追加した構成を有する。有無情報生成部１３０１は、それぞれの取得時刻について、データ処理部５０１が生成するデータ列｛ｘ１，ｘ２，．．．｝内に数値データが存在するか否かを示す有無情報を生成する。図１３のデータ圧縮装置３０１は、図６と同様のデータ圧縮処理を行う。
【００６１】
図１４は、図６のステップ６０４において、図１３のデータ圧縮装置３０１が行う第３の圧縮情報出力処理の例を示すフローチャートである。まず、時刻処理部５０２は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、及びサンプリング間隔Ｓをｋ番目の項目の圧縮情報に記録する（ステップ１１０１）。また、データ処理部５０１は、配列Ｘから取得時刻の順に数値データｘｉを抽出して、データ列｛ｘ１，ｘ２，．．．｝をｋ番目の項目の圧縮情報に記録する。そして、出力部３１３は、取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、サンプリング間隔Ｓ、及びデータ列｛ｘ１，ｘ２，．．．｝を出力する。
【００６２】
次に、有無情報生成部１３０１は、配列Ｘ内の数値データの位置を示す制御変数ｉに１を設定し、サンプリング間隔Ｓにより隔てられた実際の取得時刻の順位を示す制御変数ｊに１を設定する（ステップ１４０２）。そして、有無情報生成部１３０１は、取得時刻ｔｉとＴｓ＋（ｊ−１）×Ｓの計算結果とを比較する（ステップ１４０３）。
【００６３】
ｔｉがＴｓ＋（ｊ−１）×Ｓと一致する場合（ステップ１４０３，ＹＥＳ）、有無情報生成部１３０１は、論理“１”のビット値をｊ番目の有無情報としてｋ番目の項目の圧縮情報に記録し、出力部３１３は、そのビット値を出力する（ステップ１４０４）。そして、有無情報生成部１３０１は、ｉ及びｊを１だけインクリメントする（ステップ１４０５）。
【００６４】
一方、ｔｉがＴｓ＋（ｊ−１）×Ｓと一致しない場合（ステップ１４０３，ＮＯ）、有無情報生成部１３０１は、論理“０”のビット値をｊ番目の有無情報としてｋ番目の項目の圧縮情報に記録し、出力部３１３は、そのビット値を出力する（ステップ１４０７）。そして、有無情報生成部１３０１は、ｊを１だけインクリメントする（ステップ１４０８）。
【００６５】
次に、有無情報生成部１３０１は、ｉと配列Ｘ内の要素の個数とを比較し（ステップ１４０６）、ｉが要素の個数以下である場合（ステップ１４０６，ＮＯ）、ステップ１４０３以降の処理を繰り返す。そして、ｉが要素の個数を超えた場合（ステップ１４０６，ＹＥＳ）、有無情報生成部１３０１は、処理を終了する。
【００６６】
ステップ１４０１において、時刻処理部５０２は、取得終了時刻Ｔｅの代わりにサンプリング数Ｎｓを出力してもよい。
【００６７】
図１５は、図１に示した複数のレコードを圧縮対象情報３２１として用いた場合に、図１４の圧縮情報出力処理により出力される“心拍数”の圧縮情報の例を示している。図１５の取得開始時刻ＴｓはＴであり、サンプリング間隔Ｓは１秒であり、サンプリング数ＮｓはＨＲ＿Ｘである。
【００６８】
また、図１５のデータ列は、Ｎ２個の数値データを含む。数値データの個数Ｎ２は、サンプリング数ＨＲ＿Ｘから欠落している数値データの個数を減算した個数であり、データ列には、配列Ｘ内の数値データが取得時刻の順に格納されている。有無情報１５０１は、サンプリング間隔Ｓにより隔てられたＨＲ＿Ｘ個の取得時刻それぞれについて、データ列内に数値データが存在するか否かを示している。例えば、１番目の取得時刻のビット値“１”は、データ列内に数値データが存在することを示しており、２番目の取得時刻のビット値“０”は、データ列内に数値データが存在しないことを示している。
【００６９】
このような圧縮情報出力処理によれば、それぞれの取得時刻において数値データが存在するか否かを示す有無情報と、取得開始時刻Ｔｓと、サンプリング間隔Ｓとから、データ列内の各数値データの実際の取得時刻を復元することが可能になる。
【００７０】
また、有無情報を記録することで空データ又は欠落位置情報が不要になるため、圧縮情報３２２の情報量をさらに削減することができる。例えば、３２ビットのビット列で表現される空データを用いてＭ個の欠落位置を記録する場合、欠落位置の情報量は３２Ｍビットとなる。また、１６ビットのビット列で表現される欠落位置情報を用いてＭ個の欠落位置を記録する場合、欠落位置の情報量は１６Ｍビットとなる。一方、Ｎｓ個の取得時刻に対する有無情報を記録する場合、有無情報の情報量はＮｓビットとなる。
【００７１】
この場合、３２回に１回以上の欠落が発生する項目に対して、空データの代わりに有無情報を用いることで、欠落位置の情報量を削減することができる。また、１６回に１回以上の欠落が発生する項目に対して、欠落位置情報の代わりに有無情報を用いることで、欠落位置の情報量をさらに削減することができる。
【００７２】
圧縮対象情報３２１の情報量が大きい場合には、圧縮対象情報３２１に含まれる各項目の配列を複数のブロックに分割し、ブロック単位でデータ圧縮処理を行うことで、圧縮対象情報３２１を効率良く圧縮することが可能になる。
【００７３】
図１６は、ブロック単位でデータ圧縮処理を行うデータ圧縮装置３０１の第５の具体例を示している。図１６の圧縮部３１２は、図５の圧縮部３１２に分割部１６０１を追加した構成を有する。分割部１６０１は、圧縮対象情報３２１に含まれる各項目の配列を複数のブロックに分割し、データ処理部５０１は、ブロック毎に取得時刻の順に複数のデータを抽出して、複数のブロック単位圧縮情報を生成する。図１６のデータ圧縮装置３０１は、図６と同様のデータ圧縮処理を行う。
【００７４】
図１７は、図６のステップ６０４において、図１６のデータ圧縮装置３０１が行う第４の圧縮情報出力処理の例を示すフローチャートである。この圧縮情報出力処理では、配列ＸがブロックサイズＢＬの複数のブロックに分割される。
【００７５】
まず、分割部１６０１は、ブロックの順位を示す制御変数ｂに１を設定し、配列Ｘ内の（ＢＬ×（ｂ−１）＋１）番目〜（ＢＬ×ｂ）番目のＢＬ個の要素を、ｂ番目のブロックの要素として指定する（ステップ１７０１）。
【００７６】
次に、時刻処理部５０２は、配列Ｘ内の（ＢＬ×（ｂ−１）＋１）番目の要素の取得時刻ｔ（ＢＬ×（ｂ−１）＋１）を、ｂ番目のブロックの取得開始時刻Ｔｓ（ｂ）として抽出する（ステップ１７０２）。また、時刻処理部５０２は、配列Ｘ内の（ＢＬ×ｂ）番目の要素の取得時刻ｔ（ＢＬ×ｂ）を、ｂ番目のブロックの取得終了時刻Ｔｅ（ｂ）として抽出する。そして、時刻処理部５０２は、取得開始時刻Ｔｓ（ｂ）、取得終了時刻Ｔｅ（ｂ）、及びサンプリング間隔Ｓを、ｋ番目の項目に対するｂ番目のブロックのブロック単位圧縮情報に記録する。
【００７７】
また、データ処理部５０１は、配列Ｘから取得時刻の順に数値データｘ（ＢＬ×（ｂ−１）＋１）〜数値データｘ（ＢＬ×ｂ）を抽出する。そして、データ処理部５０１は、データ列｛ｘ（ＢＬ×（ｂ−１）＋１），ｘ（ＢＬ×（ｂ−１）＋２），．．．，ｘ（ＢＬ×ｂ）｝を、ｋ番目の項目に対するｂ番目のブロックのブロック単位圧縮情報に記録する。出力部３１３は、取得開始時刻Ｔｓ（ｂ）、取得終了時刻Ｔｅ（ｂ）、サンプリング間隔Ｓ、及びデータ列｛ｘ（ＢＬ×（ｂ−１）＋１），ｘ（ＢＬ×（ｂ−１）＋２），．．．，ｘ（ＢＬ×ｂ）｝を出力する。
【００７８】
次に、分割部１６０１は、ｂを１だけインクリメントして（ステップ１７０３）、（ＢＬ×（ｂ−１）＋１）と配列Ｘ内の要素の個数とを比較する（ステップ１７０４）。（ＢＬ×（ｂ−１）＋１）が要素の個数以下である場合（ステップ１７０４，ＮＯ）、データ圧縮装置３０１は、次のブロックについて、ステップ１７０２以降の処理を繰り返す。そして、（ＢＬ×（ｂ−１）＋１）が要素の個数を超えた場合（ステップ１７０４，ＹＥＳ）、分割部１６０１は、処理を終了する。
【００７９】
ステップ１７０２において、ｂ番目のブロックが配列Ｘの最後のブロックに対応し、残りの要素の個数がブロックサイズＢＬよりも小さい場合、時刻処理部５０２は、配列Ｘ内の最後の要素の取得時刻を、ｂ番目のブロックの取得終了時刻Ｔｅ（ｂ）として抽出する。また、データ処理部５０１は、配列Ｘから数値データｘ（ＢＬ×（ｂ−１）＋１）〜最後の要素の数値データを抽出する。
【００８０】
このような圧縮情報出力処理によれば、大きなサイズの圧縮対象情報３２１を効率良く圧縮することが可能になる。図７、図１０、及び図１３のデータ圧縮装置３０１においても、図１６のデータ圧縮装置３０１と同様に、圧縮部３１２に分割部１６０１を追加してブロック単位でデータ圧縮処理を行うことができる。
【００８１】
図１８は、実施形態のデータ復元装置の機能的構成例を示している。図１８のデータ復元装置１８０１は、記憶部１８１１、復元部１８１２、及び出力部１８１３を含む。
【００８２】
記憶部１８１１は、図３のデータ圧縮装置３０１が出力する圧縮情報３２２を記憶する。復元部１８１２は、圧縮情報３２２から、所定のデータの取得時刻又は所定の取得時刻に取得されたデータを求め、出力部１８１３は、復元部１８１２が求めた取得時刻又はデータを出力する。
【００８３】
図１９は、図１８のデータ復元装置１８０１が行う時刻復元処理の例を示すフローチャートである。まず、復元部１８１２は、圧縮情報３２２から、圧縮対象情報３２１に含まれていた複数のデータのうち所定のデータを抽出する（ステップ１９０１）。次に、復元部１８１２は、抽出したデータの圧縮情報３２２内における位置と、圧縮情報３２２に含まれる、取得開始時刻とサンプリング間隔を示す間隔情報とに基づいて、そのデータの取得時刻を求める（ステップ１９０２）。そして、出力部１８１３は、復元部１８１２が求めた取得時刻を出力する（ステップ１９０３）。
【００８４】
図１９の時刻復元処理によれば、図３のデータ圧縮装置３０１が出力する圧縮情報３２２全体を復元しなくても、所望のデータの取得時刻のみを求めることができる。
【００８５】
図２０は、図１８のデータ復元装置１８０１が行うデータ抽出処理の例を示すフローチャートである。まず、復元部１８１２は、圧縮情報３２２に含まれる、取得開始時刻とサンプリング間隔を示す間隔情報とに基づいて、圧縮情報３２２に含まれる、所定の取得時刻に取得されたデータの位置を特定する（ステップ２００１）。次に、復元部１８１２は、圧縮情報３２２内の特定した位置から、所定の取得時刻に取得されたデータを抽出する（ステップ２００２）。そして、出力部１８１３は、復元部１８１２が抽出したデータを出力する（ステップ２００３）。
【００８６】
図２０のデータ抽出処理によれば、図３のデータ圧縮装置３０１が出力する圧縮情報３２２全体を復元しなくても、所望の取得時刻に取得されたデータのみを抽出することができる。
【００８７】
図２１は、時刻復元処理を行うデータ復元装置１８０１の第１の具体例を示している。図２１の復元部１８１２は、データ抽出部２１０１及び時刻復元部２１０２を含む。データ抽出部２１０１は、圧縮情報３２２から所定の数値データを抽出し、時刻復元部２１０２は、データ抽出部２１０１が抽出した数値データの取得時刻を求める。
【００８８】
図２２は、図２１のデータ復元装置１８０１が行う時刻復元処理の第１の具体例を示すフローチャートである。この例では、圧縮情報３２２は、図７のデータ圧縮装置３０１から出力され、図９に示したように、データ列内の数値データが存在しない取得時刻に対応する位置には、欠落情報が挿入されている。
【００８９】
まず、データ抽出部２１０１は、オペレータによって入力される指定項目の数値Ａを受け取り（ステップ２２０１）、圧縮情報３２２に含まれる指定項目の圧縮情報のデータ列内における、数値データの位置を示す制御変数ｊに１を設定する（ステップ２２０２）。そして、データ抽出部２１０１は、そのデータ列内のｊ番目の数値データｘｊと数値Ａとを比較する（ステップ２２０３）。
【００９０】
ｘｊが数値Ａと一致しない場合（ステップ２２０３，ＮＯ）、データ抽出部２１０１は、ｊを１だけインクリメントして（ステップ２２０５）、ステップ２２０３以降の処理を繰り返す。例えば、ｘｊが欠落情報である場合、ｘｊは数値Ａと一致しないため、データ抽出部２１０１は、ｊをインクリメントして、次のｘｊを数値Ａと比較する。
【００９１】
そして、ｘｊが数値Ａと一致した場合（ステップ２２０３，ＹＥＳ）、時刻復元部２１０２は、指定項目の圧縮情報に含まれる取得開始時刻Ｔｓ及びサンプリング間隔Ｓを用いて、Ｔｓ＋（ｊ−１）×Ｓを計算する（ステップ２２０４）。出力部１８１３は、時刻復元部２１０２が計算した計算結果を出力する。この計算結果は、指定項目の数値データとして数値Ａが取得された取得時刻を表している。
【００９２】
図２３は、図２１のデータ復元装置１８０１が行う時刻復元処理の第２の具体例を示すフローチャートである。この例では、圧縮情報３２２は、図１０のデータ圧縮装置３０１から出力され、図１２に示したように、欠落位置情報を含んでいる。
【００９３】
まず、データ抽出部２１０１は、オペレータによって入力される指定項目の数値Ａを受け取り（ステップ２３０１）、圧縮情報３２２に含まれる指定項目の圧縮情報のデータ列内における、数値データの位置を示す制御変数ｉに１を設定する（ステップ２３０２）。そして、データ抽出部２１０１は、そのデータ列内のｉ番目の数値データｘｉと数値Ａとを比較する（ステップ２３０３）。
【００９４】
ｘｉが数値Ａと一致しない場合（ステップ２３０３，ＮＯ）、データ抽出部２１０１は、ｉを１だけインクリメントして（ステップ２３０７）、ステップ２３０３以降の処理を繰り返す。
【００９５】
そして、ｘｉが数値Ａと一致した場合（ステップ２３０３，ＹＥＳ）、時刻復元部２１０２は、指定項目の圧縮情報に含まれる欠落位置情報内の位置を示す制御変数ｐに１を設定する（ステップ２３０４）。そして、時刻復元部２１０２は、欠落位置情報内のｐ番目の情報ｙｐとｉとを比較する（ステップ２３０５）。
【００９６】
ｙｐがｉ以下である場合（ステップ２３０５，ＮＯ）、時刻復元部２１０２は、ｐを１だけインクリメントして（ステップ２３０８）、ステップ２３０５以降の処理を繰り返す。
【００９７】
そして、ｙｐがｉを超えた場合（ステップ２３０５，ＹＥＳ）、時刻復元部２１０２は、指定項目の圧縮情報に含まれる取得開始時刻Ｔｓ及びサンプリング間隔Ｓを用いて、Ｔｓ＋（ｐ＋ｉ−２）×Ｓを計算する（ステップ２３０６）。出力部１８１３は、時刻復元部２１０２が計算した計算結果を出力する。この計算結果は、指定項目の数値データとして数値Ａが取得された取得時刻を表している。
【００９８】
なお、ステップ２３０５において、ｐが欠落位置情報内の情報の総数を超えており、ｐに対応する情報ｙｐが存在しない場合、時刻復元部２１０２は、ｙｐがｉを超えたものとみなして、ステップ２３０６の処理を行う。
【００９９】
図２４は、図２１のデータ復元装置１８０１が行う時刻復元処理の第３の具体例を示すフローチャートである。この例では、圧縮情報３２２は、図１３のデータ圧縮装置３０１から出力され、図１５に示したように、有無情報を含んでいる。
【０１００】
まず、データ抽出部２１０１は、オペレータによって入力される指定項目の数値Ａを受け取り（ステップ２４０１）、圧縮情報３２２に含まれる指定項目の圧縮情報のデータ列内における、数値データの位置を示す制御変数ｉに１を設定する（ステップ２４０２）。そして、データ抽出部２１０１は、そのデータ列内のｉ番目の数値データｘｉと数値Ａとを比較する（ステップ２４０３）。
【０１０１】
ｘｉが数値Ａと一致しない場合（ステップ２４０３，ＮＯ）、データ抽出部２１０１は、ｉを１だけインクリメントして（ステップ２４０６）、ステップ２４０３以降の処理を繰り返す。
【０１０２】
そして、ｘｉが数値Ａと一致した場合（ステップ２４０３，ＹＥＳ）、時刻復元部２１０２は、指定項目の圧縮情報に含まれる有無情報内のビット値を先頭から順にチェックして、ｉ番目のビット値“１”が現れる位置ｊを求める（ステップ２４０４）。有無情報内のｊ番目のビット値ｚｊが“１”であり、ｊ個のビット値ｚ１〜ｚｊのうちｉ個のビット値が“１”であり、さらにｚ１〜ｚｊのうち残りのビット値が“０”である場合、位置ｊがｉ番目のビット値“１”に対応する。
【０１０３】
次に、時刻復元部２１０２は、指定項目の圧縮情報に含まれる取得開始時刻Ｔｓ及びサンプリング間隔Ｓを用いて、Ｔｓ＋（ｊ−１）×Ｓを計算する（ステップ２４０５）。出力部１８１３は、時刻復元部２１０２が計算した計算結果を出力する。この計算結果は、指定項目の数値データとして数値Ａが取得された取得時刻を表している。
【０１０４】
図２５は、データ抽出処理を行うデータ復元装置１８０１の第２の具体例を示している。図２５の復元部１８１２は、位置特定部２５０１及びデータ抽出部２５０２を含む。位置特定部２５０１は、圧縮情報３２２内において、所定の取得時刻に取得された数値データの位置を特定し、データ抽出部２５０２は、位置特定部２５０１が特定した位置からその数値データを抽出する。
【０１０５】
図２６は、図２５のデータ復元装置１８０１が行うデータ抽出処理の第１の具体例を示すフローチャートである。この例では、圧縮情報３２２は、図７のデータ圧縮装置３０１から出力され、図９に示したように、データ列内の数値データが存在しない取得時刻に対応する位置には、欠落情報が挿入されている。
【０１０６】
まず、位置特定部２５０１は、オペレータによって入力される指定項目の時刻Ｂを受け取る（ステップ２７０１）。次に、位置特定部２５０１は、圧縮情報３２２に含まれる指定項目の圧縮情報の取得開始時刻Ｔｓ及びサンプリング間隔Ｓを用いて、時刻Ｂに対応する順位ｊ＝（Ｂ−Ｔｓ）／Ｓ＋１を求める（ステップ２６０２）。この順位ｊは、指定項目の圧縮情報に含まれるデータ列内における数値データの位置を表している。
【０１０７】
次に、データ抽出部２５０２は、そのデータ列内のｊ番目の数値データｘｊを抽出し、出力部１８１３は、ｘｊを出力する（ステップ２６０３）。ｘｊが欠落情報である場合、時刻Ｂの数値データが存在しないことを示すために、その欠落情報が出力される。
【０１０８】
図２７は、図２５のデータ復元装置１８０１が行うデータ抽出処理の第２の具体例を示すフローチャートである。この例では、圧縮情報３２２は、図１０のデータ圧縮装置３０１から出力され、図１２に示したように、欠落位置情報を含んでいる。
【０１０９】
まず、位置特定部２５０１は、オペレータによって入力される指定項目の時刻Ｂを受け取る（ステップ２７０１）。次に、位置特定部２５０１は、圧縮情報３２２に含まれる指定項目の圧縮情報の取得開始時刻Ｔｓ及びサンプリング間隔Ｓを用いて、時刻Ｂに対応する順位ｊ＝（Ｂ−Ｔｓ）／Ｓ＋１を求める（ステップ２７０２）。
【０１１０】
次に、位置特定部２５０１は、指定項目の圧縮情報に含まれる欠落位置情報内の位置を示す制御変数ｐに１を設定する（ステップ２７０３）。そして、位置特定部２５０１は、欠落位置情報内のｐ番目の情報ｙｐとｊとを比較する（ステップ２７０４）。
【０１１１】
ｙｐがｊよりも小さい場合（ステップ２７０４，ＮＯ）、位置特定部２５０１は、ｐを１だけインクリメントして（ステップ２７０７）、ステップ２７０４以降の処理を繰り返す。そして、ｙｐがｊ以上になった場合（ステップ２７０４，ＹＥＳ）、位置特定部２５０１は、ｙｐがｊと一致するか否かをチェックする（ステップ２７０５）。
【０１１２】
ｙｐがｊと一致しない場合（ステップ２７０５，ＮＯ）、位置特定部２５０１は、指定項目の圧縮情報に含まれるデータ列内において、時刻Ｂに取得された数値データの位置ｊ−ｐ＋１を求める（ステップ２７０６）。そして、データ抽出部２５０２は、そのデータ列内の（ｊ−ｐ＋１）番目の数値データｘ（ｊ−ｐ＋１）を抽出し、出力部１８１３は、ｘ（ｊ−ｐ＋１）を出力する。
【０１１３】
一方、ｙｐがｊと一致する場合（ステップ２７０５，ＹＥＳ）、出力部１８１３は、時刻Ｂの数値データが存在しないことを示す情報を出力する（ステップ２７０８）。
【０１１４】
なお、ステップ２７０４において、ｐが欠落位置情報内の情報の総数を超えており、ｐに対応する情報ｙｐが存在しない場合、位置特定部２５０１は、ｙｐがｊを超えたものとみなして、ステップ２７０６の処理を行う。
【０１１５】
図２８は、図２５のデータ復元装置１８０１が行うデータ抽出処理の第３の具体例を示すフローチャートである。この例では、圧縮情報３２２は、図１３のデータ圧縮装置３０１から出力され、図１５に示したように、有無情報を含んでいる。
【０１１６】
まず、位置特定部２５０１は、オペレータによって入力される指定項目の時刻Ｂを受け取る（ステップ２８０１）。次に、位置特定部２５０１は、圧縮情報３２２に含まれる指定項目の圧縮情報の取得開始時刻Ｔｓ及びサンプリング間隔Ｓを用いて、時刻Ｂに対応する順位ｊ＝（Ｂ−Ｔｓ）／Ｓ＋１を求める（ステップ２８０２）。
【０１１７】
次に、位置特定部２５０１は、指定項目の圧縮情報に含まれる有無情報内のｊ番目のビット値ｚｊが“０”であるか否かをチェックする（ステップ２８０３）。
【０１１８】
ビット値ｚｊが“１”である場合（ステップ２８０３，ＮＯ）、位置特定部２５０１は、有無情報内のｊ個のビット値ｚ１〜ｚｊに含まれるビット値“１”の個数ｉを求める（ステップ２８０４）。この個数ｉは、指定項目の圧縮情報に含まれるデータ列内において、時刻Ｂに取得された数値データの位置を表している。そこで、データ抽出部２５０２は、そのデータ列内のｉ番目の数値データｘｉを抽出し、出力部１８１３は、ｘｉを出力する（ステップ２８０５）。
【０１１９】
一方、ビット値ｚｊが“０”である場合（ステップ２８０３，ＹＥＳ）、出力部１８１３は、時刻Ｂの数値データが存在しないことを示す情報を出力する（ステップ２８０６）。
【０１２０】
ところで、図３、図５、図７、図１０、図１３、及び図１６のデータ圧縮装置３０１において、圧縮部３１２は、圧縮情報３２２に含まれる取得開始時刻Ｔｓ、取得終了時刻Ｔｅ、サンプリング数Ｎｓ、サンプリング間隔Ｓ、及びデータ列を符号化してもよい。例えば、データ列内の数値データの最小値が５０であり、最大値が１７７である場合、５０〜１７７の数値データを０〜１２７にシフトすることで、各数値データを７ビット（２＾７＝１２８）で符号化することができる。これにより、圧縮情報３２２の情報量がさらに削減される。
【０１２１】
図３、図５、図７、図１０、図１３、及び図１６のデータ圧縮装置３０１の構成は一例に過ぎず、データ圧縮装置３０１の用途や条件に応じて、一部の構成要素を省略又は変更してもよい。図１８、図２１、及び図２５のデータ復元装置１８０１の構成は一例に過ぎず、データ復元装置１８０１の用途や条件に応じて、一部の構成要素を省略又は変更してもよい。
【０１２２】
図４、図６、図８、図１１、図１４、図１７、図１９、図２０、図２２〜図２４、及び図２６〜図２８のフローチャートは一例に過ぎず、データ圧縮装置３０１及びデータ復元装置１８０１の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、圧縮対象情報３２１が１個の項目のログデータに対応する場合は、図６のステップ６０１、ステップ６０５、及びステップ６０６の処理を省略することができる。
【０１２３】
図２２のステップ２２０３において、データ抽出部２１０１は、数値データｘｊと数値Ａとの差分が所定の閾値より小さい場合に、ｘｊが数値Ａと一致すると判定してもよい。同様に、図２３のステップ２３０３及び図２４のステップ２４０３において、データ抽出部２１０１は、数値データｘｉと数値Ａとの差分が所定の閾値より小さい場合に、ｘｉが数値Ａと一致すると判定してもよい。
【０１２４】
図２６のステップ２６０２、図２７のステップ２７０２、及び図２８のステップ２８０２において、位置特定部２５０１は、（Ｂ−Ｔｓ）／Ｓ＋１の値が整数にならない場合、その値に近い整数を順位ｊとして用いてもよい。
【０１２５】
図１及び図２のレコードと図９、図１２、及び図１５の圧縮情報は一例に過ぎず、データ圧縮装置３０１及びデータ復元装置１８０１の構成や条件に応じて一部の情報を省略又は変更してもよい。
【０１２６】
例えば、体温、血圧、及び心拍数の代わりに、エンジン回転数、速度等の他の項目のログデータを用いてもよい。図９及び図１２のサンプリング間隔Ｓとして１０秒以外のサンプリング間隔を用いてもよく、図１５のサンプリング間隔Ｓとして１秒以外のサンプリング間隔を用いてもよい。圧縮情報から、取得終了時刻Ｔｅ又はサンプリング数Ｎｓを省略しても構わない。
【０１２７】
図２９は、図３、図５、図７、図１０、図１３、及び図１６のデータ圧縮装置３０１と図１８、図２１、及び図２５のデータ復元装置１８０１を実現するための情報処理装置（コンピュータ）の構成例を示している。図２９の情報処理装置は、ＣＰＵ２９０１、メモリ２９０２、入力装置２９０３、出力装置２９０４、補助記憶装置２９０５、媒体駆動装置２９０６、及びネットワーク接続装置２９０７を備える。これらの構成要素はバス２９０８により互いに接続されている。
【０１２８】
メモリ２９０２は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ２９０２は、記憶部３１１又は記憶部１８１１として用いることができる。
【０１２９】
情報処理装置がデータ圧縮装置３０１である場合、ＣＰＵ２９０１（プロセッサ）は、例えば、メモリ２９０２を利用してプログラムを実行することにより、圧縮部３１２として動作する。ＣＰＵ２９０１は、データ処理部５０１、時刻処理部５０２、欠落情報挿入部７０１、欠落位置生成部１００１、有無情報生成部１３０１、及び分割部１６０１としても動作する。ＣＰＵ２９０１がバス２９０８を介して補助記憶装置２９０５へ圧縮情報３２２を出力する場合、ＣＰＵ２９０１は、出力部３１３としても動作する。
【０１３０】
情報処理装置がデータ復元装置１８０１である場合、ＣＰＵ２９０１は、例えば、メモリ２９０２を利用してプログラムを実行することにより、復元部１８１２として動作する。ＣＰＵ２９０１は、データ抽出部２１０１、時刻復元部２１０２、位置特定部２５０１、及びデータ抽出部２５０２としても動作する。
【０１３１】
入力装置２９０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示や情報の入力に用いられる。出力装置２９０４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問い合わせ又は指示、及び処理結果の出力に用いられる。情報処理装置がデータ復元装置１８０１である場合、出力装置２９０４は、出力部１８１３として用いることができ、処理結果は、復元部１８１２が求めた取得時刻又はデータであってもよい。
【０１３２】
補助記憶装置２９０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。補助記憶装置２９０５は、ハードディスクドライブ又はフラッシュメモリであってもよい。情報処理装置は、補助記憶装置２９０５にプログラム及びデータを格納しておき、それらをメモリ２９０２にロードして使用することができる。補助記憶装置２９０５は、記憶部３１１又は記憶部１８１１として用いることができる。
【０１３３】
媒体駆動装置２９０６は、可搬型記録媒体２９０９を駆動し、その記録内容にアクセスする。可搬型記録媒体２９０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体２９０９は、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体２９０９にプログラム及びデータを格納しておき、それらをメモリ２９０２にロードして使用することができる。
【０１３４】
このように、処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体は、メモリ２９０２、補助記憶装置２９０５、又は可搬型記録媒体２９０９のような、物理的な（非一時的な）記録媒体である。
【０１３５】
ネットワーク接続装置２９０７は、Local Area Network（ＬＡＮ）、インターネット等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置２９０７を介して受け取り、それらをメモリ２９０２にロードして使用することができる。ネットワーク接続装置２９０７は、出力部３１３又は出力部１８１３として用いることができる。
【０１３６】
なお、情報処理装置が図２９のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。例えば、情報処理装置とオペレータ又はユーザとの間のインタフェースが不要である場合は、入力装置２９０３及び出力装置２９０４を省略してもよい。また、可搬型記録媒体２９０９又は通信ネットワークを利用しない場合は、媒体駆動装置２９０６又はネットワーク接続装置２９０７を省略してもよい。
【０１３７】
情報処理装置が通話機能を有するスマートフォン等の携帯端末装置である場合、マイク及びスピーカのような通話用の装置を含んでいてもよく、カメラのような撮像装置を含んでいてもよい。
【０１３８】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【０１３９】
図１乃至図２９を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出し、
前記取得時刻の順に抽出した前記複数のデータと、前記取得開始時刻と、前記サンプリング間隔を示す間隔情報とを含む、圧縮情報を出力する、
処理をコンピュータに実行させるデータ圧縮プログラム。
（付記２）
前記コンピュータは、特定の取得時刻におけるデータが存在しない場合、データが存在しないことを示す欠落情報を、前記圧縮情報内において前記特定の取得時刻に対応する位置に含めることを特徴とする付記１記載のデータ圧縮プログラム。
（付記３）
前記コンピュータは、特定の取得時刻におけるデータが存在しない場合、前記圧縮情報内において前記特定の取得時刻に対応する位置を示す欠落位置情報を、前記圧縮情報に含めることを特徴とする付記１記載のデータ圧縮プログラム。
（付記４）
前記コンピュータは、前記それぞれの取得時刻においてデータが存在するか否かを示す有無情報を、前記圧縮情報に含めることを特徴とする付記１記載のデータ圧縮プログラム。
（付記５）
前記圧縮対象情報は、複数の項目それぞれに対する複数の圧縮対象情報を含み、前記複数の圧縮対象情報それぞれのサンプリング間隔は異なっており、前記コンピュータは、前記複数の圧縮対象情報それぞれに対応する複数の圧縮情報を出力し、前記複数の圧縮情報の各々は、前記複数の圧縮対象情報の各々のサンプリング間隔を示す間隔情報を含むことを特徴とする付記１乃至４のいずれか１項に記載のデータ圧縮プログラム。
（付記６）
前記コンピュータは、前記圧縮対象情報を複数のブロックに分割し、ブロック毎に前記取得時刻の順に複数のデータを抽出し、前記圧縮情報は複数のブロック単位圧縮情報を含み、各ブロック単位圧縮情報は、ブロック毎に抽出された前記複数のデータと、ブロック毎の取得開始時刻と、前記間隔情報とを含むことを特徴とする付記１乃至４のいずれか１項に記載のデータ圧縮プログラム。
（付記７）
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出することで生成された圧縮情報に基づいて、前記複数のデータのうち所定のデータを抽出し、
前記圧縮情報内における前記所定のデータの位置と、前記圧縮情報に含まれる、前記取得開始時刻と前記サンプリング間隔を示す間隔情報とに基づいて、前記所定のデータの取得時刻を求め、
前記所定のデータの前記取得時刻を出力する、
処理をコンピュータに実行させるデータ復元プログラム。
（付記８）
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出することで生成された圧縮情報に含まれる、前記取得開始時刻と前記サンプリング間隔を示す間隔情報とに基づいて、前記圧縮情報に含まれる、所定の取得時刻に取得されたデータの位置を特定し、
前記圧縮情報内の特定した位置から、前記所定の取得時刻に取得された前記データを抽出し、
前記所定の取得時刻に取得された前記データを出力する、
処理をコンピュータに実行させるデータ復元プログラム。
（付記９）
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報を記憶する記憶部と、
前記圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出し、前記取得時刻の順に抽出した前記複数のデータと、前記取得開始時刻と、前記サンプリング間隔を示す間隔情報とを含む、圧縮情報を生成する圧縮部と、
前記圧縮情報を出力する出力部と、
を備えることを特徴とするデータ圧縮装置。
（付記１０）
前記圧縮部は、特定の取得時刻におけるデータが存在しない場合、データが存在しないことを示す欠落情報を、前記圧縮情報内において前記特定の取得時刻に対応する位置に含めることを特徴とする付記９記載のデータ圧縮装置。
（付記１１）
前記圧縮部は、特定の取得時刻におけるデータが存在しない場合、前記圧縮情報内において前記特定の取得時刻に対応する位置を示す欠落位置情報を、前記圧縮情報に含めることを特徴とする付記９記載のデータ圧縮装置。
（付記１２）
前記圧縮部は、前記それぞれの取得時刻においてデータが存在するか否かを示す有無情報を、前記圧縮情報に含めることを特徴とする付記９記載のデータ圧縮装置。
（付記１３）
コンピュータが、
取得開始時刻から所定のサンプリング間隔で取得される複数のデータと前記複数のデータそれぞれの取得時刻とを含む圧縮対象情報から、前記取得時刻の順に前記複数のデータを抽出し、
前記取得時刻の順に抽出した前記複数のデータと、前記取得開始時刻と、前記サンプリング間隔を示す間隔情報とを含む、圧縮情報を出力する、
ことを特徴とするデータ圧縮方法。
（付記１４）
前記コンピュータは、特定の取得時刻におけるデータが存在しない場合、データが存在しないことを示す欠落情報を、前記圧縮情報内において前記特定の取得時刻に対応する位置に含めることを特徴とする付記１３記載のデータ圧縮方法。
（付記１５）
前記コンピュータは、特定の取得時刻におけるデータが存在しない場合、前記圧縮情報内において前記特定の取得時刻に対応する位置を示す欠落位置情報を、前記圧縮情報に含めることを特徴とする付記１３記載のデータ圧縮方法。
（付記１６）
前記コンピュータは、前記それぞれの取得時刻においてデータが存在するか否かを示す有無情報を、前記圧縮情報に含めることを特徴とする付記１３記載のデータ圧縮方法。
【符号の説明】
【０１４０】
３０１  データ圧縮装置
３１１、１８１１  記憶部
３１２  圧縮部
３１３、１８１３  出力部
３２１  圧縮対象情報
３２２  圧縮情報
５０１  データ処理部
５０２  時刻処理部
７０１  欠落情報挿入部
１００１  欠落位置生成部
１２０１  欠落位置情報
１３０１  有無情報生成部
１５０１  有無情報
１６０１  分割部
１８０１  データ復元装置
１８１２  復元部
２１０１、２５０２  データ抽出部
２１０２  時刻復元部
２５０１  位置特定部
２９０１  ＣＰＵ
２９０２  メモリ
２９０３  入力装置
２９０４  出力装置
２９０５  補助記憶装置
２９０６  媒体駆動装置
２９０７  ネットワーク接続装置
２９０８  バス
２９０９  可搬型記録媒体
【図１】
2017022522.tif 000003
【図２】
2017022522.tif 000004
【図３】
2017022522.tif 000005
【図４】
2017022522.tif 000006
【図５】
2017022522.tif 000007
【図６】
2017022522.tif 000008
【図７】
2017022522.tif 000009
【図８】
2017022522.tif 000010
【図９】
2017022522.tif 000011
【図１０】
2017022522.tif 000012
【図１１】
2017022522.tif 000013
【図１２】
2017022522.tif 000014
【図１３】
2017022522.tif 000015
【図１４】
2017022522.tif 000016
【図１５】
2017022522.tif 000017
【図１６】
2017022522.tif 000018
【図１７】
2017022522.tif 000019
【図１８】
2017022522.tif 000020
【図１９】
2017022522.tif 000021
【図２０】
2017022522.tif 000022
【図２１】
2017022522.tif 000023
【図２２】
2017022522.tif 000024
【図２３】
2017022522.tif 000025
【図２４】
2017022522.tif 000026
【図２５】
2017022522.tif 000027
【図２６】
2017022522.tif 000028
【図２７】
2017022522.tif 000029
【図２８】
2017022522.tif 000030
【図２９】
2017022522.tif 000031