ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Zstandard(略称 zstd)は 2016 年 8 月、Facebook(現 Meta)のエンジニア Yann Collet が発表した、比較的新しい汎用ロスレス圧縮アルゴリズムおよびファイル形式です。Collet は以前から超高速圧縮 LZ4 の作者として知られており、その経験を活かして「速度と圧縮率の両方をできる限り高い水準で両立させる」ことを目標に設計されました。
従来、汎用圧縮は「速度寄りの gzip」と「圧縮率寄りの xz (LZMA2)」の二択で、用途に応じて妥協する場面が多くありました。zstd は 同じ圧縮率なら gzip より数倍速く、同じ速度なら xz に迫る圧縮率 を実現することで、その妥協を不要にする立ち位置を獲得しました。圧縮レベルは -1 から -19(さらに --ultra で -22 まで)と幅広く、用途に合わせて細かく調整できます。
仕様は RFC 8478 として標準化されており、リファレンス実装は BSD ライセンス。Linux カーネル本体(4.14 以降)、Debian の .deb 圧縮(bookworm 以降の選択肢)、Arch Linux のパッケージ標準、FreeBSD、PostgreSQL(WAL/TOAST 圧縮)、RocksDB、Apache Parquet / Arrow、OpenZFS など、現代のインフラ周辺で急速に採用が広がっており、gzip の後継として位置付ける動きが強まっています。
内部構造とマジックナンバー
zstd ファイルの先頭マジックナンバーは 28 B5 2F FD(リトルエンディアンで 0xFD2FB528)です。続いてフレームヘッダ(コンテンツサイズ、ウィンドウサイズ、辞書 ID の有無などのフラグ)、データブロック群、CRC32(オプション)が並びます。
圧縮アルゴリズムは LZ77 ベースの辞書照合 + 有限状態エントロピー(FSE: tANS の一種)+ ハフマン符号 の組み合わせです。ハフマンより理論限界に近い圧縮率を持つ tANS(Asymmetric Numeral Systems)の系統である FSE を採用したことが速度・圧縮率の良バランスに大きく寄与しています。
もうひとつ重要な機能が 辞書圧縮(dictionary compression) です。サイズの小さなレコードを大量に圧縮する場合、各レコード単位では LZ77 の参照範囲が小さく圧縮率が出ません。zstd は事前に「サンプル群から共通パターンを学習した辞書」を作っておき、--train / -D dict.zd で適用することで、JSON ログや小さなネットワークパケットといった用途で gzip の数倍の圧縮率を出せます。
主な用途
- Linux カーネル / initramfs の圧縮(カーネル 4.14 以降)
- Linux ディストリビューションのパッケージ圧縮(Arch
.pkg.tar.zst、Debian.deb、Fedora の rpm 圧縮) - PostgreSQL の WAL 圧縮、Parquet / Arrow の列圧縮、RocksDB / Kafka の内部圧縮
- 大容量バックアップ(
tar --zstdで tar.zst を作成) - HTTP 圧縮の選択肢(
Content-Encoding: zstd、Chrome/Firefox/Edge が対応済み) - ネットワークプロトコルの転送圧縮(小さなメッセージは辞書圧縮を併用)
関連形式との比較
| 形式 | 圧縮率 | 速度(圧縮) | 速度(解凍) | 暗号化 | 備考 |
|---|---|---|---|---|---|
| zstd -3(既定) | 中〜高 | 非常に速い | 非常に速い | なし | gzip より高速・高圧縮 |
| zstd -19 | 高い | 遅い | 非常に速い | なし | 解凍はレベルに依存しない |
| gzip | 中 | 速い | 速い | なし | 長年の標準 |
| xz (LZMA2) | 非常に高い | 非常に遅い | 中 | なし | 圧縮率最優先 |
| lz4 | 低い | 極めて速い | 極めて速い | なし | 速度最優先・同作者 |
コマンド・ツール
# 単一ファイルを zstd 圧縮(デフォルトレベル 3)
zstd huge.csv
# → huge.csv.zst が生成。元ファイルは残る(gzip と違う)
# 圧縮レベルを上げる
zstd -19 huge.csv
zstd --ultra -22 huge.csv # ultra で -22 まで
# 全 CPU コアを使ってマルチスレッド圧縮
zstd -T0 -19 huge.csv
# 長距離マッチで巨大ファイルの圧縮率を上げる(メモリ使用増)
zstd --long=27 -19 huge.bin
# 展開
zstd -d huge.csv.zst
unzstd huge.csv.zst
# パイプで使う(gzip と同じ感覚)
mysqldump -u root mydb | zstd -T0 -19 > mydb.sql.zst
zstd -dc mydb.sql.zst | mysql -u root mydb
# tar と組み合わせる(tar.zst)
tar --zstd -cvf backup.tar.zst mydir/
tar --zstd -xvf backup.tar.zst
# 古い tar なら:
tar cvf - mydir/ | zstd -T0 -19 > backup.tar.zst
# 辞書を学習してから圧縮(小レコード大量パターン)
zstd --train samples/*.json -o app.dict
zstd -D app.dict event-001.json -o event-001.json.zst
注意点・落とし穴
- 古い環境では解凍ツールが入っていない — CentOS 7 などレガシー OS では
zstdコマンドが標準で入っていない。バックアップを古いサーバに戻す可能性があるなら、復元側にも zstd を確保しておく。 - 圧縮レベルの差が小さい範囲がある — レベル 3〜10 は性能カーブが緩やか、10 を超えると圧縮率は上がるが急速に時間が伸びる。バックアップは
-19、ログのリアルタイム圧縮は-3や-6、HTTP 動的圧縮は-1〜-3が目安。 - 解凍速度は圧縮レベルにほぼ依存しない —
-19で固めても-3と同じ高速で解凍できる。「読まれる回数が多いファイルほど高圧縮レベルで作っておく」のが定石。 - --long=27 のメモリ要件 — 長距離マッチを有効にすると圧縮側・解凍側ともに 128MB(27 なら 128MB、28 なら 256MB...)のメモリが必要。共有環境では事前に合意しておく。
- 暗号化機能はない — gzip 同様、保護が必要なら GPG や AES の追加レイヤを併用する。
- 辞書配布の運用負荷 — 辞書圧縮は強力だが、圧縮側と展開側で同じ辞書ファイルを共有する必要がある。辞書のバージョン管理を仕組みとして整える必要がある。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ZIP(.zip)
- TAR(.tar)
- GZ / GZIP(.gz / .tgz)
- 7z(.7z)
- RAR(.rar)
- BZ2 / BZIP2(.bz2 / .tbz2)
- XZ / LZMA2(.xz / .txz)
- Zstandard(.zst / .zstd)
- CAB(.cab)
- LZH(.lzh / .lha)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?