zlib

DEFLATE codec library
zlib
初回リリース1995年5月1日 (1995-05-01)
安定版リリース
1.3.1 [1] / 2024年1月22日; 21ヶ月前 (22 January 2024)
リポジトリ
  • github.com/madler/zlib
書かれたC
オペレーティング·システムクロスプラットフォーム
タイプデータ圧縮
ライセンスzlibライセンス
Webサイトzlib.net

zlib/ ˈ z l ɪ b /または「zeta -lib」、/ ˈ z t ə ˌ l ɪ b / [ 2] [3]は、データ圧縮およびデータフォーマットに使用されるソフトウェアライブラリです。 [4] zlibはJean-loup GaillyMark Adlerによって書かれgzipファイル圧縮プログラムで使用されるDEFLATE圧縮アルゴリズムを実装しています。 zlibは、 LinuxmacOSiOSなど、多くのソフトウェアプラットフォームの重要なコンポーネントでもあります。 また、 PlayStation 4PlayStation 3Wii UWiiXbox OneXbox 360などのゲームコンソールでも使用されています

Zlibの最初の公開バージョンである0.9は1995年5月1日にリリースされ、当初はlibpng画像ライブラリでの使用を目的としていました。これはフリーソフトウェアであり、zlibライセンスに基づいて配布されています。

機能

カプセル化

生のDEFLATE圧縮データ(RFC 1951)[5]は、通常、ヘッダーとフッターを追加することでデータをカプセル化するzlibまたはgzipラッパーを使用して記述されます。これにより、生のDEFLATEデータでは提供されないストリーム識別とエラー検出が可能になります。

zlibラッパー(RFC 1950)[4]はgzipラッパー(RFC 1952)[6]よりも小さく、後者はファイル名やその他のファイルシステム情報を格納するためです。

アルゴリズム

2018年9月現在、zlibはDEFLATE[update]と呼ばれるアルゴリズムのみをサポートしています。これは、 LZ77(Lempel–Ziv 1977)のバリエーションとハフマン符号化を組み合わせたものです。[7]このアルゴリズムは、システムリソースの使用を最小限に抑えながら、幅広いデータに対して優れた圧縮率を提供します。これは、 Zipアーカイブ形式にも使用されているアルゴリズムです。ヘッダーは他のアルゴリズムもサポートしていますが、現在実装されているものはありません。

資源利用

zlibは、プロセッサとメモリの使用を制御する機能を提供します。圧縮レベルを指定することで、速度と圧縮率をトレードオフできます。また、一部の組み込みシステムなど、メモリが制限された環境で役立つ、メモリを節約する機能も備えています。

戦略

圧縮は特定のデータタイプに合わせて最適化できます。ライブラリを使用して特定のデータタイプを常に圧縮する場合は、特定の戦略を使用することで圧縮率とパフォーマンスが向上する可能性があります。例えば、データに長いバイト列の繰り返しが含まれている場合、ランレングス符号化(RLE)戦略を使用すると、より高速で良好な結果が得られる可能性があります。一般的なデータの場合は、デフォルトの戦略が推奨されます。

エラー処理

圧縮データ内のエラーが検出され、スキップされる場合があります。さらに、圧縮ストリームに「フルフラッシュ」ポイントが書き込まれると、破損したデータはスキップされ、次のフラッシュポイントで解凍処理が再同期されます。ただし、破損データのエラー回復は提供されません。フルフラッシュポイントは、信頼性の低いチャネルで大量のデータストリームを送信し、多少のデータ損失が問題にならない場合(一部のマルチメディアアプリケーションなど)に有効です。ただし、フラッシュポイントを多数作成すると、圧縮速度だけでなく、圧縮率(圧縮率)にも影響が出る可能性があります。

データ長

圧縮または解凍できるデータの長さに制限はありません。ライブラリを繰り返し呼び出すことで、無制限の数のデータブロックを処理できます。一部の補助コード(カウンターなど)は、長いデータストリームを処理する際にオーバーフローが発生する可能性がありますが、実際の圧縮または解凍には影響しません。

長い (または無限の) データ ストリームを圧縮する場合は、定期的にフルフラッシュ ポイントを書き込むことをお勧めします。

アプリケーション

今日では、zlibは事実上の 標準となっており、標準文書ではzlibとDEFLATEが同じ意味で使われることが多く、何千ものアプリケーションが直接的または間接的に圧縮にzlibを利用しています。[8]これらには以下が含まれます。

zlib は、コードが移植可能で、ライセンスが柔軟であり、メモリ フットプリントが比較的小さいため、Apple iPhoneや Sony PlayStation 3などの多くの組み込みデバイスでも使用されています。

フォーク

zlib は、古いコードベース上に構築されたよく使用されるライブラリであり、このライブラリの改善を主張するサードパーティによって 頻繁にフォークされています。

参照

参考文献

  1. ^ Adler, Mark (2024年1月22日). 「[Zlib-announce] zlib 1.3.1 リリース」 . 2024年1月23日閲覧
  2. ^ Stutz, Michael (2004年10月22日). 『Linuxクックブック 第2版:日常的な使用のためのヒントとテクニック』No Starch Press. ISBN 9781593270315. 2023年1月25日時点のオリジナルよりアーカイブ2021年10月28日閲覧– Google Books経由。
  3. ^ Loki Software; Hall, John R. (2001年10月22日). 『Linuxゲームのプログラミング』No Starch Press. ISBN 9781886411494. 2024年7月11日時点のオリジナルよりアーカイブ2021年10月28日閲覧– Google Books経由。
  4. ^ ab RFC 1950. doi : 10.17487/RFC1950 .
  5. ^ RFC 1951. doi : 10.17487/RFC1951 .
  6. ^ RFC 1952. doi : 10.17487/RFC1952 .
  7. ^ RFC 1951. doi : 10.17487/RFC1951 .
  8. ^ Gailly, Jean-loup; Adler, Mark (2002-04-18), zlib Applications, 2019-06-10にオリジナルからアーカイブ2007-12-09に取得
  9. ^ 「c++ - cURL が zlib を使用するのはなぜですか?」。Stack Overflow
  10. ^ “ORCFile in HDP 2: Better Compression, Better Performance”. 2013年9月6日. 2020年8月6日時点のオリジナルよりアーカイブ。 2020年5月16日閲覧
  11. ^ System.IO.Compression.DeflateStream Archived 2016-02-06 at the Wayback Machine . MSDN ライブラリ。
  12. ^ zlib-flate(1)  –  Debian一般コマンドマニュアル
  13. ^ “qpdf”. 2024年7月11日時点のオリジナルよりアーカイブ2021年3月28日閲覧。
  14. ^ 「MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.9.1.5 InnoDBテーブルの圧縮の仕組み」dev.mysql.com . 2021年8月1日時点のオリジナルよりアーカイブ。 2021年7月14日閲覧
  15. ^ “github Intel ZLIB”. github . 2024年1月25日. 2024年1月25日時点のオリジナルよりアーカイブ。 2024年1月25日閲覧
  16. ^ 「がんとの闘い:コードをオープンソース化することの予期せぬメリット」Cloudflareブログ、2015年7月8日。2019年9月21日時点のオリジナルよりアーカイブ。 2020年1月18日閲覧
  17. ^ Rosbach, HK (2023年2月24日). 「zlib-ng/zlib-ng: zlibの代替と「次世代」システム向け最適化」. GitHub . zlib-ng. 2020年4月20日時点のオリジナルよりアーカイブ。 2020年1月18日閲覧
  • 公式サイト
Retrieved from "https://en.wikipedia.org/w/index.php?title=Zlib&oldid=1320609384"