(57)【要約】【課題】  複数の圧縮方法のうち、圧縮率が高い圧縮方法による圧縮データを短時間で取得する情報処理装置、データ圧縮方法、及び、データ圧縮プログラムを提供する。【解決手段】  複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する。【選択図】図３
2017163390.tif 000002
【特許請求の範囲】
【請求項１】
複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する、
情報処理装置。
【請求項２】
請求項１において、
前記選択手段は、前記最初に対象データの圧縮が完了した圧縮方法が複数ある場合、前記最初に対象データの圧縮が完了した複数の圧縮方法の圧縮データのうち、サイズの小さい圧縮データを選択する、
情報処理装置。
【請求項３】
請求項１において、
前記選択手段は、前記複数の圧縮方法の前記所定サイズの圧縮データの生成の度に、前記対象データの圧縮が完了した圧縮方法があるか否かを判定し、前記最初に対象データの圧縮が完了した圧縮方法を検出する、
情報処理装置。
【請求項４】
請求項３において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出した場合、前記生成を停止する、
情報処理装置。
【請求項５】
請求項１において、
前記選択手段は、前記選択した圧縮データの他の装置に対する送信、または、前記選択した圧縮データの記憶装置に対する記憶のいずれかをさらに実行する、
情報処理装置。
【請求項６】
複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
データの圧縮方法。
【請求項７】
複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
処理をコンピュータに実行させるデータの圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、データ圧縮方法、及び、データ圧縮プログラムに関する。
【背景技術】
【０００２】
近年、データを圧縮するためのアルゴリズム（以下、圧縮方法ともいう）が多く開発されている。データの圧縮率は圧縮方法に応じて異なる。また、データの圧縮率は、同一の圧縮方法に基づく場合であっても、圧縮の対象データ（以下、対象データと称する）の内容に応じて異なる。このため、対象データごとに、圧縮後のデータのサイズが小さくなる、圧縮率の高い圧縮方法が異なる。
【０００３】
したがって、対象データの圧縮率の高い圧縮方法を判定するために、複数の圧縮方法それぞれにしたがって対象データを圧縮し、圧縮結果に基づいて圧縮率が最も高い圧縮方法を判定する方法がある。ただし、複数の圧縮方法それぞれによって圧縮を行うため、圧縮に要する時間が長くなる。
【０００４】
これに対し、複数の圧縮方法それぞれにしたがって、対象データ全体ではなく一部を圧縮し、圧縮結果に基づいて圧縮方法を判定する方法がある。この方法によると、対象データの一部しか圧縮しないため、圧縮に要する時間が短くなる。
【０００５】
圧縮方法に関する技術については、例えば、特許文献１〜３に記載される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平４−２４１６８１号公報
【特許文献２】特開２００７−２５０７３号公報
【特許文献３】特開平７−１７０４８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、対象データの内容は均一であるとは限らないため、対象データの一部を圧縮したときに圧縮率が最も高い圧縮方法が、対象データ全体を圧縮したときに圧縮率が最も高い圧縮方法と異なる場合がある。また、圧縮方法によっては、対象データの一部を圧縮した場合の圧縮率が、対象データ全体を圧縮した場合の圧縮率より低くなる場合がある。
【０００８】
このように、対象データ全体を圧縮しない限り、圧縮率が最も高い圧縮方法が判明しない。一方、対象データ全体を圧縮する場合、対象データの一部を圧縮する場合と比べて圧縮に要する時間が長くなる。
【０００９】
開示の１つの側面は、複数の圧縮方法のうち、圧縮率が高い圧縮方法による圧縮データを短時間で取得する情報処理装置、データ圧縮方法、及び、データ圧縮プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の態様によれば、情報処理装置は、複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する。
【発明の効果】
【００１１】
１つの側面では、複数の圧縮方法のうち、圧縮率が高い圧縮方法による圧縮データを短時間で取得できる。
【図面の簡単な説明】
【００１２】
【図１】データの圧縮を模式的に説明する図である。
【図２】第１の実施の形態における圧縮処理の流れを説明するフローチャート図である。
【図３】第１の実施の形態における圧縮処理の一例を模式的に説明する図である。
【図４】第２の実施の形態における情報処理装置１００のハードウェア構成図である。
【図５】第２の実施の形態における情報処理装置１００のソフトウェアの機能を示す図である。
【図６】図４、図５に示したデータ圧縮プログラム１２０の処理の流れを説明するフローチャート図である。
【図７】各アルゴリズムα、β、γによる圧縮データの生成（図６のＳ１４）を、並列して実行する場合における、一連の流れを説明する図である。
【図８】各アルゴリズムα、β、γによる圧縮データの生成（図６のＳ１４）を、シリアルに実行する場合における、一連の流れを説明する図である。
【図９】同一サイクルで複数のアルゴリズムによる対象データＤ１全体の圧縮が完了する場合における、一連の流れを模式的に説明する図である。
【発明を実施するための形態】
【００１３】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１４】
［データの圧縮］
図１は、データの圧縮を模式的に説明する図である。情報処理装置（図１に不図示）は、多くのデータをストレージ装置等の記憶装置に記憶するために、データを圧縮して記憶する。より多くのデータを記憶可能にするために、圧縮率の高い圧縮方法（以下、アルゴリズムと称する）にしたがって、よりサイズの小さい圧縮データに変換されることが望ましい。
【００１５】
圧縮は、圧縮の対象となるデータ（以下、対象データと称する）Ｄ１を、対象データの実質的な内容（性質）を維持しながら、サイズ（データ量）を低減した圧縮後のデータ（以下、圧縮データと称する）に変換する処理である。また、圧縮率（％）は、対象データＤ１のサイズと、圧縮データのサイズとの比率である。圧縮率の算出式を、式１に示す。
【００１６】
圧縮率＝（圧縮データのサイズ／対象データのサイズ）＊１００  …式１
式１に示すように、圧縮データのサイズが小さいほど、算出される圧縮率は小さい。つまり、圧縮によって削減するデータ量が多いほど、式１で算出される圧縮率は小さい。一方、圧縮データのサイズが大きく、圧縮によって削減するデータ量が少ないほど、式１で算出される圧縮率が大きい。
【００１７】
本実施の形態では、式１で算出される圧縮率が小さい（削減するデータ量が多い）ことを、圧縮率が高いと表現する。同様にして、本実施の形態では、式１で算出される圧縮率が大きい（削減するデータ量が少ない）ことを、圧縮率が低いと表現する。以下、本実施の形態では、圧縮率を、「高い／低い」という表現にしたがって説明する。
【００１８】
図１は、３つのアルゴリズムα、β、γそれぞれにしたがって、対象データＤ１を圧縮する例を示す。図１に示す矢印ＺＺは、データのサイズを示す。対象データＤ１は、例えば、数十ＧＢ（gigabyte：ＧＢ）から数百ＧＢ程度のサイズのデータである。
【００１９】
図１に横線の矩形で示す圧縮データＤ２αは、対象データＤ１を、アルゴリズムαにしたがって圧縮した圧縮データである。同様に、図１に斜線の矩形で示す圧縮データＤ２βは、アルゴリズムβによる圧縮データであって、縦線の矩形で示す圧縮データＤ２γは、アルゴリズムγによる圧縮データである。以下、各圧縮データＤ２α、Ｄ２β、Ｄ２γを、圧縮データＤ２ともいう。
【００２０】
０＜Ｒ（β）＜Ｒ（α）＜Ｒ（γ）＜１      …式２
式２は、対象データＤ１を圧縮した場合の、アルゴリズムα、β、γの圧縮率の関係を表す式である。式２の値「Ｒ」は圧縮率を示す。したがって、値「Ｒ（α）」はアルゴリズムαの圧縮率を、値「Ｒ（β）」はアルゴリズムβの圧縮率を、値「Ｒ（γ）」はアルゴリズムγの圧縮率を示す。
【００２１】
また、対象データＤ１のサイズを値「Ｋ」とする場合、圧縮データＤ２αのサイズは、値「Ｒ（α）Ｋ」である。同様に、圧縮データＤ２βのサイズは値「Ｒ（β）Ｋ」、圧縮データＤ２γのサイズは値「Ｒ（γ）Ｋ」である。
【００２２】
式２に示すように、図１の例では、アルゴリズムα、β、γの間で、アルゴリズムβの圧縮率「Ｒ（β）」が最も高く、アルゴリズムγの圧縮率「Ｒ（γ）」が最も低い。したがって、図１に示すように、圧縮データＤ２βのサイズ「Ｒ（β）Ｋ」が最も小さく、圧縮データＤ２γのサイズ「Ｒ（γ）Ｋ」が最も大きい。
【００２３】
（アルゴリズムの一例）
本実施の形態におけるアルゴリズムαは、例えば、ランレングス法である。また、アルゴリズムβはＬＺ７７（Lempel-Ziv1977：ＬＺ７７）符号化、アルゴリズムγはＬＺ７８（Lempel-Ziv1978：ＬＺ７８）符号化である。
【００２４】
ランレングス法は、同一の値が連続する数（ランレングス）によって、対象データＤ１を圧縮する方法である。ランレングス法では、対象データＤ１内の連続する同一の値を、当該値と連続数に置き換えて符号化する。
【００２５】
ＬＺ７７符号化、及び、ＬＺ７８符号化は、ＬＺ符号化（辞書法）の１つである。辞書法では、入力された記号列が以前の記号列に存在する場合に、入力された記号列を、以前の記号列の位置及び長さを示す値に置き換えて符号化する。
【００２６】
具体的に、ＬＺ７７符号化（スライド辞書法）では、対象データＤ１内の、注目位置から始まる記号列が、それ以前に出現したか否かを判定し、出現している場合に記号列を出現位置と長さを示す値に置き換える。ＬＺ７７符号化は、記号列を探す範囲（スライド窓）を辞書として使用するため、スライド辞書法と呼ばれる。
【００２７】
また、ＬＺ７８符号化（動的辞書法）では、対象データＤ１内の記号列にしたがって動的に辞書を作成する。そして、ＬＺ７８符号化は、入力された記号列が辞書に存在する場合に、入力された記号列を出現位置と長さを示す値に置き換え、存在しない場合は辞書に登録する。
【００２８】
なお、アルゴリズムα、β、γは、これらの例に限定されるものではない。アルゴリズムα、β、γは、ハフマン符号、算術符号等の別のアルゴリズムであってもよい。
【００２９】
（圧縮率の高いアルゴリズムの判定）
図１で説明したとおり、対象データＤ１を圧縮した場合の圧縮率は、アルゴリズムに応じて異なる。また、圧縮率は、同一のアルゴリズムに基づく場合であっても、対象データＤ１の内容に応じて異なる。例えば、ランレングス法では、対象データＤ１内に連続する値の数がより多いほど、圧縮率が高くなる。また、ＬＺ符号化では、対象データＤ１内に同一の記号列がより多いほど、圧縮率が高くなる。
【００３０】
したがって、対象データＤ１の種別に基づいて、圧縮率が高いアルゴリズムを判定する方法がある。種別は、対象データＤ１の内容の特性を示し、例えば、画像、テキスト、グラフ等である。例えば、情報処理装置は、対象データＤ１を種別に分類する。そして、情報処理装置は、分類した種別のデータの圧縮率が高いアルゴリズムにしたがって、対象データＤ１を圧縮する。
【００３１】
しかしながら、対象データＤ１を適切な種別に分類することは容易ではない。また、対象データＤ１によっては、複数の種別に該当する場合がある。例えば、対象データＤ１が、テキストと画像の両方を含む場合がある。この場合、当該対象データＤ１の種別を適切に分類することは容易ではない。
【００３２】
（圧縮の投機的実行）
一方、複数のアルゴリズムそれぞれにしたがって対象データＤ１を圧縮し、圧縮結果（圧縮率）に基づいて、複数のアルゴリズムから、圧縮率が最も高いアルゴリズムを判定する方法がある。このように、生成した圧縮データＤ２が使用されない可能性があるにも関わらず圧縮を行うことを、圧縮の投機的実行と称する。圧縮の投機的実行には、対象データＤ１全体について圧縮の投機的実行を行う方法と、対象データＤ１の一部について圧縮の投機的実行を行う方法がある。
【００３３】
まず、対象データＤ１全体について圧縮の投機的実行を行う場合を説明する。情報処理装置は、アルゴリズムα、β、γそれぞれにしたがって、対象データＤ１全体を圧縮し、圧縮データＤ２α、Ｄ２β、Ｄ２γを生成する。そして、情報処理装置は、サイズが最も小さい圧縮データＤ２βのアルゴリズムβを、圧縮率の最も高いアルゴリズムとして判定する。また、情報処理装置は、他のアルゴリズムの圧縮データＤ２α、Ｄ２γを削除する。
【００３４】
次に、対象データＤ１の一部について圧縮の投機的実行を行う場合を説明する。情報処理装置は、対象データＤ１から一部のデータをサンプリングして、アルゴリズムα、β、γそれぞれにしたがって圧縮し、部分圧縮データを生成する。そして、情報処理装置は、部分圧縮データのサイズが最も小さいアルゴリズムを、対象データＤ１全体を圧縮した場合に圧縮率の最も高いアルゴリズムとして推定する。そして、情報処理装置は、推定したアルゴリズムにしたがって、対象データＤ１全体を圧縮する。
【００３５】
対象データＤ１の一部を圧縮する場合、対象データＤ１全体を圧縮する場合に対して、圧縮対象のデータ量が少ない。したがって、対象データＤ１の一部について圧縮の投機的実行を行う場合、対象データＤ１全体について圧縮の投機的実行を行う場合と比較して、圧縮処理に要する時間を短縮可能になる。
【００３６】
ただし、対象データＤ１の一部について圧縮の投機的実行を行う場合、対象データＤ１全体を圧縮した場合に圧縮率が最も高くなるアルゴリズムを、適切に推定できない場合がある。具体的に、対象データＤ１の一部を圧縮したときに圧縮率が最も高いアルゴリズムは、対象データＤ１全体を圧縮したときに圧縮率が最も高いアルゴリズムと異なる場合がある。ここで、その理由を説明する。
【００３７】
第１に、対象データＤ１の内容が均一であるとは限らない。また、前述したとおり、対象データＤ１が複数の種別のデータ（テキストと画像等）を含む場合がある。したがって、同一のアルゴリズムにしたがって圧縮する場合であっても、サンプリングした一部のデータの内容に応じて、圧縮率が変化する。これにより、対象データＤ１の一部を圧縮する場合のアルゴリズムの圧縮率の順位が、全体を圧縮する場合の順位と異なる場合がある。
【００３８】
第２に、アルゴリズムによっては、対象データＤ１の一部を圧縮する場合の圧縮率が、対象データＤ１全体を圧縮する場合の圧縮率に対して低くなる場合がある。例えば、ＬＺ７８符号化では、圧縮対象のデータに基づいて辞書を生成し、辞書にしたがって圧縮対象のデータの符号化を行う。
【００３９】
このＬＺ７８符号化によれば、対象データＤ１の一部を圧縮する場合、対象データＤ１全体を圧縮する場合と比べて辞書に登録されるデータ量が低減する。このため、符号化できる記号列が減少し圧縮率が低下する。これにより、全体を圧縮する場合にＬＺ７８符号化の圧縮率が最も高いにもかかわらず、一部を圧縮する場合に他のアルゴリズムの圧縮率の方が高くなる場合がある。
【００４０】
このように、投機的実行においても、対象データＤ１全体を圧縮しない限り、対象データＤ１全体を圧縮する場合に圧縮率が最も高くなるアルゴリズムを適切に判定できない。ただし、対象データＤ１全体を圧縮する場合、対象データＤ１の一部を圧縮する場合と比較して、圧縮に要する時間が長い。このように、圧縮率が最も高いアルゴリズムによる圧縮データＤ２を短時間で取得することは容易ではない。
【００４１】
［第１の実施の形態］
第１の実施の形態における情報処理装置は、複数の圧縮方法（アルゴリズム）それぞれにしたがって、１つの対象データＤ１に対して、所定サイズずつ圧縮データを生成する。そして、情報処理装置は、複数のアルゴリズムのうち、最初に圧縮が完了したアルゴリズムの圧縮データＤ２を選択する。
【００４２】
即ち、本実施の形態における情報処理装置は、圧縮済データのサイズが、複数のアルゴリズムの間で均一になるように、対象データＤ１を圧縮する。これにより、複数のアルゴリズムの間で、圧縮データＤ２のサイズが最も小さく、圧縮率が最も高いアルゴリズムによる圧縮処理が最初に完了する。また、このとき、圧縮率が最も高いアルゴリズムが判明するため、情報処理装置は、他のアルゴリズムによる残りの圧縮を省略できる。
【００４３】
これにより、情報処理装置は、最初に対象データＤ１の圧縮が完了したアルゴリズムの圧縮データＤ２を選択することによって、圧縮率が最も高いアルゴリズムによる（即ち、サイズが最も小さい）圧縮データＤ２を短時間で取得できる。
【００４４】
［第１の実施の形態の圧縮処理］
図２は、第１の実施の形態における圧縮処理の流れを説明するフローチャート図である。図２では、圧縮処理の概要を図１の例にしたがって説明する。
【００４５】
Ｓ１：情報処理装置は、アルゴリズムα、β、γ（図１）それぞれにしたがって、１つの対象データＤ１（図１）に対して、所定サイズの各圧縮データを生成する。
【００４６】
Ｓ２：各圧縮データを生成すると、情報処理装置は、いずれかのアルゴリズムα、β、γによる対象データＤ１の圧縮が完了したか否かを判定する。いずれのアルゴリズムα、β、γでも対象データＤ１の圧縮が完了しない場合（Ｓ２のＮｏ）、情報処理装置は、工程Ｓ１の処理を行う。
【００４７】
工程Ｓ１、Ｓ２に示すように、情報処理装置は、複数のアルゴリズムα、β、γそれぞれにしたがって、１つの対象データＤ１について、所定サイズずつ圧縮データを生成する。つまり、情報処理装置は、アルゴリズムα、β、γそれぞれによる所定サイズの各圧縮データを生成するサイクルを繰り返す。
【００４８】
Ｓ３：いずれかのアルゴリズムα、β、γによる圧縮が完了した場合（Ｓ２のＹｅｓ）、情報処理装置は、複数のアルゴリズムα、β、γのうち、最初に、対象データＤ１全体の圧縮が完了したアルゴリズムの圧縮データＤ２を選択する。つまり、情報処理装置は、最少のサイクル数で圧縮が完了したアルゴリズムの圧縮データＤ２を選択し、記憶や送信に用いる。このように、情報処理装置は、最初に圧縮が完了したアルゴリズムを適用する。
【００４９】
なお、図示していないが、第１の実施の形態における情報処理装置は、ＣＰＵ（Central Processing Unit：ＣＰＵ）とメインメモリとを備える。そして、ＣＰＵがメインメモリ内にロードされた、データ圧縮プログラムを実行することによって、図２のフローチャート図に示すデータ圧縮処理を実現する。
【００５０】
［第１の実施の形態の圧縮処理の一例］
図３は、第１の実施の形態における圧縮処理の一例を模式的に説明する図である。図３において、図１で示したものと同一のものは、同一の符号で示す。図３に示す縦方向の破線ｃｙは各サイクルの区切りを示す。サイクルは、当該サイクル内で生成した、各アルゴリズムによる圧縮データがそれぞれ所定サイズｓｚに達したときに切り替わる。
【００５１】
前述したとおり、本実施の形態の情報処理装置は、各アルゴリズムα、β、γにしたがって、所定サイズｓｚずつ圧縮データを生成する。これは、アルゴリズムα、β、γの間で、圧縮済データのサイズを均一に維持しながら、対象データＤ１を圧縮することを意味する。
【００５２】
一方、図１で前述したとおり、アルゴリズムα、β、γの間で圧縮率が異なり、各アルゴリズムα、β、γによる圧縮データＤ２のサイズは互いに異なる。したがって、各サイクルで生成する圧縮データのサイズをアルゴリズムα、β、γの間で均一にした場合、各アルゴリズムα、β、γによる圧縮の進捗率は、圧縮データＤ２のサイズに応じて異なる。
【００５３】
（圧縮の進捗率）
進捗率＝サイクル終了時の圧縮データのサイズ／完了後の圧縮データＤ２のサイズ  …式３
式３は、各アルゴリズムα、β、γによる圧縮の進捗率を計算する式である。式３の「完了後の圧縮データＤ２のサイズ」は、図１で前述したとおりである。即ち、アルゴリズムαの圧縮データＤ２αはサイズ「Ｒ（α）Ｋ」、アルゴリズムβの圧縮データＤ２βはサイズ「Ｒ（β）Ｋ」、アルゴリズムγの圧縮データＤ２γはサイズ「Ｒ（γ）Ｋ」である。また、式３の「サイクル終了時の圧縮データのサイズ」は、値「ｓｚ＊サイクル数」である。
【００５４】
したがって、式３によると、アルゴリズムαの進捗率は、値「（ｓｚ＊サイクル数）／Ｒ（α）Ｋ」となる。同様にして、アルゴリズムβの進捗率は値「（ｓｚ＊サイクル数）／Ｒ（β）Ｋ」、アルゴリズムγの進捗率は値「（ｓｚ＊サイクル数）／Ｒ（γ）Ｋ」となる。
【００５５】
１／Ｒ（α）：１／Ｒ（β）：１／Ｒ（γ）      …式４
式４は、式３に示した進捗率に基づく、アルゴリズムα、β、γの間の進捗率の比を示す。式４に示すように、圧縮率が高い（値が小さい）ほど、圧縮の進捗率の比が大きい。本実施の形態ではアルゴリズムβの圧縮率「Ｒ（β）」が最も高いため、アルゴリズムβによる圧縮の進捗率が最も大きい。進捗率が大きいほど、圧縮は早く完了する。したがって、アルゴリズムα、β、γの間で、アルゴリズムβによる圧縮が最初に完了する。ここで、各サイクルの処理の流れを説明する。
【００５６】
（１サイクル目）
情報処理装置は、対象データＤ１に対して、アルゴリズムα、β、γにしたがって、所定サイズｓｚの圧縮データをそれぞれ生成する。図３の例によると、１サイクル目では、各圧縮データが所定サイズｓｚに達するまでの間に、いずれのアルゴリズムα、β、γにおいても、対象データＤ１全体の圧縮は完了しない。全ての圧縮データが所定サイズｓｚに達すると、１サイクル目の処理が終了する。
【００５７】
（２サイクル目）
情報処理装置は、１サイクル目の継続処理として、アルゴリズムα、β、γにしたがって、所定サイズｓｚの各圧縮データを生成する。１サイクル目と同様にして、２サイクル目でも、いずれのアルゴリズムα、β、γにおいても、対象データＤ１全体の圧縮は完了しない。全ての圧縮データが所定サイズｓｚに達すると、２サイクル目の処理が終了する。
【００５８】
（３サイクル目）
情報処理装置は、２サイクル目の継続処理として、アルゴリズムα、β、γにしたがって、所定サイズｓｚの各圧縮データを生成する。３サイクル目では、各圧縮データが所定サイズｓｚに達するまでの間に、アルゴリズムβによる対象データＤ１全体の圧縮が完了する。なお、アルゴリズムα、γによる対象データＤ１全体の圧縮は、３サイクル目では完了しない。
【００５９】
このように、各サイクルで生成する圧縮データのサイズをアルゴリズム間で均一する場合、圧縮率が高いアルゴリズムβほど進捗率が大きくなり、最初に圧縮が完了する。また、最初に圧縮が完了したアルゴリズムβが最も圧縮率が高いアルゴリズムとして判明するため、情報処理装置は、他のアルゴリズムα、γによる対象データＤ１の圧縮を完了させる必要がない。
【００６０】
したがって、情報処理装置は、４サイクル目以降の圧縮を停止する（図３の点線部分）。これにより、情報処理装置は、４サイクル目以降のアルゴリズムα、γによる残りの圧縮を省略でき、圧縮に要する時間を短縮できる。
【００６１】
図３の例では、３サイクル目の終了時、アルゴリズムαについて、サイズ「Ｒ（α）Ｋ−（ｓｚ＊３）」の圧縮データの生成が未完了である。同様にして、アルゴリズムγについて、サイズ「Ｒ（γ）Ｋ−（ｓｚ＊３）」の圧縮データの生成が未完了である。したがって、情報処理装置は、未完了のサイズ分の圧縮データの生成を省略できる。
【００６２】
このように、情報処理装置は、最初に圧縮が完了したアルゴリズムβの圧縮データＤ２βを選択することで、複数のアルゴリズムα、β、γのうち、圧縮率が最も高いアルゴリズムβによる圧縮データＤ２βを短時間で取得できる。つまり、情報処理装置は、対象データＤ１ごとに、圧縮後のデータサイズが最も小さくなるアルゴリズムによる、圧縮データＤ２を短時間で取得できる。
【００６３】
また、情報処理装置は、対象データＤ１全体を圧縮した場合に圧縮率が最も高いアルゴリズムの圧縮データＤ２を取得できる。したがって、テキストや画像等が混在する対象データＤ１であっても、最も圧縮率が高いアルゴリズムによる圧縮データＤ２を、短時間で適切に取得可能になる。また、複数のアルゴリズムがＬＺ７８符号化等のアルゴリズムを含む場合であっても、最も圧縮率が高いアルゴリズムによる圧縮データＤ２を、短時間で適切に取得可能になる。
【００６４】
［第２の実施の形態］
図４は、第２の実施の形態における情報処理装置１００のハードウェア構成図である。情報処理装置１００は、例えば、ＣＰＵ１０１、メインメモリ１１０や補助記憶装置１１１等を備えるメモリ１０２、通信インタフェース部１０３、外部インタフェース部１０４を有する。各部は、バス１０６を介して相互に接続する。
【００６５】
ＣＰＵ１０１は、バス１０６を介してメモリ１０２等と接続するとともに、情報処理装置１００全体の制御を行う。通信インタフェース部１０３は、他の装置（図示せず）やストレージ装置等の記憶装置（図示せず）と接続し、データの送受信等を行う。また、外部インタフェース部１０４は、ストレージ装置等の他の記憶装置（図示せず）と接続する。
【００６６】
ＲＡＭ（Random Access Memory：ＲＡＭ）等を示すメインメモリ１１０は、ＣＰＵ１０１が処理を行うデータ等を記憶する。補助記憶装置１１１は、ＣＰＵ１０１が実行するオペレーションシステムのプログラムを格納する領域（図示せず）と、データ圧縮プログラム格納領域１２０と、対象データ格納領域Ｄ１とを有する。また、補助記憶装置１１１は、アルゴリズムαの圧縮データ格納領域Ｄ２α、アルゴリズムβの圧縮データ格納領域Ｄ２β、アルゴリズムγの圧縮データ格納領域Ｄ２γを有する。補助記憶装置１１１は、ＨＤＤ（Hard disk drive）、不揮発性半導体メモリ等を示す。
【００６７】
データ圧縮プログラム格納領域１２０のデータ圧縮プログラム（以下、データ圧縮プログラム１２０と称する）はメインメモリ１１０にロードされる。そして、ＣＰＵ１０１がメインメモリ１１０内にロードされたデータ圧縮プログラム１２０を実行することによって、本実施の形態におけるデータ圧縮処理を実現する。
【００６８】
対象データ格納領域Ｄ１の対象データ（以下、対象データＤ１と称する）は、本実施の形態における圧縮の対象となるデータである。アルゴリズムαの圧縮データ格納領域Ｄ２αの圧縮データ（以下、アルゴリズムαの圧縮データＤ２αと称する）は、アルゴリズムαにしたがって対象データＤ１を圧縮した場合の圧縮データである。
【００６９】
アルゴリズムβの圧縮データ格納領域Ｄ２βの圧縮データ（以下、アルゴリズムβの圧縮データＤ２βと称する）は、アルゴリズムβにしたがって対象データＤ１を圧縮した場合の圧縮データである。アルゴリズムγの圧縮データ格納領域Ｄ２γの圧縮データ（以下、アルゴリズムγの圧縮データＤ２γと称する）は、アルゴリズムγにしたがって対象データＤ１を圧縮した場合の圧縮データである。
【００７０】
［情報処理装置１００のソフトウェアの機能］
図５は、第２の実施の形態における情報処理装置１００のソフトウェアの機能を示す図である。図５において、図４で示したものと同一のものは、同一の符号で示す。図５に示すように、データ圧縮プログラム１２０は、例えば、圧縮モジュール１２１と、選択モジュール１２２とを有する。
【００７１】
また、圧縮モジュール１２１は、アルゴリズムαモジュール１２３、アルゴリズムβモジュール１２４、アルゴリズムγモジュール１２５を有する。アルゴリズムαモジュール１２３は、アルゴリズムαによる圧縮を実行するモジュールである。また、アルゴリズムβモジュール１２４はアルゴリズムβによる圧縮を、アルゴリズムγモジュール１２５はアルゴリズムγによる圧縮を、実行するモジュールである。
【００７２】
圧縮モジュール１２１は、各アルゴリズムα、β、γのモジュール１２３〜１２５（以下、各アルゴリズムモジュール１２３〜１２５ともいう）を呼び出し、対象データＤ１に対して、所定サイズｓｚずつ圧縮データを生成する処理を指示する。各アルゴリズムモジュール１２３〜１２５は、生成した圧縮データを、対応する各アルゴリズムの圧縮データＤ２に追加して記憶する。
【００７３】
選択モジュール１２２は、複数のアルゴリズムのうち、最初に対象データＤ１の圧縮が完了したアルゴリズムの圧縮データＤ２を選択する。選択モジュール１２２は、選択した圧縮データＤ２を用いて、他の装置への送信や、記憶装置への格納（記憶）等を行う。
【００７４】
［データ圧縮プログラム１２０の処理］
図６は、図４、図５に示したデータ圧縮プログラム１２０の処理の流れを説明するフローチャート図である。
【００７５】
Ｓ１１：データ圧縮プログラム１２０は、開始時に、対象データＤ１、及び、当該対象データＤ１のサイズ「Ｋ」の入力を受け付ける。
【００７６】
Ｓ１２：データ圧縮プログラム１２０の圧縮モジュール１２１は、対象データＤ１を読み出し、初回のサイクルの開始を指示する。
【００７７】
Ｓ１３：圧縮モジュール１２１は、各アルゴリズムモジュール１２３〜１２５（図５）に、所定サイズｓｚの記憶領域を割り当てる。記憶領域は、圧縮処理に使用する作業領域であって、メインメモリ１１０や補助記憶装置１１１等の領域である。
【００７８】
なお、ファイルシステム等の記憶領域を使用する場合、圧縮モジュール１２１は、予め、各アルゴリズムモジュール１２３〜１２５に、記憶領域を割り当てなくてもよい。各アルゴリズムモジュール１２３〜１２５は、例えば、ファイルシステムのＡＰＩ（Application Programming Interface）を呼び出して、動的に記憶領域を確保する。
【００７９】
Ｓ１４：圧縮モジュール１２１は、各アルゴリズムモジュール１２３〜１２５を呼び出し、所定サイズｓｚの圧縮データの生成を指示する。各アルゴリズムモジュール１２３〜１２５は、圧縮データのサイズが所定サイズｓｚに到達するか、対象データＤ１全体の圧縮が完了するまで圧縮データを生成する。そして、各アルゴリズムモジュール１２３〜１２５は、記憶領域を使用して生成した圧縮データを、対応するアルゴリズムα、β、γの圧縮データＤ２に追加し記憶する。
【００８０】
例えば、各アルゴリズムモジュール１２３〜１２５による処理は、ラウンドロビン方式にしたがって実行される。ラウンドロビン方式は、オペレーティングシステムの、プロセスのスケジューリングアルゴリズムの一種であり、複数のプロセスを平等に順番に実行するものである。例えば、一部のアルゴリズムによる所定サイズｓｚの圧縮データの生成が早く終了した場合、他のアルゴリズムによる処理にＣＰＵ時間が分配される。
【００８１】
なお、各アルゴリズムモジュール１２３〜１２５による処理の方式は、ラウンドロビン方式に限定されるものではない。各アルゴリズムモジュール１２３〜１２５の処理は、マルチコアのＣＰＵ１０１にしたがって並列に実行されてもよい。または、各アルゴリズムモジュール１２３〜１２５の処理は、シリアルに順番に実行されてもよい。並列、または、シリアルに処理を実行する場合の圧縮の流れを、図７、図８にしたがって後述する。
【００８２】
（各サイクルで生成する圧縮データのサイズ：所定サイズｓｚ）
所定サイズｓｚは、例えば、対象データＤ１のサイズにおける所定の割合である。所定の割合は、例えば、対象データＤ１の「１／１００」、「１／１０００」等の割合である。また、所定の割合は、対象データＤ１のサイズに応じて異なる値であってもよい。または、所定サイズｓｚは、対象データＤ１のサイズに関わらず、固定の値に設定されてもよい。
【００８３】
なお、所定サイズｓｚをより小さく設定した場合、各サイクルで生成する圧縮データのサイズが小さくなるため、同一サイクル内で単一のアルゴリズムの圧縮が完了する確率を高くできる。一方、所定サイズｓｚをより大きく設定した場合、同一サイクルで複数のアルゴリズムの圧縮が完了する可能性が生じる。
【００８４】
ただし、所定サイズｓｚをより小さく設定した場合、サイクルの切り替わり頻度が高くなる。これにより、サイクルの切り替わり時に生じるオーバヘッドが大きくなり、処理に遅延が生じる場合がある。したがって、所定サイズｓｚは、例えば、さらに、切り替わり時に生じるオーバヘッド等に基づいて設定されてもよい。
【００８５】
Ｓ１５：データ圧縮プログラム１２０の選択モジュール１２２は、いずれかのアルゴリズムα、β、γによる、対象データＤ１全体の圧縮が完了したか否かを判定する。図３の例によると、１、２サイクル目では、いずれのアルゴリズムα、β、γも、対象データＤ１全体の圧縮は完了していない（Ｓ１５のＮｏ）。
【００８６】
Ｓ１６：いずれのアルゴリズムでも対象データＤ１の圧縮が完了しない場合（Ｓ１５のＮｏ）、圧縮モジュール１２１は、サイクル「ｔ」をインクリメントして、工程Ｓ１３に遷移する。そして、圧縮モジュール１２１は、前回のサイクルの圧縮処理から継続して圧縮処理を行う。
【００８７】
このように、圧縮モジュール１２１は、最初に対象データの圧縮が完了したアルゴリズム（圧縮方法）を検出するまで、所定サイズずつ圧縮データを生成する処理を繰り返す。つまり、圧縮モジュール１２１は、圧縮が完了したアルゴリズムがない間、所定サイズｓｚの圧縮データの生成サイクルを繰り返す。これにより、圧縮モジュール１２１は、複数のアルゴリズムα、β、γの間で、圧縮済データのサイズを均一に維持しながら、対象データＤ１を圧縮できる。
【００８８】
Ｓ１７：一方、いずれかのアルゴリズムによる、対象データＤ１全体の圧縮が完了した場合（Ｓ１５のＹｅｓ）、選択モジュール１２２は、圧縮が完了したアルゴリズムが複数であるか否かを判定する。図３の例によると、３サイクル目では、１つのアルゴリズムβによる対象データＤ１の圧縮が完了する（Ｓ１７のＮｏ）。
【００８９】
Ｓ１８：圧縮が完了したアルゴリズムが１つである場合（Ｓ１７のＮｏ）、選択モジュール１２２は、圧縮が完了したアルゴリズムβによる圧縮データＤ２βを選択する。これにより、選択モジュール１２２は、最初に圧縮が完了したアルゴリズムの圧縮データＤ２を取得できる。また、選択モジュール１２２は、圧縮が未完了の、アルゴリズムαの圧縮データＤ２α、及び、アルゴリズムγの圧縮データＤ２γを補助記憶装置１１１から削除する。
【００９０】
選択モジュール１２２は、例えば、圧縮結果として、アルゴリズムの識別子「β」、及び、圧縮データＤ２βを出力する。または、選択モジュール１２２は、選択した圧縮データＤ２βを、通信インタフェース部１０３（図４）を介して、他の装置（情報処理装置やストレージ装置等）に送信してもよい。本実施の形態によると、圧縮率が最も高いアルゴリズムβによる最もサイズの小さい圧縮データＤ２βを取得可能になる。これにより、圧縮データＤ２βの送信時のネットワークの負荷を低減可能になる。
【００９１】
または、選択モジュール１２２は、選択した圧縮データＤ２βを、補助記憶装置１１１（図４）や、外部インタフェース部１０４（図４）を介して接続する別の記憶装置等に記憶してもよい。圧縮率が最も高いアルゴリズムβによる最もサイズの小さい圧縮データＤ２βを取得できるため、記憶装置により多くのデータを格納することが可能になる。
【００９２】
Ｓ１９：一方、圧縮が完了したアルゴリズムが複数である場合（Ｓ１７のＹｅｓ）、同一のサイクルで、複数のアルゴリズムによる対象データＤ１の圧縮が完了する場合を示す。この場合、選択モジュール１２２は、圧縮が完了した複数のアルゴリズムのうち、サイズが最も小さい圧縮データＤ２を選択する。
【００９３】
つまり、選択モジュール１２２は、最初に対象データＤ１の圧縮が完了したアルゴリズム（圧縮方法）が複数ある場合、最初に対象データＤ１の圧縮が完了した複数のアルゴリズムの圧縮データＤ２のうち、サイズの小さい圧縮データＤ２を選択する。これにより、選択モジュール１２２は、圧縮率が最も高いアルゴリズムによる圧縮データＤ２を適切に取得できる。工程Ｓ１９の処理の一例を、図９にしたがって後述する。
【００９４】
図６のフローチャート図に示すように、データ圧縮プログラム１２０は、複数のアルゴリズム（圧縮方法）の所定サイズｓｚの圧縮データの生成の度に、対象データの圧縮が完了した圧縮方法があるか否かを判定する。そして、データ圧縮プログラム１２０は、最初に対象データの圧縮が完了したアルゴリズム（圧縮方法）を検出する。
【００９５】
これにより、データ圧縮プログラム１２０は、複数のアルゴリズムによって所定サイズｓｚずつ圧縮データを生成する際に、最初に対象データＤ１の圧縮が完了するアルゴリズムを適切に検出できる。つまり、データ圧縮プログラム１２０は、所定サイズｓｚの各圧縮データの生成を繰り返す際に、最少のサイクル数で圧縮が完了するアルゴリズムを適切に検出できる。
【００９６】
また、図６のフローチャートに示すように、データ圧縮プログラム１２０は、いずれかのアルゴリズムによる圧縮が完了した場合（Ｓ１５のＹｅｓ）、次回以降のサイクルの圧縮を実行しない。即ち、データ圧縮プログラム１２０は、最初に対象データＤ１の圧縮が完了したアルゴリズム（圧縮方法）を検出した場合、他のアルゴリズムによる所定サイズｓｚずつ圧縮データを生成する処理を停止する。
【００９７】
本実施の形態では、いずれかのアルゴリズムによる圧縮が最初に完了したサイクルで、圧縮率が最も高いアルゴリズムが判明する。このため、他のアルゴリズムによる対象データＤ１全体の圧縮を完了させる必要がない。したがって、データ圧縮プログラム１２０は、次回以降のサイクルの他のアルゴリズムによる圧縮を停止することで、不要な圧縮を省略できる。これにより、対象データＤ１全体について圧縮の投機的実行を行う場合の、圧縮時間を短くすることが可能になる。
【００９８】
［各アルゴリズムによる圧縮の一連の流れ］
次に、図７、図８にしたがって、図６のフローチャート図に基づく、各アルゴリズムα、β、γによる圧縮の一連の流れを説明する。図７は、複数のアルゴリズムによる圧縮を並列に実行する場合の一例を、図８は、複数のアルゴリズムによる圧縮を順列にシリアルに実行する場合の一例を示す。
【００９９】
図７は、各アルゴリズムα、β、γによる圧縮データの生成（図６のＳ１４）を、並列して実行する場合における、一連の流れを説明する図である。図７の横軸は時間を示し、縦軸は圧縮済の圧縮データのサイズを示す。
【０１００】
図７に示す実線の斜線ｓｐαは、アルゴリズムαによる圧縮データの生成速度を示す。また、図７に示す点線の斜線ｓｐβはアルゴリズムβによる圧縮データの生成速度を示し、一点鎖線の斜線ｓｐγはアルゴリズムγによる圧縮データの生成速度を示す。図７に示すように、アルゴリズムα、β、γの間で、アルゴリズムαによる生成速度ｓｐαが最も速く、アルゴリズムγによる生成速度ｓｐγが最も遅い。
【０１０１】
したがって、各アルゴリズムα、β、γによる、所定サイズｓｚの圧縮データの生成処理を並列に実行する場合、アルゴリズムα、アルゴリズムβ、アルゴリズムγの順に処理が終了する。同一サイクル内でアルゴリズムαによる処理が早く終了した場合、例えば、ＣＰＵ１０１の資源は、別のアルゴリズムβ、γの処理に割り当てられる。
【０１０２】
また、図７に示す矢印ｓｐ１は、各サイクルの圧縮データの生成速度を示す。本実施の形態のデータ圧縮プログラム１２０は、各サイクルで生成する圧縮データのサイズをアルゴリズム間で均一にする。これにより、各アルゴリズムの圧縮データの生成速度ｓｐα、ｓｐβ、ｓｐγは異なるものの、各サイクルで生成する圧縮データのサイズを均一にするため、各サイクルの圧縮データの生成速度ｓｐ１はアルゴリズムの間で均一になる。
【０１０３】
図３の例と同様にして、図７の例では、３サイクル目で、アルゴリズムβによる対象データＤ１全体の圧縮が完了する。ただし、図７の例によると、アルゴリズムβによる圧縮の完了時、アルゴリズムα、γによる、３サイクル目分の所定サイズｓｚの圧縮データの生成処理は終了していない。また、アルゴリズムα、γについても、３サイクル目で対象データＤ１全体の圧縮が完了する可能性がある。
【０１０４】
したがって、アルゴリズムα、γについても、３サイクル目分の所定サイズ分の圧縮データの生成処理が実行される。そして、３サイクル目の終了時、圧縮が完了したアルゴリズムが複数ある場合には、当該複数のアルゴリズムによる圧縮データＤ２のサイズに基づいて、最も圧縮率が高いアルゴリズムが判定される。
【０１０５】
これにより、仮に、３サイクル目で、アルゴリズムβに加えて他のアルゴリズムによる圧縮が完了した場合、アルゴリズムβと他のアルゴリズムのうち、圧縮率が最も高いアルゴリズムを選択可能になる。一方、３サイクル目で、アルゴリズムβのみの圧縮が完了した場合、アルゴリズムβの圧縮データＤ２βのサイズが最少であり、アルゴリズムβの圧縮率が最も高いことが判明する。
【０１０６】
図８は、各アルゴリズムα、β、γによる圧縮データの生成（図６のＳ１４）を、シリアルに実行する場合における、一連の流れを説明する図である。図７と同様にして、図８の横軸は時間を示し、縦軸は圧縮後の圧縮データのサイズを示す。図８に示す実線の斜線ｓｐα、点線の斜線ｓｐβ、一点鎖線の斜線ｓｐγについても、図７と同様である。
【０１０７】
図８に示す矢印ｓｐ２は、各サイクルの圧縮データの生成速度を示す。図８の例では、データ圧縮プログラム１２０、各アルゴリズムの圧縮データの生成処理を順番にシリアルに実行する。
【０１０８】
具体的に、データ圧縮プログラム１２０は、アルゴリズムαによる所定サイズ分の圧縮データの生成終了後、アルゴリズムβによる所定サイズ分の圧縮データの生成処理を実行する。また、データ圧縮プログラム１２０は、アルゴリズムβによる所定サイズ分の圧縮データの生成終了後、アルゴリズムγによる所定サイズ分の圧縮データの生成処理を実行する。
【０１０９】
このため、図８に示す各サイクルの圧縮データの生成速度ｓｐ２は、図７に示す圧縮データの生成速度ｓｐ１に対して遅い。なお、図７で説明したとおり、各アルゴリズムの生成速度ｓｐα、ｓｐβ、ｓｐγは異なるものの、各サイクルの圧縮データの生成速度ｓｐ２はアルゴリズム間で同一となる。
【０１１０】
また、図８の例でも、３サイクル目でアルゴリズムβによる圧縮が完了した後であっても、データ圧縮プログラム１２０は、アルゴリズムγによる、３サイクル目分の所定サイズ分の圧縮データの生成処理を実行する。
【０１１１】
図７、図８に示すように、本実施の形態におけるデータ圧縮プログラム１２０は、生成する圧縮データのサイズをアルゴリズム間で均一に維持しながら、対象データＤ１を圧縮する。このため、複数のアルゴリズムのうち、最少のサイクルで圧縮が完了したアルゴリズムによる圧縮データＤ２を選択することで、圧縮率が最も高いアルゴリズムによる圧縮データＤ２を短時間で取得可能になる。
【０１１２】
［同一サイクル内で、複数のアルゴリズムによる圧縮が完了する例］
図９は、同一サイクルで複数のアルゴリズムによる対象データＤ１全体の圧縮が完了する場合における、一連の流れを模式的に説明する図である。図９において、図３で示したものと同一のものは、同一の符号で示す。
【０１１３】
図９は、３サイクル目で、アルゴリズムβ、γによる対象データＤ１の圧縮が完了する場合（図６のＳ１７のＹｅｓ）を例示する。したがって、３サイクル目の終了時に、圧縮モジュール１２１は、アルゴリズムβの圧縮データＤ２βと、アルゴリズムγの圧縮データＤ２γとのサイズを比較し、サイズが小さい圧縮データＤ２βを選択する（Ｓ１９）。
【０１１４】
このように、本実施の形態におけるデータ圧縮プログラム１２０は、最初に圧縮が完了した圧縮方法が複数ある場合、よりサイズの小さい圧縮データＤ２を選択する。これにより、データ圧縮プログラム１２０は、圧縮率が最も高いアルゴリズムを適切に判定し、その圧縮データＤ２を選択できる。
【０１１５】
［他の実施の形態］
本実施の形態では、所定サイズｓｚがサイクルを通して一定である場合を例示した。ただし、この例に限定されるものではない。所定サイズｓｚは、サイクル間で変化してもよい。
【０１１６】
後半のサイクルは前半のサイクルと比較して、いずれかのアルゴリズムによる対象データＤ１の圧縮が完了する最終サイクルになる可能性が高い。したがって、例えば、データ圧縮プログラム１２０は、サイクル数が増加するに連れて、所定サイズｓｚを小さく変化させる。または、データ圧縮プログラム１２０は、サイクル数が基準値を超えた場合に、所定サイズｓｚをより小さい値に変更してもよい。
【０１１７】
これにより、前半のサイクルでは、サイクルの切り替わり頻度を少なくして判定処理のオーバヘッドを低減させることが可能になる。また、いずれかのアルゴリズムによる圧縮が完了する最終サイクルでは、所定サイズｓｚが小さいため、各アルゴリズムが生成する圧縮データのサイズを少なくすることが可能になる。これにより、圧縮率が最も高いアルゴリズム以外の、他のアルゴリズムによる無駄な圧縮処理を抑制することが可能になる。また、最終サイクルで複数のアルゴリズムによる圧縮が完了する確率を下げることが可能になる。
【０１１８】
以上の実施の形態をまとめると、次の付記のとおりである。
【０１１９】
（付記１）
複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成する生成手段と、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する選択手段と、を有する、
情報処理装置。
【０１２０】
（付記２）
付記１において、
前記選択手段は、前記最初に対象データの圧縮が完了した圧縮方法が複数ある場合、前記最初に対象データの圧縮が完了した複数の圧縮方法の圧縮データのうち、サイズの小さい圧縮データを選択する、
情報処理装置。
【０１２１】
（付記３）
付記１において、
前記選択手段は、前記複数の圧縮方法の前記所定サイズの圧縮データの生成の度に、前記対象データの圧縮が完了した圧縮方法があるか否かを判定し、前記最初に対象データの圧縮が完了した圧縮方法を検出する、
情報処理装置。
【０１２２】
（付記４）
付記３において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出した場合、前記生成を停止する、
情報処理装置。
【０１２３】
（付記５）
付記３において、
前記生成手段は、前記最初に対象データの圧縮が完了した圧縮方法を検出するまで、前記生成を繰り返す、
情報処理装置。
【０１２４】
（付記６）
付記１において、
前記選択手段は、前記選択した圧縮データの他の装置に対する送信、または、前記選択した圧縮データの記憶装置に対する記憶のいずれかをさらに実行する、
情報処理装置。
【０１２５】
（付記７）
複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
データの圧縮方法。
【０１２６】
（付記８）
複数の圧縮方法それぞれにしたがって、１つの対象データに対して、所定サイズずつ圧縮データを生成し、
前記複数の圧縮方法のうち、最初に前記対象データの圧縮が完了した圧縮方法の圧縮データを選択する、
処理をコンピュータに実行させるデータの圧縮プログラム。
【符号の説明】
【０１２７】
１００：情報処理装置、１０１：ＣＰＵ、１０２：メモリ、１０３：通信インタフェース部、１０４：外部インタフェース部、１０６：バス、１１０：メインメモリ、１１１：補助記憶装置、１２０：データ圧縮プログラム、１２１：圧縮モジュール、１２２：選択モジュール、Ｄ１：対象データ、Ｄ２（Ｄ２α、Ｄ２β、Ｄ２γ）：圧縮データ
【図１】
2017163390.tif 000003
【図２】
2017163390.tif 000004
【図３】
2017163390.tif 000005
【図４】
2017163390.tif 000006
【図５】
2017163390.tif 000007
【図６】
2017163390.tif 000008
【図７】
2017163390.tif 000009
【図８】
2017163390.tif 000010
【図９】
2017163390.tif 000011