zlib

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
zlib
zlib logo
初版 1995年
最新版 1.2.8 / 2013年4月28日 [1]
プログラミング言語 C言語
対応OS クロスプラットフォーム
サポート状況 開発中
種別 圧縮ライブラリ
ライセンス zlib License
公式サイト http://zlib.net/
テンプレートを表示

zlibは、データの圧縮および伸張を行うためのフリーのライブラリである。可逆圧縮アルゴリズムのDeflate (RFC 1951)を実装している。ヘッダーやフッターなどのデータ形式はRFC 1950 (ZLIB Compressed Data Format Specification)として仕様化されている。

概要[編集]

zlibの作者は、ジャン=ルー・ガイイ(Jean-Loup Gailly)とマーク・アドラー(Mark Adler)である。彼らはgzipの主要開発者でもある。ジャンが圧縮、マークが伸張に関する部分を担当した。ライセンスはgzipとは違いGPLではなく、BSDライセンスに近いより制限の緩やかなものが採用されている(zlib License)。

zlibはC言語で記述されている。ほとんどのプログラミング言語ではzlibを使えるようにライブラリで提供していて、例えば、Java Runtime Environmentにも組み込まれており、Javaプラットフォームからも利用できる。

zlibは、商用ソフトを含む多くのソフトウェアで採用されている[2]。画像フォーマットのPNGがDeflateの実装を必要とするため、データ圧縮系だけでなく、画像を表示するほとんどのソフトウェアでも使われている。ほとんどのOSで共有ライブラリとして含まれている。パソコン・サーバー・携帯電話など、非常に多くのOSで使われているライブラリのため、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バイトのフッターが付く。

脚注[編集]

  1. ^ zlib Home Site” (2013年4月28日). 2013年5月26日閲覧。
  2. ^ http://zlib.net/apps.gz.html

関連項目[編集]

外部リンク[編集]