Zstandardとは - わかりやすく解説 Weblio辞書 (original) (raw)

Zstandard

作者 Yann Collet
開発元 Meta Platforms, Inc.
初版 2015年1月23日 (9年前) (2015-01-23)
最新版 1.5.6[1] / 27 3月 2024
リポジトリ github.com/facebook/zstd.git
プログラミング言語 C言語
対応OS クロスプラットホーム
プラットフォーム ポータブル
サポート状況 開発中
種別 データ圧縮
ライセンス 三条項BSDライセンスGPLv2デュアルライセンス
公式サイト facebook.github.io/zstd/
テンプレートを表示

Zstandard

拡張子 .zst
MIMEタイプ application/zstd
種別 データ圧縮
国際標準 RFC 8878
オープン フォーマット Yes
ウェブサイト facebook.github.io/zstd/

Zstandard (zstd) は、圧縮・展開が速いことを特徴とする可逆圧縮アルゴリズムである[2]。またC言語で書かれた前述のアルゴリズムのリファレンス実装の名前でもある。Meta Platforms, Inc.に所属しているYann Colletによって2015年から開発されている。

この実装のバージョン1.0.0は2016年8月31日に自由ソフトウェアとして公開された[3][4]。2018年10月に RFC 8478 で規格化され、2021年2月に RFC 8878 に更新された。メディアタイプapplication/zstd [5]。英語発音はズィースタンダード(zee standard)[5]

特徴

Zstandardは、デフォルトの圧縮レベル3の場合、現在主流であるDeflate (ZIP, gzip) アルゴリズムとほぼ同じ圧縮率だが、より高速に圧縮と解凍が行えるように設計されている[2][6]

圧縮レベルは正の側は1~22が指定可能で、圧縮レベルを上げると圧縮率は上がり、幅広いレンジの圧縮率に対応している。Arch Linuxのパッケージ圧縮はZstandardを採用しているが、圧縮レベル20を採用していて[7]xzと比較してサイズの増加は0.8%に留まり、解凍は14倍高速である[8]。圧縮レベルは-1以下も存在し、コマンドライン版では --fast=# で指定することが可能で、Zstandardの開発者による調査だと --fast=2 は QuickLZ や Snappy 相当、--fast=3 は LZO 相当、--fast=4 は LZ4 相当である[9]

Zstandardは大きな検索窓の辞書式圧縮アルゴリズム (LZ77) とエントロピー符号化を併用しており、エントロピー符号化ステージで有限状態エントロピー(FSE)のtANS(英語版) あるいはハフマン符号化を使用している[10]。Zstandardの実装で特徴的なのはエントロピー復号時に逆方向から読み取ることである。

デフォルトでは利用しないが、並列圧縮にも対応していて、コマンドライン版は-T#で指定する。#に並列度を入れ、0の場合はCPUのコア数となる[11]。標準の Zstandard は並列解凍には対応していないが[12]、ファイルをチャンクサイズで分割して圧縮・解凍する Parallel Zstandard (PZstandard) があり、こちらは並列解凍に対応している[13]

コマンドラインプログラム

API

C言語で実装され、APIが提供されている。それに対して、様々なプログラミング言語でのバインディングおよび再実装が存在する。[2]

ライセンス

バージョン1.0.0から1.3.0までは、リファレンス実装がBSDライセンスにてGitHubで公開されていて、関連する特許の使用を認める追加ライセンス[18] も付属していた。

2017年8月21日にリリースされたバージョン1.3.1 [19] から、この特許条項は削除され、ライセンスは三条項BSDとGPLv2のデュアルライセンスに変更された[20]

利用例

Linuxカーネルには2017年11月(バージョン4.14)からZstandardが含まれており、btrfsやsquashfsファイルシステムでの圧縮方法として利用可能となっている。また、2020年10月(バージョン5.9)からカーネルイメージの圧縮方法として利用可能となった。

FreeBSDカーネルには2017年からZstandardが含まれており、コアダンプ(ユーザープログラムとカーネルパニックの両方)の圧縮オプションとして利用可能となっている。

GNU tar は2019年1月2日にリリースされた 1.31 から対応している。拡張子は .tar.zst もしくは .tzst 。bsdtar (libarchive) は2019年4月11日にリリースされた 3.3.3 から対応している。[21][22]

rsync では2020年6月19日にリリースされた 3.2.0 から zlib 以外に、Zstandard と LZ4 に対応した。[23]

Ubuntu 21.10[24](非デフォルトとしてはUbuntu 18.04より[25])、Red Hat Enterprise Linux 9[26]Fedora 31[27]、2019年12月27日以降のArch Linux[8]等、多くのLinuxディストリビューションでデフォルトのパッケージ圧縮方式としてZstandardを利用している。Ubuntuでは圧縮レベル19[25]、Arch Linuxでは圧縮レベル20[7]を採用したが、xzの圧縮レベル6に比べて、Zstandardの圧縮レベル19では6%[25]、圧縮レベル20では0.8%[8]パッケージのサイズが増加するが、展開速度は格段に高速になる[8]。Debian からフォークしている Ubuntu が先行した形で、Debian 側の dpkg は2023年1月10日に Zstandard に対応したが[28]、Debian 12 現在は引き続き xz をデフォルトとしている。

Google Chrome 123(2024年3月19日リリース)、Microsoft Edge 123、Mozilla Firefox 126 より、HTTP の Content-Encoding に zstd が使える。[29][30]

