GIF

GIFファイルとは

256 色までという制約はあるものの、どこでも動く唯一の画像形式です。動画代わりに使うとファイルは何倍にも膨らみます。

GIF とは何か

GIF はバイナリ形式です。これを知っているプログラムにしか意味を持ちません。 ピクセルの格子を保存するので、自分の解像度を超えて拡大するとぼやけます。 ウェブのために使われます。

拡張子は .gif、正式名称は Graphics Interchange Format です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。

GIF はどこから来たのか

CompuServe が 1987 年に公開しました。 仕様は GIF89a です。

これだけ長く読まれ続けてきた形式なら、10 年後に取り出したいものを預けても大丈夫です。

仕様は公開されています

仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。

古い形式です

今もどこでも開けますし、古いプログラムは今もこれを書き出します。ただ、この形式のまわりで新しいものは何も作られていません。残しておきたいものは移してください。そして今日始める仕事には、これを選ばないでください。

捨てられるものはありません

GIF ファイルは中身をそのまま保存します。保存し直しても何も変わらないので、開いて、直して、また保存する——それを何度繰り返しても劣化は積み上がりません。これが、渡すための形式ではなく作業のための形式である理由です。

透明を持てます

GIF ファイルはアルファチャンネルを一緒に持てるので、ロゴの縁は後ろに何があってもなめらかなまま残ります。白い箱に閉じ込められた状態で届くことはありません。

複数のフレームを持てます

GIF ファイルは静止した 1 枚ではなく、アニメーションまるごとを保存できます。変換の前に知っておくべきことです。1 フレームしか持てない変換先は、最初の 1 枚を取って残りを落とします。しかもたいていは、何も言わずにです。

どんな色を表せるか

1 チャンネルあたり最大 8 ビット。 インデックスカラーで扱えます。

1 チャンネルあたり 8 ビットは、画面が表示するぶんであり、渡すための形式がほぼ例外なく備えているぶんです。

GIF には 256 色という上限があります

パレットこそが、ほかのすべてが導かれる制約です。写真は先に色が選ばれ、それから近い色に置き換えられます。階調が縞や粒になって出るのはそのためであり、平らな色でできた図がこの形式を無傷で通り抜けるのもそのためです。

サイズには上限があり、知っておく価値があります

GIF ファイルは、どちらかの辺が 65,535 ピクセルを超える画像を記述できません。普通の写真よりはるかに上ですが、つなぎ合わせたパノラマや高解像度のスキャンなら届く範囲です。ぶつかるのはまさにそこです。

GIF を開けるのは何か

GIMP、Adobe Photoshop、ImageMagickが読めますし、同じ種類のプログラムならたいてい読めます。

ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。

ブラウザーで開く

これは今のブラウザーならどれでも読めます。

ですからページに置くのも、メッセージに添えて送るのも、安心してできます。相手が何をインストールしているかを考える必要がありません。

渡すための形式です

GIF は渡すために作られたもので、中で作業するためのものではありません。編集は可能ですが、快適だったためしはありません。賢い道は、元のファイルへ戻ってもう一度書き出すほうを通ります。

この形式でよく起きること

繰り返し挙がる不満はこれです。なだらかな階調が、目に見える段になって出ることがある。

どれも、この形式を避ける理由にはなりません。どれかに不意を突かれる前に知っておくべきことがら、というだけです。これは別の主張であり、そして役に立つほうの主張です。

256色、そこからすべてが導かれます

GIF は最大 256 色のパレットを保存し、あとはそのインデックスで参照します。すべてのピクセルは、表の項目を指す番号です。これは 1987 年には理にかなった設計でした。当時のディスプレイが表示できたのは 256 色で、パレットこそが画像の仕組みそのものだったからです。

GIF についての不満はすべてここに遡ります。写真は 256 色よりはるかに多くの色を含むので、それを GIF に変換するとほとんどすべての色を捨てることになります。空がはっきりした段になって見える理由も、肌の色がまだらになる理由もこれです。この形式が下手に振る舞っているわけではありません。設計されたとおりのことを、設計されていなかった内容に対して行っているだけです。

ディザリングは段差を粒状の粗さと交換します

表現できないグラデーションに直面すると、エンコーダーはディザリングを使えます。使える二色をまばらに散らし、目に混ぜて見せるのです。これは本当に効き、パレットの制約からすると信じられないほど写真の GIF がきれいに見える理由です。

代償は近くで見たときの細かい粒状感として現れ、コストもかかります。ディザリングは GIF の圧縮が頼りにしている「同じピクセルの連続」を壊すので、ディザリングされた GIF はディザリングされていないものよりずっと大きくなりがちです。なめらかなグラデーションと引き換えに大きなファイル、それが GIF を作るときにいじれるほぼ唯一のつまみです。

アニメーションこそがこの形式を生き延びさせました

