GZIP 圧縮とは何ですか?
GZIP は RFC 1952 によって定義された可逆圧縮ファイル形式です。DEFLATE アルゴリズム(RFC 1951)が生成したペイロードをラップし、LZ77 の後方参照と Huffman 符号化を組み合わせて、繰り返しの多いデータをコンパクトなバイト列に縮めます。
GZIP 圧縮はどのように機能しますか?
入力はブラウザーの組み込み CompressionStream('gzip') API を使って、すべてブラウザー内で処理されます。主な手順は次のとおりです:
- ツールはテキストやファイルをバイトストリームに変換します(テキスト入力では UTF-8)。
- それらのバイトは、
gzip形式に設定されたCompressionStreamを通して処理されます。 - ブラウザーは DEFLATE を適用します:スライディングウィンドウ LZ77 が繰り返しの並びを見つけ、Huffman 符号化が頻出シンボルに短い符号を割り当てます。
- DEFLATE ペイロードの周囲に 10 バイトの gzip ヘッダーと 8 バイトのフッター(元データの CRC32 と元の長さの 2^32 剰余)が巻きつけられ、標準的な .gz コンテナーになります。
- テキスト入力の結果は Base64 または 16 進数として表示され、バイナリ入力ではダウンロード可能な .gz ファイルとして提供されます。
GZIP で圧縮する理由は何ですか?
- ペイロードを小さく:テキスト、JSON、HTML、CSS、ソースコードは通常、元のサイズのほんの一部にまで縮みます。
- 業界標準:GZIP は事実上あらゆる HTTP サーバー、CDN、ブラウザー、アーカイブツール、プログラミング言語の標準ライブラリで理解されます。
- プライバシー:圧縮は完全にブラウザー内で行われます。入力はサーバーに送信されません。
- 往復対応:出力は
gunzipCLI、HTTP のContent-Encoding: gzip、および Python、Node.js、Go、Java、Rust の RFC 1952 リーダーで解凍できます。
GZIP 圧縮の一般的な用途は何ですか?
GZIP はウェブやコマンドラインのツールで幅広く使われています:
- HTTP 転送:Web サーバーは応答を GZIP で圧縮し、ページがネットワーク経由で高速に読み込まれます。
- ログのアーカイブ:長期保存するサーバーログを .gz ファイルとして保存し、ディスク使用量を削減します。
- バックアップとバンドル:tarball(.tar.gz)はディレクトリツリー全体を圧縮し、配布しやすくします。
GZIP 圧縮の例はどのようなものですか?
繰り返しのフィールド名が多い 1 KB の JSON ドキュメントは、通常およそ 200〜300 バイトに圧縮されます — 4〜5 倍のサイズ削減です。大きなテキストログは 90% 以上圧縮されることもあります。すでに圧縮されている入力(JPEG、PNG、MP4、ZIP)はそれ以上は縮まらず、GZIP の枠組みのために数バイト増えることもあります。
この GZIP 圧縮ツールは、ブラウザー内で標準の RFC 1952 出力を直接生成します。送信前にペイロードを縮める場合でも、保管用に .gz ファイルを作る場合でも、結果はネットワーク上のあらゆる GZIP 対応ツールと相互運用できます。