gzip

データ圧縮プログラムのひとつ、およびその圧縮データのフォーマット

gzip(ジー・ジップ)は、データ圧縮プログラムのひとつ、およびその圧縮データのフォーマットである。「GNU zip」の略であり[1] GNUプロジェクトによって開発・メンテナンスされている。現在、多くのUNIXに標準搭載される。

gzip
拡張子.gz
MIMEタイプapplication/gzip
タイプコードGzip
UTIorg.gnu.gnu-zip-archive
マジック
ナンバー
\x1f\x8b
開発者Jean‐Loup GaillyMark Adler
種別データ圧縮
ウェブサイトwww.gzip.org
GNU Gzip
開発元 GNUプロジェクト
最新版
1.12 / 2022年4月7日 (2年前) (2022-04-07)
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
対応OS クロスプラットフォーム
種別 データ圧縮
ライセンス GPL
公式サイト www.gnu.org/software/gzip/
テンプレートを表示

それ以前に普及していたcompressの圧縮アルゴリズムはLZWだが、LZWは特許を侵害していたのでGNUプロジェクトが代替としてgzipを開発した[2][注 1]

フォーマットはRFC 1952 「GZIP File Format Specification」として文書化されている。

Windows及びMS-DOS文化圏で一般的なZIPと互換性はないが、圧縮方法は両者ともDeflate法である[3]

概要

編集

gzipは、Lempel-Zivアルゴリズム (LZ77) とハフマン符号を用いており、従来のcompressよりも圧縮率が高いことが特徴である[4]。ただし非常に冗長なファイルでは、compressの方が圧縮率が高いこともある。開発者向けにライブラリとしてzlibが作成され、これにより広く使われる形式となった。gzipによって圧縮されたファイルの拡張子は慣習的に.gzを用いる(極初期のgzipは.zを用いたが、packとの混同を避けるため変更された。1993年頃に作成された.zはgzipファイルの可能性が高い。なお、gzip自体はpack形式の伸長が可能である)。

また、gzipコマンドは標準入力から受け取ったデータを圧縮し、標準出力から取り出すことができる(gunzipは逆の動作)[4]ため、ファイル圧縮に限らず、多様な目的に使用できる。

gzipはzip等と異なりファイルアーカイバとしての機能は持たず、複数ファイルを扱いたい場合はtarファイルをgzip圧縮するという使い方が一般的である[4]。GNU tarにはアーカイブをgzipにフィルタする-zオプションが付いている。これによりアーカイブと圧縮を同時に、あるいは抽出と伸張を同時に行うことができる[5]。gzip圧縮したtarアーカイブは拡張子.tar.gzまたは.tgzを付ける習慣がある。

HTTP 1.1にはデータを圧縮し転送量を減らす機能があるが、gzipはその際の圧縮フォーマットの一つとしても使われている[6]。また、gzipはその仕様がRFC 1952で記述されている。

初期のうちに登場した1.2.4が安定したバージョンとして長期にわたって利用されたが、4GB超のファイルへの対応が無かったため、種々のバージョンアップが行われた。

今日では、圧縮・伸張の速度より圧縮率の高さを重視する場合には、bzip2xzを使用することがある[7]

互換性

編集

gzipは、zipcompresscompress -Hpackで圧縮されたファイルを伸張することができる。zipファイルについては、Deflate法で圧縮されファイルが1つしか含まれていない場合にだけ伸張できる[4]。gzipがインストールされているシステムでは、gunzipzcatuncompressコマンドが、gzipコマンドへのハードリンクとして存在していることがある。Linux Standard Baseでも指定コマンドになっている[8]

主なオプション[4]

編集
-r
サブディレクトリにわたって圧縮する
-v
詳細情報を表示する
-数字
圧縮率の調整 (例:-9 圧縮率を最大にする -1 圧縮速度を最大にする。既定は6)
-f
上書きを強制する

拡張子

編集

.gz[1][9][10]

tarと組み合わせる場合には.tar.gzもしくは.tgzとする[9]

Media Type

編集

2012年8月に発行されたRFC 6713application/gzipが定義されて、IANAにも正式に登録された。以前はapplication/x-gzipapplication/x-gzip-compressedなどが用いられていた。[10]

tarによるアーカイブがなされている場合は、非公式のapplication/x-tar-gzも用いられる。[要出典]

HTTP圧縮

編集

gzipは、HTTP通信を高速化するために使用されるもっとも一般的な圧縮アルゴリズムであり、現在ではほとんどのサーバーソフトウェアとブラウザーがgzip圧縮に対応している[11][12]。2024年3月現在、すべてのウェブサイトのうち約50%がgzip圧縮を使用している[13]

脚注

編集

注釈

編集
  1. ^ 当時のGNU bullitinではyabbaが紹介されていたがそれを差し置いてリリースされたのがgzipである。

出典

編集
  1. ^ a b Jean-loup Gailly; Mark Adler (2003年7月27日). “The gzip home page” (英語). 2014年11月7日閲覧。
  2. ^ Gzip - GNU Project - Free Software Foundation”. GNUプロジェクト. 2024年5月4日閲覧。
  3. ^ gzipとは - 意味をわかりやすく - IT用語辞典 e-Words”. IT用語辞典 e-Words. 2024年5月4日閲覧。
  4. ^ a b c d e GNU Gzip”. GNUプロジェクト. 2024年5月4日閲覧。
  5. ^ GNU tar 1.35”. GNUプロジェクト. 2024年5月4日閲覧。
  6. ^ RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1”. RFC Editor. 2024年5月4日閲覧。
  7. ^ Linux File Compression: gzip, bzip2, and xz Unveiled | Linux Journal”. Linux Journal. 2024年5月4日閲覧。
  8. ^ Linux Standard Base https://refspecs.linuxfoundation.org/lsb.shtml
  9. ^ a b Free Software Foundation, Inc.; Jean-loup Gailly (2013年6月11日). “Overview - GNU Gzip” (英語). gzip - gzip: the data compression program. Free Software Foundation. 2014年11月7日閲覧。
  10. ^ a b Levine, John (2012年8月). “RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types” (英語). Internet Engineering Task Force. 2014年11月6日閲覧。
  11. ^ HTTP の圧縮 - HTTP | MDN”. Mozilla Foundation. 2024年5月3日閲覧。
  12. ^ gzip compression (gzip 圧縮) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN”. Mozilla Foundation. 2024年5月3日閲覧。
  13. ^ Usage Statistics of Gzip Compression for Websites, May 2024”. Q-Success. 2024年5月3日閲覧。

外部リンク

編集