GIF は動画ではないのにアニメーションでき、しかも APNG やアニメーション WebP が届かない多くの場所に届きます。チャットクライアント、メール、掲示板ソフト、プレゼンテーションツール、そして二つ目のアニメーション形式を一度も覚えなかった大量のソフトウェア。この到達範囲が四十年間この形式を支えてきました。プレーヤーもコーデックの折衝も自動再生の許可も要りません。それは画像であり、画像を表示できるものならすべてがそれを動かして表示します。

これは技術的な事実というより社会的な事実です。チャットアプリや掲示板、課題管理ツール、メッセージプラットフォームはアニメーション GIF を受け入れ、あらゆる点で優れているはずのアニメーション WebP や APNG をしばしば拒みます。この形式が残っているのは何ができるかではなく、どこで受け入れられているかのためです。

五秒の動画がとてつもなく大きなファイルになります

各フレームは画像として保存され、自分自身と限られた範囲で隣接フレームに対してしか圧縮されません。動画コーデックはフレーム間で何が変わったかを記述しますが、GIF はおおむねそれをしません。だから、実寸に近い大きさの人物が動く五秒の動画は数メガバイトになり、同じクリップを MP4 にすればわずか数百キロバイトです。

実用上のつまみは解像度とフレームレート、長さで、この順で効きます。幅をおよそ 480 ピクセルに、フレームレートを毎秒 10〜12 フレームに落とせば、たいていのクリップは送れる大きさに収まります。行き先が動画そのものを受け付けるなら、いまもそちらのほうがはるかに良い答えです。

透明度は一ビットで、中間はありません

GIF はパレットの一項目を透明としてマークでき、それがすべての仕組みです。ピクセルは完全に不透明か完全に見えないかのどちらかで、中間の値はありません。

目に見える結果は、曲線のあるものすべてに現れるギザギザの縁と、別の背景の上に切り抜いた被写体の周りに残る、もとの背景色のハローです。PNG は 1996 年にきちんとしたアルファチャンネルでこれを解決しており、ロゴやアイコンに GIF ではなく PNG を使う何より強い理由になっています。

PNG を生んだ特許紛争

GIF の圧縮は LZW を使い、これにはユニシスが特許を持っていました。1994 年、同社はその特許を行使し始め、GIF を書き出すソフトウェアの開発者からライセンス料を取ると発表しました。誰もが自由に使っていた形式が、突然ライセンスを必要とするようになったのです。

対応として PNG が、まさにその制約を受けないことを目的として、その後の数ヶ月をかけてオープンに設計されました。しかもほとんどあらゆる点で優れて登場しました。特許は 2003 年から 2006 年にかけて失効し ── 米国のものが最初で、欧州・日本・カナダのものが 2004 年、IBM のものが最後 ── その紛争は過去のものになりました。そのころにはすでに GIF は静止画についての議論に完全に敗れており、残っていたのはアニメーションだけでした。

ループ、タイミング、止まって見えるフレーム

各フレームは自分自身のディレイを持てるので、GIF は一枚の画像だけを長く止め、ほかは駆け抜けるように見せられます。ループ回数は拡張ブロックの中にあり、ゼロは無限を意味し、ほぼすべての GIF がそう指定しています。

ディレイが 0 または 1 に近い百分の一秒あたりで、挙動が分かれます。ブラウザーは歴史的に非常に短いディレイを最小値に切り詰めてきたので、毎秒 100 フレームで作られた GIF が、あるビューアーではおよそ十分の一の速さで再生され、別のビューアーではもっと速く再生されることがあります。あるアニメーションが場所によって明らかに違う速さで動くなら、たいていこの切り詰めが原因です。

発音は二通りあり、どちらも譲りません

CompuServe でこの形式を作ったチームを率いた Steve Wilhite は、ソフト G ── "jif" ── で発音すると述べ、2013 年に生涯功労賞を受けたときにもそれを繰り返しました。実際の使用では、ハード G のほうが圧倒的に多く使われ続けています。

これをここに含めているのは、実際に検索されるからであり、また作り手の意図と一般的な使われ方が食い違っているという正直な答えが、誰も訂正しきれないほど早く広まった言葉にはよくある結末だからです。

何に変換するか

静止画なら PNG です。可逆で、フルカラーで、まともな透明度を持ち、たいてい GIF より小さくなります。動画を受け付ける行き先へのアニメーションなら MP4 か WebM で、はるかに良い画質でずっと小さいファイルになります。画像のままである必要があるアニメーションなら、行き先が対応していれば WebP です。

行き先が具体的に GIF を求めているときだけ GIF に変換してください。それは本物によくあるケースです。チャットウィンドウ、課題のスレッド、ドキュメントのページ、アップロードフォームが十年変わっていないプラットフォーム。この形式は後継より劣り、より広く受け入れられていて、それがすべての判断材料です。

基本情報

GIFフォーマットの識別子と出自。
拡張子.gif
メディアタイプimage/gif
公開元CompuServe
初版1987
仕様GIF89a

この数値の出典

このページに書かれていることは検証できます。根拠となる資料は次のとおりです。