Graphics Interchange Format(GIFと略されることが多い)は、ウェブで広く使われている静止画・アニメーション用のファイル形式です。ファイル拡張子は .gif、MIMEタイプは image/gif です。
定義と基本特性
GIFはラスターグラフィックス形式で、画素(ピクセル)ごとに色インデックスを参照する「インデックスカラー」を使います。1ピクセルあたり最大8ビット(256色)までのパレットをサポートし、各パレットエントリは24ビットRGBで色を定義します。このため、写真など色数が多い画像をそのまま保存すると色の階調が失われやすく、一般にはイラスト・ロゴ・アイコンや図表、簡単なアニメーションに向いています。
歴史
GIFは1987年にCompuServeによって導入され、初期版は「GIF87a」と呼ばれました。後に透明色やアニメーションなどの拡張を含む「GIF89a」が策定され、現在一般に用いられている仕様の基礎となっています。
圧縮方式と特許問題
GIFは画像データの圧縮にLempel–Ziv–Welch(LZW)圧縮を使います。LZWは可逆(ロスレス)圧縮で、圧縮・解凍の過程で画像情報が失われません。LZWに関する特許は当初CompuServeではなくUnisys社が保有していたため、商用利用を巡って問題が発生しました。これを受けて、特許の制約を避ける形で透明性やアルファチャネルなどの機能を持つ新しいフォーマットとしてPNGが開発されました。なお、LZW特許はその後期限切れとなり(2000年代初頭にかけて解消)、現在では特許問題はほぼ解決しています。圧縮や可逆性についての理解はGIFを選ぶ際に重要です。
アニメーションの仕組み
GIFは複数フレームを順に並べることでアニメーションを表現できます。アニメーションに関する主な技術要素は次の通りです。
- フレームごとのカラーパレット:各フレームはグローバル(全体)あるいはローカル(各フレーム)なカラーテーブルを持てますが、フレーム単位で最大256色の制限があります。
- フレーム遅延:各フレームの表示時間はGraphic Control Extensionで指定され、単位は100分の1秒です。
- ループ回数:アニメーションの繰り返し回数は、NETSCAPE2.0アプリケーション拡張(通称 Netscape ループ拡張)で指定できます。無限ループにすることも可能です。
- 透過(Transparency):GIF89aでは単一色の透過がサポートされますが、部分的な透過(アルファチャネルによる半透明)は扱えません。
- 破棄方法(Disposal):各フレームの描画後に前フレームをどう扱うか(上書き/元に戻す等)を指定することで、複雑なアニメーション表現が可能です。
- インタレース:読み込み途中に低解像度で画像を表示するインタレース方式(4パス)を用いることができます。
利点と欠点
利点
- 可逆圧縮で色数を抑えたグラフィックを小さく保存できる。
- アニメーションを簡単に作成・配布でき、ウェブでの互換性が高い。
- 単色の透過がサポートされているため、背景透過のロゴなどに便利。
欠点
- 256色のパレット制限により、写真などの階調表現に不向き。ディザリングやパレット量子化で見た目を補正することはできるが、元画像と同等にはならない。
- 透過は1ビット(完全透明か不透明か)であり、半透明が使えない。
- アニメーションはフレーム単位の制御は可能でも、動画圧縮に比べるとファイルサイズ効率は劣ることがある。
利用例と代替フォーマット
GIFは短いループアニメーション(ウェブ上のクリップやミーム)、アイコン、図表、ロゴなどで今でも広く使われます。ただし、より高品質・高効率な代替が登場しており、用途に応じて使い分けられます。
- 静止画で透過や階調が必要な場合はPNGが一般的。
- アニメーションで画質と圧縮効率を重視する場合はAPNG、WebPアニメーション、AVIF、あるいは短い動画(MP4/WebM)を使うことが多い。
実務上のポイント
- 写真をGIFで保存することは避け、必要ならパレット数を増やせる他形式を検討する。
- アニメーションGIFを最適化するには、使用色の削減、差分フレームの活用、不要フレームの削除、適切なフレーム遅延の設定が有効。
- ウェブで互換性を重視する場合、古くからのブラウザ対応が強みのGIFが有利なこともある。
まとめると、GIFは歴史が古くウェブ文化に深く根付いた形式であり、簡単なアニメーションやパレット色数が少ないグラフィックに向いていますが、写真や高品質アニメーションにはより新しいフォーマットが適しています。