ZIPの歴史|Phil Katz 1989年PKZIP〜DEFLATE〜ZIP64〜Blob APIまで
教養・うんちく系(出典: Wikipedia「ZIP」/ RFC 1951 / MDN)
ZIPファイルは、いまや誰もが当たり前に使う「圧縮形式」の代表ですが、ここまで普及するには30年以上の試行錯誤と特許争い、そして技術的な拡張の歴史があります。本記事では、ZIPの誕生から現代のブラウザ内圧縮までを、技術史としてたどってみます。
1. 1989年・Phil KatzとPKZIPの誕生
ZIPフォーマットを生み出したのは、アメリカ・ミルウォーキー在住のソフトウェアエンジニア、フィル・カッツ(Phil Katz、1962-2000)です。当時の圧縮形式「ARC」(SEA社が開発)が業界標準だった1980年代後半、Katzは自分のシェアウェア会社「PKWARE社」で互換ソフト「PKARC」をリリースし、SEA社から特許訴訟を起こされます。
訴訟の和解条件としてPKARCの販売停止を強いられたKatzは、報復として全く新しい圧縮フォーマットを設計し、1989年に「PKZIP 1.0」をMS-DOS用シェアウェアとしてリリースします。これがZIPフォーマットの初出です。PKZIPは独自のローカルファイルヘッダ/セントラルディレクトリ/EOCD(End of Central Directory)という3層構造を採用し、ARCより高速・高圧縮率を実現したことで、瞬く間にPCユーザーに普及しました。
※Katz自身は2000年4月、アルコール依存症との闘いの末、ミルウォーキーのホテルで37歳の若さで亡くなりました。彼の遺した「ZIP」は、本人の死後25年以上経った今も世界中で使われ続けています。
2. 1996年・DEFLATE圧縮アルゴリズムの標準化
ZIPで採用されている圧縮アルゴリズム「DEFLATE」は、1996年5月にIETFで「RFC 1951」として標準化されました。設計者はPhil Katz自身で、共同提唱にJean-Loup Gailly(gzip作者)、Mark Adler(zlib作者)、L. Peter Deutschらが関わっています。
DEFLATEは、辞書ベース圧縮の「LZ77」と、頻度ベース符号化の「ハフマン符号」を組み合わせたハイブリッド方式です。具体的な仕様としては、最大圧縮距離が32,768バイト、最大長が258バイト、非圧縮ブロックは最大65,535バイトといった制限があります。一般的なテキストでは2.5〜3倍に圧縮できるとされ、英文や日本語テキストの大幅な容量削減を実現しました。
DEFLATEはZIPだけでなくgzip・PNG・HTTP圧縮(Content-Encoding: gzip/deflate)にも採用されており、現代インターネットを支える基盤技術の一つです。
3. 2003年・WinZip 9.0とAES暗号化
PKZIP標準のパスワード方式「ZipCrypto」は1990年代に十分とされた強度でしたが、2000年代に入ると暗号学的な脆弱性が指摘されるようになります。これを受けて、2003年にWinZip Computing社が「WinZip 9.0」でAES暗号化を独自拡張として実装しました。
AESはNIST(米国国立標準技術研究所)が2001年に標準化した暗号アルゴリズムで、当時から現在に至るまで、世界中の政府機関・金融機関・SSL/TLS・iOSフルディスク暗号化などで採用されています。WinZip方式のAES-ZIPは、7-Zip・WinRARなど主要解凍ソフトも対応し、事実上の業界標準となりました。
4. ZIP64拡張(容量4GiB超対応)
オリジナルのZIP仕様は、ファイルサイズ・アーカイブサイズの記録に32ビット整数を使っており、最大4GiB(約4.29GB)までしか扱えませんでした。DVD・Blu-rayの普及やバックアップ用途で4GiBを超えるZIPが必要になり、PKWARE社は仕様バージョン4.5(2001年公表)で「ZIP64拡張」を導入します。
ZIP64では、サイズ記録を64ビット整数に拡張し、最大16EiB(約18,000,000,000GB)まで対応可能になりました。これは現代の単一ファイルでは事実上「無制限」と言える容量です。Windows XP以降のエクスプローラ、macOS、7-Zip、WinRARなど、現代の主要ソフトは全てZIP64対応済みです。
5. 文字コード対応とEFS bit11
ZIPでファイル名を扱う際、初期仕様では文字コードが明示的に決められておらず、慣習的にOS依存(Windowsなら日本語環境ではShift_JIS / CP932)で保存されていました。これが、海外でWindows ZIPを開くと日本語ファイル名が文字化けする、Macで作ったZIPをWindowsで開くと崩れる、といった問題の原因でした。
解決のため、ZIP仕様バージョン6.3.0で「EFS(Efficient Storage)bit 11」というフラグが定義され、これをセットするとファイル名をUTF-8で保存するルールになりました。Windows 10以降のエクスプローラ、macOS、7-Zip 18以降、スマホアプリは全てEFS bit 11に対応しており、文字化け問題はほぼ解消されています。
6. 2015年〜・ブラウザBlob APIによる端末内ZIP生成
2015年7月、HTML5の「Blob」「URL」「File」APIが全主要ブラウザでBaseline対応となりました。これにより、JavaScriptがブラウザ内でバイナリデータを生成し、new Blob([data], {type:"application/zip"})でZIPファイルを作り、URL.createObjectURL()でダウンロードリンクに変換できるようになりました。
このBlob APIが、サーバーにファイルを送らずに「全てブラウザ内」でZIPを作る、現代の端末内処理型ツールの基盤になっています。手軽屋ZIP作成ツールもこの仕組みを採用し、ファイル・パスワード共に外部送信ゼロを実現しています。JavaScriptのZIP生成ライブラリ「JSZip」やWASM版の「zip.js」もこの上に構築されています。
7. 現代の使われ方と今後
現在、ZIPは以下のような幅広い場面で使われています。
- ・ファイル共有・メール添付(書類のまとめ送付)
- ・ソフトウェア配布(インストーラ・パッチ)
- ・電子書籍(EPUB形式の実体はZIP)
- ・Microsoft Office(.docx/.xlsx/.pptxの実体はZIP)
- ・iOSアプリ(.ipa)、Androidアプリ(.apk)、Javaライブラリ(.jar)
- ・バックアップ・アーカイブ用途
技術的には、より高圧縮の7z(LZMA2)、Brotli、Zstandardといった後継圧縮形式が登場していますが、ZIPは「全OS標準対応・読み書き互換」という普及力を武器に、当面は標準フォーマットの座を守り続けるでしょう。Phil Katzが35年前にMS-DOSで生み出したフォーマットが、いまも変わらず私たちの生活を支えている──ZIPの歴史は、シンプルで実用的な技術が長く生き残る好例です。
関連ツール・記事
- ・パスワード付きZIP作成(本体)
- ・ZIP解凍
- ・ZIPファイルの作り方
- ・PPAP問題と代替手段
- ・PDF結合:PDFを1ファイルに