ZIPファイル形式: アーカイブと圧縮の標準
ZIPファイル形式の概要。構造、代表的な圧縮方式DEFLATE、ZIP64、暗号化、歴史、用途、互換性をわかりやすく解説。
ZIPファイル形式は、可逆データ圧縮とアーカイブ保存に広く使われるコンテナー形式です。PKWAREのPhil Katzによって作成され、ZIPファイルは1つ以上のファイルやディレクトリを単一のアーカイブにまとめ、圧縮された項目と圧縮されていない項目の両方を含めることができます。実装や派生形式は各プラットフォームやツールで共存しており、正式なZIP仕様が多くのプログラムで使われるディスク上の構造を定めています。
構造と主な特徴
ファイルレベルでは、ZIPアーカイブは繰り返し記録を用います。各ファイル項目にはローカルファイルヘッダーがあり、その後に圧縮データが続き、アーカイブの末尾には項目を素早く参照するための中央ディレクトリがあります。圧縮された各項目にはCRC-32チェックサムと、ファイル名、更新時刻、圧縮方式などのメタデータが含まれます。ZIPアーカイブで最も一般的な圧縮方式はDEFLATEで、LZ77系の辞書圧縮とハフマン符号化を組み合わせます。
ZIPは複数の圧縮アルゴリズムや機能を柔軟に扱えます。主な方式には次があります。
- Store(圧縮なし)— すでに圧縮済みのデータや小さな項目向け。
- DEFLATE — ほとんどのZIPファイルで事実上の標準。
- BZIP2、LZMA、PPMd — 一部のツールで対応するが、相互運用性は低め。
拡張、制限、セキュリティ
初期のZIP構造ではサイズや件数に32ビットのフィールドが使われていたため、アーカイブの大きさやエントリ数に制限がありました。ZIP64拡張はその制限を引き上げ、非常に大きなアーカイブに対して現代のツールでサポートされています。安全性と検証のため、ZIPはCRC-32チェックサムと、ヘッダー内の任意の拡張フィールドに依存します。
暗号化と完全性は特に重要です。従来の方式であるZipCryptoは実装が簡単で広く使われていますが、暗号学的には弱いものです。より強力な選択肢として、一部ベンダーが用いるAESベースの拡張がありますが、これは普遍的にはサポートされていません。暗号化が必要な場合は、互換性と十分な保護を確保するために、どのアルゴリズムとツールチェーンが使われているかを確認する必要があります。
ZIPの普及により、ソフトウェア配布、バックアップ、ファイル交換、アプリケーション内の資源の梱包などで一般的な選択肢になっています。tarとgzipまたはbzip2の組み合わせや、7zのような新しいコンテナー形式など、他のアーカイブ/圧縮モデルとは異なり、ZIPはアーカイブ内のファイルへ直接アクセスでき、さまざまな任意機能も備えています。圧縮の概念をさらに読むなら可逆圧縮や一般的な圧縮アルゴリズムが参考になります。
ZIPアーカイブの作成と展開には、OSに標準搭載されたユーティリティやサードパーティ製プログラムが多数あります。広く配布する目的でアーカイブを作成する場合は、DEFLATEを優先し、受け手が対応していない可能性のある不明な拡張は避けるのが無難です。
関連項目
著者
AlegsaOnline.com ZIPファイル形式: アーカイブと圧縮の標準 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/110646