11分で読めます

ZIPファイルとは?ファイル圧縮とアーカイブの仕組みを解説

ZIPは複数のファイルを1つにまとめ、必要に応じてサイズを小さくできるarchive formatです。メール添付、バックアップ、配布ファイル、ダウンロードパッケージなどで広く使われています。

ZIPファイルとは?

ZIPファイルは、1つまたは複数のファイルとフォルダーをまとめて保存するarchive fileです。多くの場合、ファイルサイズを小さくするためにlossless圧縮も行います。

lossless圧縮なので、展開すると元のデータを完全に復元できます。画像や動画のように既に圧縮済みのファイルはあまり小さくなりませんが、テキスト、CSV、JSON、Office文書、source codeは効果が出やすいです。

ZIPの短い歴史

ZIP形式は1989年にPKWAREのPhil Katzによって作られました。高速で、複数ファイルを扱え、ランダムアクセスしやすい設計だったため、DOS時代から現在のWindows、macOS、Linux、Web配布まで長く使われ続けています。

ZIP圧縮の仕組み

ZIPはarchive containerであり、中の各ファイルごとに圧縮方式を選べます。代表的なのは圧縮しないSTOREと、広く使われるDEFLATEです。

方式ID説明向くファイル
STORE0圧縮せず、元のファイルをそのまま格納するJPEG、MP4、MP3など既に圧縮済みのファイル
DEFLATE8LZ77 + Huffman codingによるlossless圧縮テキスト、ドキュメント、source code、data files

DEFLATEアルゴリズム

DEFLATEは、繰り返しパターンを参照に置き換えるLZ77と、出現頻度の高い値を短いbit列にするHuffman codingを組み合わせます。元に戻せるlossless圧縮なので、文書やコードを安全に小さくできます。

圧縮レベル0-9

Level意味速度圧縮率目安
0STORE、圧縮なし即時0%
1最速のDEFLATE非常に速いおよそ50-60%
6多くのツールの標準バランス中程度およそ60-70%
9最大圧縮遅いおよそ65-75%

ZIPファイルの内部構造

ZIPには各ファイルのlocal file header、圧縮データ、central directory、end of central directory recordが含まれます。central directoryがあるため、ZIPツールはarchive全体を最初から順番に読まなくても、含まれるファイル一覧を素早く表示できます。

ZIP暗号化: ZipCrypto vs AES-256

ZIPには古いZipCryptoと、より安全なAES-256暗号化があります。機密データを送る場合は、ZipCryptoではなくAES-256対応のツールを選び、強いパスワードを使うべきです。

観点ZipCryptoAES-256
安全性弱い。known-plaintext attackに弱い強い。重要データにはこちらが適する
速度非常に速い少し遅いが現代の環境では実用的
互換性ほぼすべてのZIPツールで開ける7-Zip、WinRAR、macOS Archive Utilityなど多くが対応
推奨機密データには避ける安全性を重視する場合に選ぶ

ZIP64と4GB制限

古いZIP仕様では、1ファイルやarchive全体のサイズ、ファイル数に制限がありました。ZIP64拡張により、4GBを超える大きなファイルや多数のファイルを扱えるようになっています。

ZIPと他のarchive format

観点ZIP7zRARtar.gz
圧縮良い。DEFLATEを使用非常に良い。LZMA2を使用高い良い。gzip/DEFLATEを使用
OS標準対応主要OSで広く対応ZIPより限定的限定的Linux/macOSで強い
単一ファイルの取り出し可能可能可能順次読み込みが必要なことが多い
暗号化AES-256 / ZipCryptoAES-256、ファイル名非表示も可能AES-256、ファイル名非表示も可能単体では基本なし

ZIPを使うべき場面

  • 複数ファイルを1つにまとめて配布したい。
  • Windows、macOS、Linuxで追加ソフトなしに開ける形式にしたい。
  • テキストやドキュメントを小さくして送信したい。
  • フォルダー構造を保ったままバックアップしたい。

コードでZIPを扱う

多くの言語にはZIPを扱う標準ライブラリがあります。大量ファイルや大容量ファイルでは、メモリに全部載せずstreamingで作成・展開する設計が重要です。

ZIPファイルを変換・展開

ZIP、7z、tar、gzipなどのarchiveをブラウザ上で扱えます。

ZIP Converterを開く