Gzip じーじっぷ
簡単に言うとこんな感じ!
Gzipはファイルを「ギュッと圧縮」する技術だよ!Webサイトを表示するとき、サーバーがHTMLやCSSを小さく圧縮してから送り、ブラウザ側で元に戻すことで、通信量を減らしてページを速く表示できるんだ。引越しのときに布団を圧縮袋で小さくするイメージ!
Gzipとは
Gzip(GNU zip) は、データを可逆圧縮するためのファイルフォーマットおよびソフトウェアです。「可逆圧縮」とは、圧縮したデータを元どおりに復元できる圧縮方式のことで、画像の非可逆圧縮(JPEGなど)とは異なり、テキストデータを一切劣化させずに小さくできます。
WebにおけるGzipの主な用途は、HTTPレスポンスの圧縮転送です。Webサーバー(NginxやApacheなど)がHTMLやCSS、JavaScriptファイルをGzip圧縮してブラウザに送信し、ブラウザ側が自動的に解凍して表示します。この仕組みにより、テキスト系ファイルは一般的に 60〜80% のサイズ削減が可能で、ページの読み込み速度を大幅に改善できます。
ビジネス的な観点では、Gzipはほぼすべてのモダンブラウザとサーバーが対応しているため、特別なツール不要で今すぐ使える「コストゼロの高速化手段」として重宝されています。CDN(コンテンツデリバリーネットワーク)でも標準的に有効化されており、設定一つでサイト全体の転送量削減と表示速度向上を実現できます。
Gzipの仕組みと構造
Gzipは内部的に DEFLATEアルゴリズム を使って圧縮します。DEFLATEは「LZ77」と「ハフマン符号」という2つの手法を組み合わせたもので、繰り返し出現するパターンを短い記号に置き換えることで圧縮を実現しています。
| 要素 | 内容 |
|---|---|
| 圧縮アルゴリズム | DEFLATE(LZ77 + ハフマン符号) |
| ファイル拡張子 | .gz |
| MIMEタイプ | application/gzip |
| HTTPヘッダー | Content-Encoding: gzip |
| 圧縮レベル | 1(最速・低圧縮率)〜 9(最遅・高圧縮率) |
| 得意なデータ | テキスト(HTML / CSS / JS / JSON / XML) |
| 不得意なデータ | 画像・動画・ZIP(すでに圧縮済み) |
HTTP通信での流れ
[ブラウザ] ─── リクエスト ────────────────────────────→ [サーバー]
Accept-Encoding: gzip, deflate, br
[ブラウザ] ←── レスポンス(圧縮済みデータ) ──────────── [サーバー]
Content-Encoding: gzip
(ブラウザが自動解凍して表示)
ブラウザは Accept-Encoding: gzip ヘッダーで「Gzipに対応しています」と申告し、サーバーが圧縮して返します。ブラウザは受け取ったデータを自動で解凍するため、ユーザーは圧縮の存在を意識しません。
覚え方
「Googling Zips Instantly Pages(ジー・ジップ)」
→ Gで始まるZipがページを即座に速くする、と覚えよう!
歴史と背景
- 1992年 — Jean-loup GaillyとMark Adlerが、Unix系OSの
compressコマンド(LZW特許問題あり)の代替としてGzipを開発・公開 - 1993年 — GNU projectの一部として正式リリース。Linux/Unixの標準圧縮ツールとして普及
- 1996年 — RFC 1952 でGzipファイルフォーマットが標準化。RFC 2616(HTTP/1.1)で
Content-Encoding: gzipがHTTPの公式な圧縮転送方式として定義される - 2000年代 — Apache HTTP Serverの
mod_deflate、IISの動的圧縮機能が普及し、Webサーバー側でのGzip圧縮が一般化 - 2010年代 — CDNサービス(Cloudflare、AWS CloudFront等)がGzip圧縮をエッジで自動適用する機能を標準搭載
- 2015年 — Googleが開発した Brotli が登場し、Gzipよりさらに高い圧縮率を実現。HTTPSサイト向けの次世代圧縮として注目される
- 現在 — Gzipは枯れた技術として全ブラウザ・全サーバーで安定サポート。新規構築ではBrotliも併用するのがベストプラクティス
Gzip・Deflate・Brotliの比較
Web転送で使われる主な圧縮方式を比較します。
実務での使い分け
| シーン | 推奨設定 |
|---|---|
| 既存サーバーで手軽に高速化したい | Gzipのみ有効化 |
| 新規構築・CDN利用でさらに最適化 | Brotliを優先、非対応ブラウザにGzipをフォールバック |
| 画像(JPEG/PNG/WebP)や動画ファイル | 圧縮不要(効果なし・むしろ遅くなる場合も) |
| すでに圧縮済みのZIP・PDF | 圧縮不要 |
Nginxでの設定例
# nginx.conf でのGzip有効化(参考)
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024; # 1KB未満は圧縮しない
gzip_comp_level 6; # 圧縮レベル(1〜9、6がバランス良好)
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 1952 | GZIPファイルフォーマット仕様 |
| RFC 1951 | DEFLATEアルゴリズムの仕様 |
| RFC 9110 | HTTP Semantics(Content-Encodingヘッダーの定義を含む) |
| RFC 7932 | Brotli圧縮アルゴリズムの仕様 |
関連用語
- CDN — コンテンツをエッジサーバーから配信し、Gzip圧縮と組み合わせることでさらなる高速化を実現する仕組み
- Brotli — GoogleがGzipの後継として開発した次世代圧縮アルゴリズム
- HTTPヘッダー —
Content-EncodingやAccept-EncodingなどGzip圧縮の交渉に使われるHTTPの付加情報 - HTTP/2 — Gzip圧縮と組み合わせて使われる高速化されたHTTPプロトコルのバージョン
- TLS/SSL — BrotliはHTTPS(TLS)環境が前提となるため、Gzipと合わせて理解したい暗号化通信技術
- レイテンシ — Gzip圧縮でデータ量を削減することで改善できる通信の遅延指標
- WebパフォーマンスOptimization — Gzip圧縮が含まれるWebサイト高速化施策の総称
- キャッシュ — CDNやブラウザがGzip圧縮済みのレスポンスを保存・再利用する仕組み