1 基本概念

可逆圧縮は、データを小さくまとめて保存や送信を効率化し、復元時には元の情報を完全に再現する圧縮方式である。文書、画像音声、プログラム、各種記録データなど、内容の一字一句や一ビットも失いたくない場面で使われる。圧縮の狙いは、情報の重複や規則性を見つけて、同じ意味をより短い表現に置き換えることにある。

1.1 定義

可逆圧縮とは、圧縮前のデータを変化なく取り出せることを前提とする圧縮法である。圧縮処理の結果として見かけ上のサイズは減るが、解凍後のデータは元の系列と完全一致する。つまり、情報の損失を許さない点が特徴である。

1.2 不可逆圧縮との違い

不可逆圧縮は、復元時に元データの一部を省略し、人間にとって目立ちにくい情報を切り捨てることで高い圧縮率を得る。これに対し、可逆圧縮では省略や改変を行わず、再現精度を最優先する。用途の違いが大きく、写真や音声の配信用途では不可逆方式が使われることもあるが、文書や実行ファイルでは可逆方式が基本となる。

1.3 可逆性の保証

可逆性は、圧縮アルゴリズムと復号手順が互いに対応し、元の並びを一意に取り戻せることで保証される。多くの方式では、符号の境界が明確であること、辞書や規則が復元側でも同じ形で再構成できることが条件になる。検証では、圧縮後に展開した結果が元データと同一かどうかを比較するのが基本である。

2 圧縮の原理

可逆圧縮の根本には、データ中に含まれる重複や偏りを減らす考え方がある。完全に無秩序な情報はほとんど縮まらないが、多くの実データには繰り返しや似通った部分があり、それを効率よく表現することでサイズを下げられる。

2.1 冗長性の削減

冗長性とは、情報として必ずしも毎回書き出さなくてよい重複部分を指す。たとえば、長い文字列の繰り返し、似た記号の連続、特定の値の偏りなどは、短い表現へ置き換えやすい。圧縮は、この余分な反復を別の符号や参照に変える操作といえる。

2.2 符号化の考え方

符号化では、元の要素を別の記号列で表し、全体の平均長を短くする。頻繁に現れる要素には短い表現を、珍しい要素にはやや長い表現を割り当てる設計が基本である。これにより、データ全体の総量を抑えやすくなる。

2.2.1 固定長符号

固定長符号は、各記号に同じ桁数や同じビット数を割り当てる方式である。実装は単純だが、出現頻度の差を十分に活かしにくい。扱いやすさの点で有利な一方、圧縮効率は限定的になりやすい。

2.2.2 可変長符号

可変長符号は、頻度の高い要素に短い符号、低い要素に長い符号を割り当てる。平均的な長さを下げられるため、より高い圧縮効果が期待できる。符号同士が曖昧にならないよう、復号可能な設計が不可欠である。

2.3 統計的性質の利用

実データには、文字や値の出現頻度、隣接関係、局所的な反復などの統計的特徴がある。圧縮方式は、こうした偏りを推定し、出現しやすいパターンを優先的に短く表す。統計情報をうまく使うほど、圧縮後のサイズは小さくなりやすい。

3 代表的な手法

可逆圧縮の手法は、辞書を利用するもの、統計分布を活用するもの、変換によって表現を整えるものに大別できる。実際の方式では、これらを組み合わせて使うことも多い。

3.1 辞書方式

辞書方式は、すでに現れた文字列やデータ片を記録し、それ以後は参照で置き換える考え方である。繰り返しが多いデータに強く、一般的な圧縮形式で広く採用されている。

3.1.1 逐次辞書型

逐次辞書型では、入力を読み進めながら辞書を少しずつ拡張していく。新しい並びが現れるたびに登録し、次回以降はその位置や番号を使って表す。リアルタイム処理との相性がよい。

3.1.2 参照置換型

参照置換型は、既出部分を直接の文字列ではなく、位置や長さの参照に置き換える。長い反復列を短く表現でき、文書やログのようなデータで効果を発揮しやすい。復元側は参照先をたどって元の内容を再構成する。

3.2 統計方式

統計方式は、出現頻度や確率分布をもとに、短い符号を割り当てる。情報理論に基づく設計と結びつきやすく、理論上の効率を考えやすいのが特徴である。

3.2.1 頻度に基づく符号化

頻度に基づく符号化では、よく現れる記号ほど短い表現を与える。典型例として、文字の使用頻度を調べて符号長を調整する手法がある。偏りが大きいデータほど、効果は明瞭になる。

3.2.2 確率モデルの利用

確率モデルを用いる方式では、次に現れる記号の確率を推定し、それに応じて情報量を割り当てる。文脈や周辺の状態を反映できるため、単純な頻度表より適応力が高い。推定精度が性能に直結する。

3.3 変換方式

変換方式は、元のデータを圧縮しやすい形へ変えてから符号化する。値の並びや差分、再配置の規則を利用し、後段の圧縮工程が働きやすい状態を作る。

3.3.1 差分表現

差分表現は、隣接する値そのものではなく、前後の差を記録する方法である。変化が小さいデータでは、差分が小さな値に集まりやすく、圧縮に有利になる。測定値や時系列データでよく用いられる。

3.3.2 繰り返し構造の圧縮

繰り返し構造の圧縮では、同じ並びや周期的なパターンをまとめて表す。長い連続や規則的な配置を一括して扱えるため、表現効率が上がる。画像の行や列、データ記録の定型部分などに適している。

4 データ形式と応用

可逆圧縮は、多様な形式のデータに適用される。対象ごとに性質が異なるため、求められる圧縮法や実装上の工夫も変わる。

4.1 文書の圧縮

