LZMA (1998)(エルゼットエムエー)
Igor Pavlov が 1998 年に開発した可逆圧縮アルゴリズム。LZ77 + Range Coding + Markov モデルの組合せで、bzip2 を上回る圧縮率を実現、7-Zip (.7z) の標準圧縮方式として広く採用された。後継 LZMA2 で並列化対応、xz (tar.xz) で UNIX/Linux 標準の高圧縮形式となった。
概要
LZMA (Lempel-Ziv-Markov chain Algorithm) は、ロシアの Igor Pavlov が 1998 年に開発した可逆圧縮アルゴリズムで、LZ77 + Range Coding + Markov モデルの独自組合せにより、bzip2 を上回る圧縮率を実現した高圧縮アーカイバとして広く採用されています。7-Zip (.7z) の標準圧縮方式として商用化され、後継 LZMA2 で並列化対応 (2009)、その後 xz Utils (tar.xz) として UNIX/Linux 標準の高圧縮形式となりました。辞書サイズは最大 4GB という超大型コンテキストを保持し、Range Coding (算術符号化の整数演算版) で算術符号化に近い高圧縮率を実現。圧縮速度は gzip/bzip2 より遅いものの解凍速度は実用的で、AI モデルファイル (Llama 3 70B Q4 など 40GB+) ・Linux カーネルアーカイブ・大型データ配布で実用的な選択肢として 2026 年現在も活発に利用されています。
主な特徴・仕組み
- 発表: 1998 年 Igor Pavlov、7-Zip 初期版
- アルゴリズム: LZ77 + Range Coding + Markov モデル
- 辞書サイズ: 最大 4GB (32bit オフセット)
- マッチ最低長: 2 バイト (LZ77 の 3 バイトより短い)
- Markov モデル: 直前バイト・位置・状態を考慮した確率モデル
- Range Coding: 算術符号化の整数演算版、高圧縮率
- 圧縮率: gzip 比 +30-50%、bzip2 比 +10-20%
- 圧縮速度: gzip 比 1/10、bzip2 比 1/2
- 解凍速度: 30-100MB/s、bzip2 の 3-5 倍
- メモリ使用量: 圧縮 64MB-1GB、解凍 4-64MB
- 特許: なし、Igor Pavlov 個人開発の OSS
スペック比較表
| ツール | 圧縮率 (Linux カーネル) | 圧縮速度 | 解凍速度 | メモリ |
|---|---|---|---|---|
| gzip | 100MB | 30MB/s | 200MB/s | 64KB |
| bzip2 | 85MB | 5MB/s | 20MB/s | 8MB |
| xz (LZMA2) | 70MB | 2MB/s | 80MB/s | 700MB |
| Zstandard 19 | 75MB | 50MB/s | 800MB/s | 256MB |
具体例・対応技術
- 7-Zip (1998-): Igor Pavlov 開発、Windows 圧縮アーカイバの定番
- xz Utils (2009-): LZMA2 の UNIX 実装、tar.xz 形式で配布
- Linux カーネルアーカイブ (linux-x.y.z.tar.xz): kernel.org 標準形式
- Arch Linux パッケージ (.pkg.tar.xz): Arch Linux パッケージ管理
- DEB/RPM (一部): 高圧縮オプションで LZMA2 採用
自作PCでの選び方・注意点
LZMA/LZMA2 (xz) は 2026 年現在も Linux カーネルアーカイブ・Arch Linux パッケージ・大型データ配布で広く利用される高圧縮率の標準ツール。自作 PC で大量データバックアップ・AI モデル配布する用途で、xz -9 で最大圧縮を狙えば bzip2 の 1.5 倍、gzip の 1.5 倍の圧縮率が得られます。ただし圧縮速度は gzip の 1/15、メモリ使用量は 700MB+ と重く、サーバ運用では Zstandard との使い分けが重要。Llama 3 70B Q4 量子化済モデル (約 40GB) を xz で圧縮すると 28-32GB、Zstd-19 で 25-30GB と差は小さく、Zstd の方が圧縮速度 10 倍以上速いため Zstd が実用的。逆に長期保存・配布物の圧縮率最優先用途では xz が選択肢として残ります。Windows ユーザーは 7-Zip (https://www.7-zip.org/) を使えば LZMA/LZMA2 の完全な GUI 対応が得られます。
関連用語との違い
- LZMA → LZMA2 (2009): 並列化対応、複数 CPU コア活用
- bzip2 (1996): 競合、LZMA より低圧縮率だが古い・互換性高
- Zstandard (2016): 現代後継、LZMA に近い圧縮率で 10 倍速い
よくある質問(FAQ)
Q1: LZMA と LZMA2 の違いは? A: LZMA2 は LZMA の改良版でブロック並列化対応、複数 CPU コアで圧縮速度向上。xz Utils は LZMA2 を採用。
Q2: 7-Zip と xz の違いは? A: 7-Zip は Windows GUI アーカイバ・LZMA 採用、xz は UNIX コマンドライン・LZMA2 採用。圧縮アルゴリズムは実質同じ系統。
Q3: 現代でも使う価値は? A: 圧縮率最優先・配布物用途では依然有効、Linux カーネル等で標準。新規バックアップ・ログ圧縮は Zstandard が高速・実用的。
まとめ
- LZMA = 1998 年 Igor Pavlov 開発、LZ77 + Range Coding + Markov
- 辞書 4GB・bzip2 比 +10-20% 高圧縮率
- 7-Zip (.7z)・xz (tar.xz) で広く利用
- Linux カーネル・大型データ配布で 2026 年も現役、Zstd と並存