FE EXAM

ZIP(ファイル圧縮)

LZ77とハフマン符号を組み合わせたDeflateで圧縮するファイル圧縮形式

DIAGRAM
LZ77ハフマンZIP

① Deflate = ①LZ77 で繰り返しを参照に → ②ハフマン符号で圧縮

元データABCABCABC同じ並びが繰り返すLZ77繰り返しを「参照」に置換ABC(3前から6コピー)「○文字前から△文字分」と短く言い換えるハフマン符号よく出る値ほど短いビットにA=0 B=10 C=11頻出文字を短い符号に割り当ててビット数削減ZIPファイル.zip小さくなる展開すると元データに完全に戻る(可逆)

② LZ77:すでに出た並びは「どこから何文字コピー」で表す

文字列「ABRACADABRA」の後半「ABRA」は前半と同じABRACADABRA後半の「ABRA」=「7文字前から4文字コピー」と記録文字をそのまま2度書かないので短くなる

③ ZIPの用途

🗂️複数ファイルを1つにフォルダごと1ファイルにまとめる📤メール・配布送受信やダウンロードを楽に💾保管・節約使わないデータの容量を削減
解説

📌
ZIPとは

複数ファイルをまとめて圧縮複数ファイル可逆ZIPdata.zip1ファイルにまとまり、容量も減る

ZIP(ジップ)とは、複数のファイルを1つにまとめて圧縮できる、最も普及したファイル圧縮形式です。WindowsやmacOSに標準で展開機能が備わっており、誰でも特別なソフトなしに開けます。

ZIPは可逆圧縮(=展開すれば元のファイルに完全に戻せる圧縮)です。文書・プログラム・表計算など、1ビットでも壊れると困るデータを安全に小さくできます。画像のJPEGや音声のMP3のように情報を捨てる非可逆圧縮とは、ここが決定的に違います。

身近な例で言うと、ZIPは「衣類を圧縮袋に入れて空気を抜く」イメージです。かさばる荷物を小さくまとめられ、袋を開ければ服はそのまま元どおり。この圧縮のエンジン部分が、次に説明するDeflateというアルゴリズムです。

🗜️
Deflateアルゴリズムの仕組み

元データ繰り返し①LZ77参照に②ハフマン短い符号2段がけでさらに小さく

ZIPの中核となる圧縮アルゴリズムがDeflate(デフレート)です。これは2つの技術を順番に組み合わせるのが特徴で、画像形式のPNGでも同じものが使われています。


①LZ77:直前に出てきた同じデータの並びを「○文字前から△文字分コピー」という参照に置き換える。例えば「ABRACADABRA」の後半の「ABRA」は、前半をコピーする指示に変えられる
②ハフマン符号:出現回数の多い値ほど短いビット列を割り当てて、全体のビット数を減らす(よく使う字を短い暗号にするイメージ)

身近な例で言うと、議事録の略語に似ています。何度も出る長い言葉を「以下A社」とまとめ(LZ77的)、さらに頻出語を短い記号にする(ハフマン的)と、文章はぐっと短くなります。可逆なので、展開時に略語を元の言葉へ戻せば完全に復元できます。この仕組みは「Deflate=LZ77+ハフマン符号」とまとめられます。

📦
用途(ファイル圧縮・配布)

ZIPは「複数のファイルを1つにまとめる(アーカイブ)」機能と「サイズを小さくする(圧縮)」機能を兼ね備えているため、ファイルの受け渡しや保管で幅広く使われます。

代表的な用途は次のとおりです。
ファイルのまとめ送り:複数のファイルやフォルダを1つの.zipにして、メール添付やアップロードを1回で済ませる
ソフト・素材の配布:プログラムや資料一式をまとめて配り、受け取った側は展開して使う
保管・容量節約:当面使わないデータを圧縮して保存し、ディスク容量を節約する
パスワード保護:ZIPに暗号化をかけて、中身を見られないように送る

可逆圧縮のZIPは文書・プログラムなど「壊れてはいけないデータ」向きです。一方、写真や音楽をぎりぎりまで小さくしたいときは非可逆のJPEGやMP3が向きます。すでに圧縮済みのファイル(JPEGやMP3など)をZIPにしてもほとんど小さくならない点も、あわせて知っておくとよいでしょう。

関連コンテンツ