Zlib

zlibは、データの圧縮と伸張を行うための、広く利用されている自由ソフトウェアライブラリです。可逆圧縮アルゴリズムであるDeflate(RFC 1951)を実装しており、効率的なデータ処理を可能にします。このライブラリは、ヘッダーやフッターを含む特定のデータ形式(RFC 1950)をサポートするだけでなく、GZIP形式(RFC 1952)や、ヘッダーやフッターを持たないRAW形式も扱うことができます。

zlibの概要



zlibは、ジャン=ルー・ガイイマーク・アドラーによって開発されました。彼らはgzipの主要開発者でもあり、ジャンが主に圧縮部分、マークが伸張部分を担当しました。ライセンスは、gzipとは異なり、より緩やかなzlib License(BSDライセンスに近い)が採用されています。C言語で記述されており、多くのプログラミング言語で利用できるように、ラッパーライブラリなどの形で提供されています。例えば、Java SEのJREには、標準Javaクラスライブラリのjava.util.zipパッケージとして組み込まれており、Javaプラットフォーム上でも容易に利用できます。また、.NET Frameworkや.NET Coreでは、System.IO.Compression名前空間を通じて各種クラスが提供されています。

zlibは、商用・非商用を問わず多くのソフトウェアで採用されており、特に画像フォーマットPNGがDeflateの実装を必要とするため、画像表示ソフトウェアにも広く使われています。また、ほとんどのオペレーティングシステムに共有ライブラリとして含まれており、パソコン、サーバー、携帯電話など、非常に多くの環境で使用されています。そのため、zlibに問題が発見されると、広範囲なシステムに影響が及ぶ可能性があります。過去には、2002年と2005年にセキュリティ問題が発見され修正されましたが、その後も脆弱性が発見されるたびにパッチが提供されており、システムの健全性を保つためには、定期的なライブラリの更新が必要です。

ヘッダーとフッター



zlibのデータ形式(RFC 1950)では、圧縮データの前に2バイト以上のヘッダー、末尾に4バイトのAdler-32チェックサムが付加されます。ヘッダーの最初の2バイトは以下の情報を含んでいます。

1バイト目:
上位4ビット:LZ77のウィンドウサイズを示す圧縮情報。例えば、7の場合は32KBのウィンドウサイズを表します。
下位4ビット:圧縮方式を示す数値。通常は8が用いられます。
2バイト目:
上位2ビット:圧縮レベルを示します。デフォルト値は2です。
6ビット目:プリセット辞書の有無を示します。
下位5ビット:ヘッダー2バイト分のチェックビット。

プリセット辞書を使用する場合は、3バイト目以降に辞書情報が続き、使用しない場合は、圧縮データが続きます。一方、gzip形式(RFC 1952)では、10バイト以上のヘッダーと8バイトのフッターが付加されます。

Media Type



2012年8月に発行されたRFC 6713では、application/zlibが定義され、application/gzipとともにIANAに正式登録されました。これにより、zlibで圧縮されたデータがインターネット上で適切に識別されるようになりました。

関連情報



関連項目
gzip
ZIP (ファイルフォーマット)
外部リンク
公式サイト(英語)

zlibは、その高い圧縮率と幅広い互換性から、多くのソフトウェアやシステムで不可欠な役割を果たしています。このライブラリの理解は、データ圧縮技術を理解する上で非常に重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。