参照

参考文献

  1. ^Release Zstandard v1.5.6 - Chrome Edition · facebook/zstd” (英語). 27 3月 2024閲覧。
  2. ^ a b cZstandard - Real-time data compression algorithm”. facebook.github.io. 4 May 2024閲覧。
  3. ^ Sergio De Simone, Facebook Open-Sources New Compression Algorithm Outperforming Zlib / InfoQ, Sep 02, 2016
  4. ^ “Life imitates satire: Facebook touts zlib killer just like Silicon Valley's Pied Piper”. The Register. (2016年8月31日). http://www.theregister.co.uk/2016/08/31/facebook_open_source_database/ 2016年9月6日閲覧。
  5. ^ a b RFC 8878
  6. ^ Smaller and faster data compression with Zstandard - Engineering at Meta
  7. ^ a b arch-dev-public RFC: (devtools) Changing default compression method to zstd
  8. ^ a b c d Arch Linux - News: Now using Zstandard instead of xz for package compression
  9. ^ Release Zstandard v1.3.4 - faster everything · facebook/zstd
  10. ^ https://github.com/facebook/zstd/blob/master/doc/zstd_compression_format.md#entropy-encoding
  11. ^zstd(1) — Arch manual pages”. March 31, 2024閲覧。
  12. ^Multithreaded decompression · Issue #2470 · facebook/zstd - GitHub”. March 31, 2024閲覧。
  13. ^zstd/contrib/pzstd/README.md at v1.5.6 · facebook/zstd - GitHub”. March 31, 2024閲覧。
  14. ^zstdmt(1) — zstd — Debian bookworm — Debian Manpages”. manpages.debian.org. 4 May 2024閲覧。
  15. ^zstdless(1) — zstd — Debian bookworm — Debian Manpages”. manpages.debian.org. 4 May 2024閲覧。
  16. ^zstdgrep(1) — zstd — Debian bookworm — Debian Manpages”. manpages.debian.org. 4 May 2024閲覧。
  17. ^pzstd(1) — zstd — Debian bookworm — Debian Manpages”. manpages.debian.org. 4 May 2024閲覧。
  18. ^ zstd/PATENTS "Additional Grant of Patent Rights Version 2", Facebook
  19. ^ "Zstd v1.3.1 release", GitHub
  20. ^ "New license", GitHub
  21. ^ tar-1.31 released stable
  22. ^ Release Feature and Security Release · libarchive/libarchive
  23. ^ NEWS for rsync 3.2.0 (19 Jun 2020) - NEWS for rsync
  24. ^ Hello zstd compressed .debs in Ubuntu! | Obsessed with reality
  25. ^ a b c zstd compression for packages - ubuntu devel
  26. ^22.1. Notable changes to software management - Considerations in adopting RHEL 9 Red Hat Enterprise Linux 9 | Red Hat Customer Portal”. Red Hat Customer Portal. 2 May 2024閲覧。
  27. ^Changes/Switch RPMs to zstd compression - Fedora Project Wiki”. fedoraproject.org. 2 May 2024閲覧。
  28. ^1.21.18 : dpkg package : Debian”. Launchpad. 22 July 2023閲覧。
  29. ^Chrome 123 の新機能 | Blog | Chrome for Developers”. May 4, 2024閲覧。
  30. ^Content-Encoding - HTTP”. May 4, 2024閲覧。

外部リンク

データ圧縮方式
可逆 エントロピー符号 一進法 算術 Asymmetric numeral systems(英語版ゴロム ハフマン 適応型(英語版) 正準(英語版MH レンジ シャノン シャノン・ファノ シャノン・ファノ・イライアス(英語版) タンストール(英語版) ユニバーサル(英語版) 指数ゴロム(英語版) フィボナッチ(英語版ガンマ レーベンシュタイン(英語版) 辞書式(英語版BPE Deflate Lempel-Ziv LZ77 LZ78 LZFSE LZH LZJB(英語版LZMA LZO LZRW(英語版) LZS(英語版LZSS LZW LZWL(英語版LZX LZ4 ROLZ(英語版) 統計型(英語版Brotli Snappy Zstandard その他 BWT CTW(英語版Delta DMC(英語版MTF PAQ PPM RLE
音声 理論 ビットレート 平均(ABR) 固定(CBR) 可変(VBR) コンパンディング 畳み込み ダイナミックレンジ レイテンシ(英語版標本化定理 標本化 音質 音声符号化 サブバンド符号化 変換符号化 知覚符号化 コーデック A-law μ-law ACELP ADPCM CELP DPCM フーリエ変換 LPC LAR LSP MDCT 音響心理学 WLPC
画像 理論 クロマサブサンプリング 符号化ツリーユニット(英語版色空間 圧縮アーティファクト 解像度 マクロブロック ピクセル PSNR 量子化(英語版) 標準テストイメージ(英語版) 手法 チェインコード(英語版DCT EZW(英語版フラクタル KLT(英語版) ピラミッド(英語版RLE SPIHT(英語版ウェーブレット
映像 理論 ビットレート 平均(ABR) 固定(CBR) 可変(VBR) 画面解像度 フレーム フレームレート インターレース 映像品質(英語版) コーデック(英語版) 重複変換(英語版DCT デブロッキングフィルタ(英語版フレーム間予測
理論 情報量 複雑性 非可逆 量子化 レート歪み(英語版冗長性 情報理論の年表(英語版