FE EXAM

可逆圧縮(ロスレス圧縮)

圧縮前のデータを完全に復元できる圧縮方式

DIAGRAM
元データ圧縮データ完全復元
圧縮 → 伸張(展開)で元データが完全に戻る元データAAAABBBCCCCCDD14 バイト圧縮規則性を見つけて短く書き換える圧縮データA4 B3C5 D28 バイト(軽い)伸張規則を元に戻して展開する復元データAAAABBBCCCCCDD14 バイト・完全一致元データ = 復元データ(1ビットも違わない)代表的な形式ZIP汎用ファイル圧縮PNG画像(劣化なし)FLAC音声(無劣化)GIF画像(256色)ポイント・データの「規則性・繰り返し」を見つけて短く書き換える・伸張すると元データと1ビットも違わず完全に復元できる
解説

📌
可逆圧縮とは

圧縮 → 伸張で元に戻る(往復で情報を失わない)元データ100%圧縮復元100%一致失われる情報がゼロ=可逆(ロスレス)

可逆圧縮(ロスレス圧縮)とは、圧縮したデータを伸張(展開)すると、元のデータと完全に同じ(1ビットも違わない)状態に戻せる圧縮方式のことです。「可逆」とは「元に戻せる」という意味です。

身近な例で言うと、布団を圧縮袋に入れて空気を抜くイメージです。袋から出して空気を入れ直せば、元どおりふかふかの布団に戻ります。中身(情報)は1つも捨てていないので、まったく同じものが戻ってきます。

プログラムのソースコード・文書ファイル・実行ファイルなどは、1文字でも変わると意味が壊れてしまいます。こうしたデータは情報を絶対に失ってはいけないため、必ず可逆圧縮を使います。

🔁
復元の仕組み

可逆圧縮は、データに含まれる「規則性」や「繰り返し」を見つけて、より短い表現に置き換えることでサイズを小さくします。展開時はその規則を逆にたどることで、元のデータをぴったり復元できます。

手法考え方
ランレングス法連続する同じ値を「値+回数」にAAAA → A4
ハフマン符号化よく出る値に短いビット列を割当頻出文字を 0
LZ系(辞書式)過去に出た並びを位置参照で表現ZIP / PNG

図解の例では AAAA という4文字を A4(Aが4個)という2文字に置き換えています。これはランレングス法の考え方です。展開するときは「A4」を見て「Aを4回並べる」と機械的に戻せるため、元の AAAA が確実に復元されます。

復元できる理由は、圧縮の際に情報を一切捨てていないからです。あくまで「同じ情報を短い書き方に変換しただけ」なので、変換規則を逆に適用すれば必ず元に戻ります。これが可逆圧縮の本質です。

📦
代表的な形式

ZIPファイルPNG画像GIF画像FLAC音声どれも展開すれば元と完全一致する形式

代表的な可逆圧縮の形式には次のものがあります。
ZIP / LZH:文書・プログラムなど汎用ファイルをまとめて圧縮するアーカイブ形式
PNG:画質を劣化させずに圧縮する画像形式(イラスト・スクリーンショット向き)
GIF:256色の画像形式(LZW圧縮を使う可逆形式)
FLAC:音質を一切落とさない音声圧縮形式

覚え方のコツ: 「ファイル・プログラム・テキストなど、1ビットも失えないデータ」には可逆圧縮を使います。PNG・GIF・FLAC・ZIP は可逆、対してJPEG・MP3・MPEG は非可逆、とセットで覚えると区別しやすくなります。

注意点として、可逆圧縮は情報を捨てられないため、非可逆圧縮ほど高い圧縮率は得られません。写真や音楽のように多少の劣化が気にならないデータでは、より小さくできる非可逆圧縮(JPEG・MP3など)が選ばれます。「完全復元が必要か」「サイズを優先したいか」で使い分けるのがポイントです。

💡
なぜ可逆と非可逆を使い分けるのか

データの種類によって最適な圧縮方式が違う可逆(ロスレス)情報を1ビットも捨てないZIP・PNG・FLAC文書・プログラム向き非可逆(ロッシー)一部の情報を捨てて小さくJPEG・MP3・MPEG写真・音楽・動画向き「1ビットも欠けてはならない」→ 可逆 / 「多少の劣化は許容できる」→ 非可逆

可逆圧縮と非可逆圧縮(=非可逆とも呼ぶ、JPEGやMP3が代表)の最大の違いは「元に戻せるか・戻せないか」です。どちらを選ぶかは、そのデータが「完全復元を必要とするか」によって決まります。

なぜ非可逆圧縮が存在するのか。それは人間の感覚が不完全だからです。写真の色が少しずれても、音楽の高音がわずかに欠けても、私たちにはほとんど気づけません。こうした「気づきにくい情報」を意図的に捨てることで、ファイルを大幅に小さくできます。
可逆:文書・プログラム・表計算ファイルなど、1文字・1ビットの違いが致命的なデータに使う
非可逆:写真・音楽・動画など、多少の劣化が許容できるデータに使う

身近な例で言うと、銀行の通帳は1円も違っては困りますが(可逆)、SNS用の写真は少し圧縮されても構いません(非可逆)。データの「正確さへの要求」に応じて使い分けるのが鉄則です。

🔑
なぜ元に戻せるのか

「変換ルール」を保存するから戻せる元データAAAA→A4変換ルール一緒に保存する圧縮データA4 B3ルールを逆にたどって復元捨てた情報がないので完全に一致する

元に戻せる理由は、圧縮の際に「変換ルール」も一緒に保存しているからです。たとえばランレングス法なら「AAAAA4(Aが4個の意味)」というルールを使って短く書き換え、そのルール自体もデータに含めて保存します。

展開(伸張)するときは、そのルールを逆方向に読むだけです。
圧縮時AAAA という繰り返しを見つけて A4 に書き換える
展開時A4 を見て「Aを4回並べる」と機械的に戻す
このように「変換の仕方を記録しておけば、逆に適用すれば必ず元に戻る」のが可逆圧縮の本質です。

なぜ非可逆は戻せないのか。非可逆圧縮は「人間が気づきにくい細かい情報」を完全に削除(捨てる)するためです。削除した情報はどこにも残っていないので、たとえルールが分かっても復元できません。捨ててしまった情報は戻せない——これが非可逆の意味であり、可逆との根本的な違いです。

関連コンテンツ