Deflate (RFC 1951)(デフレート)
Phil Katz が 1989 年に PKZIP のために設計し、1996 年に RFC 1951 として標準化された可逆圧縮アルゴリズム。LZ77 (辞書圧縮) + Huffman 符号化の組合せで、ZIP・gzip・PNG・zlib など現代の主要圧縮フォーマットの基盤となった。
概要
Deflate は、PKWARE 社の Phil Katz が 1989 年に PKZIP 2.0 のために設計し、Peter Deutsch が 1996 年に RFC 1951 として IETF 標準化した可逆圧縮アルゴリズムで、LZ77 (辞書圧縮) + Huffman 符号化の組合せにより、ZIP・gzip・PNG・zlib・HTTP/1.1 Content-Encoding など現代の主要圧縮フォーマットの基盤となった圧倒的に普及した汎用圧縮技術です。Phil Katz が PKWARE の特許フリー方針 (LZW のような特許問題を起こさない方針) を貫いたことで、世界中のソフトウェアに自由に組み込まれ、1995 年に Jean-loup Gailly と Mark Adler が zlib ライブラリとして OSS 実装、1996 年 PNG 仕様策定、1997 年 HTTP/1.1 (RFC 2068) で Content-Encoding: gzip 標準化と次々に普及し、2026 年現在も最も広く使われる圧縮技術です。
主な特徴・仕組み
- 発表: 1989 年 Phil Katz、PKZIP 2.0 で実装
- 標準化: 1996 年 Peter Deutsch、RFC 1951
- 構成: LZ77 (前段) + Huffman 符号化 (後段) の二段階
- LZ77 ウィンドウ: 最大 32KB (15bit オフセット)
- マッチ最低長: 3 バイト
- Huffman 木: 静的 (固定) または動的 (ブロック単位適応)
- 圧縮レベル: 0 (無圧縮) - 9 (最大圧縮)、典型 6
- 圧縮率: 一般的なテキストで 60-75%、画像は限定的
- 速度: 圧縮 1-50MB/s、解凍 50-200MB/s (CPU 依存)
- 特許: なし、Phil Katz の特許フリー方針
スペック比較表
| ツール | アルゴリズム | 圧縮率 | 速度 (圧縮) |
|---|---|---|---|
| gzip (Deflate) | LZ77+Huffman | 60-75% | 10-30MB/s |
| bzip2 | BWT+Huffman | 65-80% | 5-15MB/s |
| LZMA (7-Zip) | LZ77+RC | 70-85% | 1-10MB/s |
| Zstandard | LZ77+ANS | 65-85% | 50-300MB/s |
| Brotli | LZ77+Huffman+Dict | 70-80% | 5-20MB/s |
具体例・対応技術
- ZIP (PKZIP 2.0, 1989): 元祖、Deflate 標準圧縮方式
- gzip (1992): Jean-loup Gailly 開発、UNIX/Linux 標準
- PNG (1996): PNG Working Group、画像圧縮で GIF 置換
- zlib (1995): Gailly・Adler、C ライブラリ実装
- HTTP/1.1 Content-Encoding: gzip (1997): Web 圧縮標準
自作PCでの選び方・注意点
Deflate は 2026 年現在も最も広く使われる圧縮技術で、Windows のエクスプローラの「圧縮 ZIP フォルダー」・macOS Finder の「圧縮」・Linux の gzip/tar -z・Web ブラウザの HTTP Content-Encoding: gzip 等で日常的に動作しています。自作 PC で AI モデルファイル (Llama 3 70B Q4 = 約 40GB) を移動する際、Deflate (gzip) は圧縮率 5-10% 程度しか見込めないため Zstandard (zstd -19) で 25-30GB まで圧縮するのが現代的アプローチ。Web 開発でレスポンス圧縮は Nginx の gzip on; (Deflate) または brotli on; (Brotli) の選択、CPU 負荷と圧縮率のバランスで Brotli が新規プロジェクトで推奨。zlib ライブラリ (libz.so) はあらゆる Linux/macOS アプリで動作する基盤、Python の zlib モジュール・Node.js の zlib モジュールも同じ実装を使います。
関連用語との違い
- LZ77: Deflate の前段、辞書圧縮部分
- Huffman: Deflate の後段、エントロピー符号化部分
- Zstandard (現代後継): LZ77+ANS、Deflate より高圧縮・高速
よくある質問(FAQ)
Q1: gzip と Deflate の違いは? A: Deflate は圧縮アルゴリズム、gzip は Deflate を使うファイル形式 (ヘッダ・CRC32 を追加)。実質的には同じ圧縮技術。
Q2: PNG の圧縮は本当に Deflate? A: はい、PNG 仕様 (RFC 2083) で Deflate 必須。GIF (LZW) との置換で特許フリー・高圧縮率を実現。
Q3: Zstandard と Deflate どちらを選ぶ? A: 新規開発・速度重視なら Zstandard、互換性重視・既存システム連携なら Deflate。HTTP では両者並存中。
まとめ
- Deflate = 1989 年 Phil Katz 発明、PKZIP 由来の汎用圧縮
- LZ77 + Huffman の二段階構成、特許フリー
- ZIP/gzip/PNG/zlib/HTTP 標準として 30 年以上君臨
- Zstandard・Brotli が後継として並存、Deflate 互換性で残る