文書データでは、単語や記号の繰り返し、書式情報の重複が圧縮対象になる。テキストは一般に予測しやすい偏りを持つため、比較的高い圧縮率が得られることが多い。ログやソースコードでも有効である。

4.2 画像の圧縮

画像では、隣接画素の類似性や同じ色の連続が重要な手がかりになる。可逆圧縮は、画像の輪郭や細部をそのまま残したい場合に使われる。図版、文字入り画像、保存用の原版などで重宝される。

4.3 音声の圧縮

音声データでも、瞬間ごとの変化の小ささや周期性を利用できる。可逆圧縮は、編集用素材や解析用音源の保存に適している。再生品質を保ったまま保持できるため、後処理が必要な場面で重要である。

4.4 実行ファイルや記録データへの利用

実行ファイルや記録データでは、構造が一定であることや、同種の命令・レコードが繰り返されることが多い。可逆圧縮を施すことで配布や保管の効率が向上する。解凍後に正確な実行や解析が求められるため、誤差を許さない設計が必要になる。

5 圧縮性能

圧縮方式の評価では、どれだけ小さくなるかだけでなく、処理の速さや資源消費も重要である。用途によっては、わずかな圧縮率の差よりも、応答性や互換性が優先される。

5.1 圧縮率

圧縮率は、圧縮前後のサイズの比を示す指標である。データの性質によって大きく変動し、反復が多いほど良好になりやすい。理想的な方式でも、乱雑なデータは大きく縮めにくい。

5.2 圧縮速度

圧縮速度は、入力をどれだけ短時間で処理できるかを表す。高速であるほど、転送や保存の流れを妨げにくい。単純なアルゴリズムは速いが、複雑なモデルを使うと時間が増える傾向がある。

5.3 復元速度

復元速度は、圧縮データを元へ戻す処理の速さである。読み出し用途では特に重要で、表示や再生の待ち時間に影響する。多くの方式では、圧縮より復元のほうが軽い設計も見られる。

5.4 メモリ使用量

メモリ使用量は、辞書、バッファ、モデルなどを保持するために必要な記憶領域を指す。省メモリ設計は、組み込み機器や大量データ処理で有利になる。高性能化と資源節約の両立が課題となる。

6 実装上の課題

可逆圧縮は理論だけでなく、実装の細部が性能と信頼性を左右する。誤りへの強さ、状態管理、逐次処理への対応など、現場で扱いやすい設計が求められる。

6.1 エラー耐性

圧縮データに欠損や破損が生じると、復元結果に大きく影響することがある。特に符号境界が崩れると、その後の解釈が連鎖的に乱れる。実用上は、検査情報や区切り構造を加えて被害を局所化する工夫がある。

6.2 辞書の管理

辞書方式では、辞書の更新、参照、削除の扱いが重要である。辞書が大きくなりすぎると、探索コストやメモリ消費が増える。適切な入れ替えや上限設定により、効率と安定性を両立させる必要がある。

6.3 ストリーミング処理

ストリーミング処理では、データ全体を一度に持たず、流れに沿って連続的に圧縮・復元する。通信や配信ではこの方式が有効である。遅延を抑えつつ動作させるには、途中状態を正しく保持する設計が欠かせない。

6.4 並列処理への対応

並列処理では、複数の計算資源を使って圧縮や復元を分担する。処理量の大きい場面で有効だが、辞書共有や順序維持のために複雑さが増す。分割単位の設計次第で性能差が大きくなる。

7 代表的な形式

可逆圧縮には、用途ごとに多様なファイル形式やコンテナがある。汎用的なものから特定分野向けのものまで、設計思想はかなり異なる。

7.1 汎用圧縮形式

汎用圧縮形式は、文書、画像、実行ファイルなど幅広いデータに対応する。単一ファイル向けのものや複数ファイルをまとめるものがあり、互換性の高さが重視される。日常的な配布や保管で広く使われる。

7.2 画像向け形式

画像向け形式は、画素の並びや色の偏りを活かすよう設計される。線画、アイコン、文書スキャン画像など、細部保持が重要な用途に向く。図表の保存でも扱いやすい。

7.3 文書向け形式

文書向け形式は、文字列や構造情報の規則性を利用する。テキスト中心のデータでは高い効率が得られやすい。編集履歴や設定ファイルの保存にも適している。

7.4 連結・格納方式

連結・格納方式は、複数の圧縮対象を一つのまとまりとして保存する枠組みである。ディレクトリ構造や付属情報を含めて扱えるため、アーカイブ用途で便利である。個別復元と一括展開の両方に対応する形式も多い。

8 関連分野

可逆圧縮は単独の技術ではなく、情報の表現や伝送、保存に関わる複数の分野と結びついている。理論と実装の両面で、周辺技術との相互作用が大きい。

8.1 情報理論

情報理論は、データの持つ情報量や符号化の限界を扱う学問である。圧縮がどこまで可能かを考えるうえで基盤となる。最適化の目安や評価指標を与える点で重要である。

8.2 データ伝送

データ伝送では、限られた通信帯域を有効に使うため圧縮が役立つ。送信前にサイズを減らせば、転送時間や負荷を抑えられる。受信側での展開も含め、通信全体の効率向上に寄与する。

8.3 データ保存

データ保存では、記憶容量を節約しつつ長期保管しやすくするために圧縮が使われる。バックアップやアーカイブの分野では、容量削減と整理のしやすさが利点になる。保存形式の互換性も大切である。

8.4 暗号化との違い

暗号化は内容を第三者に読めない形へ変える技術であり、可逆圧縮とは目的が異なる。圧縮は主にサイズ削減を目的とし、情報の秘匿は本質ではない。両者は併用されることがあるが、順序や処理特性には注意が必要である。