アニメーション画像の歴史 APNG-WebP戦争

インターネット上ではアニメーション画像フォーマットの統一のための戦争が行われています。当記事はそれらの経緯や「GIF」「APNG」「WebP」などの画像フォーマットの事情について記します。

長いですが、「GIFの特許問題」と言われて分かる人は最初の項を読み飛ばしていただいても構いません。

「GIF」という画像フォーマット

GIFはパラパラ漫画のようにアニメーションすることができる画像フォーマットです。ページ上に配置した画像に動きをつけたいというニーズを大いに満たしました。

フリーデザイン素材「ローディングのくるくるアニメーションGIFがいっぱい」より

当時はダイヤルアップ接続が主流だったため、「LZW」と言われる圧縮技術によりファイルサイズも小さく済んだことは大きなことでした。可逆圧縮なので画像を編集しても画質が劣化しません。便利であるとともにインターネットそのものが普及する以前からあったため、好んで使われました。しかし、とある事件が起きてしまいます。そのLZWには特許が取得されていましたが、突然GIFを扱うソフトウェアの製作者に対して特許料を請求し始めたのです。商用目的のソフトウェアからは以前から徴収していましたが、「無料のフリーソフトウェアの製作者からは徴収しない」と宣言していたのにも関わらず、後から手のひらを返したことが問題になりました。GIFを扱うホームページが閉鎖するなどの混乱も沸き起こり、ネットユーザーはこの事件に大きく反発し、「GIFの代わりになるフォーマットを使おう」という運動が世界中で湧き起こりました。

Webの標準化団体W3Cは既存の特許に触れないPNGを策定・開発し、これをGIFの代わりに使う人が出てきます。この頃既にJPEGが存在しましたが、アニメーション機能がありませんし、カメラで撮影した写真向きのフォーマットであり、可逆圧縮ではなく不可逆圧縮であるためGIFに置き換えられるものではありませんでした。

JPEGは写真など、PNGは絵などに向いている

1枚目:撫でてたら気持ちよさそうに寝た猫

2枚目:やじるし素材サイト「矢印デザイン」


問題はPNGにもアニメーション機能がなかったことで、アニメーションができる「MNG」も考案されましたが、長年に渡って仕様が定まらず、実装も困難だったので普及しませんでした。実質的な代わりとしては画像にJPEGやPNG、アニメーションには「Flash」が使われていたようです。しかし後者はアニメーションというより動画としての意味合いが強く、GIFのような気軽さで使えるものではありません(余談ですが、脆弱性の多さやHTML5 Videoの存在から2017年時点であまり見ることがなくなっています)。


結局のところ、GIFの代わりは存在しませんでした。しばらくしてLZWの特許が失効し、Web上で自由に使えるようになったので、特許料の支払いを恐れていたソフトウェアの開発者も実装を始めたのです。ネットユーザーも再びGIFを使い始めました。

「APNG」の誕生とMozilla

しかし、その頃にはGIFが時代遅れになっていたのです。上記の事件によって急速に普及したJPEGやPNGはフルカラー(16777216色)対応なのに、GIFは256色のみにしか対応していません。色の細かな表現ができないのです。これでは既存の画像をアニメーション化すると256色に落ちてしまいます。

そこでMozilla Foundationという非営利団体がAPNG(Animated PNG)を作りました。


参考記事:GIF vs APNG(APNG非対応ブラウザでは一部再生されません)


APNGは革新的でした。文字通りPNGにアニメーション機能を追加したもので、フルカラー対応などPNGの良い点を全て引き継いでいます。しかし、こういった新規格が作られると問題になるのが「普及のしやすさ」です。実はMNGだけでなくPNGも作られたばかりの当時は対応しているブラウザや画像ソフトが少なく、「自分には見えるのに他のユーザーには見えない」といった問題が起こりました。GIFの代わりになるものが強く求められていたために時間が解決したのです。


APNGはこの問題に対して機能で答えています。対応しているブラウザには「動くPNG」に見えるのですが、対応していないブラウザには「静止画のPNG」に見えるのです。通常ならば見えすらしない画像がとりあえずは見れるのですから、Webページを作る側からすれば幾分か使いやすいでしょう。

これを策定・開発したMozilla Foundationの子会社であるMozilla社は「Mozilla Firefox」というブラウザも開発しているので、Firefoxがいち早く対応することになりました。ブラウザを作っているからこそ実装のしやすさも考えられたのでしょう。さらに、Firefoxに続いて「Opera」も対応します。この当時(2008年8月)、残りの主要ブラウザは「Internet Explorer」と「Safari」の2つでしたから、APNGがデファクトスタンダートになる日はもう少しだったのです。

しかし、APNGには大きな懸念材料が1つありました。PNGの策定及びライブラリの提供を行う「PNG Development Group」にAPNGは公式仕様として採用しないと言い渡されていたのです。

PNG Development GroupはMNGのみを公式仕様と認めており、PNGはあくまで画像フォーマットであり動画ではないと位置づけていたのです。MNGがある手前、後発のAPNGを認めたくないという意図もあったかもしれません。そして、そういった要因から残りのブラウザは対応に二の足を踏んでいたのだと思います。

「WebP」の誕生とGoogle

FirefoxとOperaがAPNGに対応してから数か月後にGoogle社が「Google Chrome」をリリースしました。このブラウザは瞬く間に主要ブラウザへのし上がります。リリースから約2年半後の2011年に入る頃にはFirefoxの約半数ものシェアを獲得しているほどです。

そのChromeもAPNGには対応せず普及が進まない中、Google社はなんと真っ向から喧嘩を売ります。WebPの誕生です。

Google Developersより

WebPはGoogle社が策定・開発した画像フォーマットで、JPEGの非可逆圧縮とPNGの可逆圧縮に対応しており、この両方よりも画質が良くファイルサイズも小さく済むという次世代規格です。そして何よりアニメーションに対応しています。この記事中に今まで挙げた全ての画像フォーマットの代わりにできる夢のような規格です。

当然ながらChromeもWebPに対応します。主要ブラウザの1つが対応したのですから、無視はできません。Google社の攻撃はまだまだ続きます。スマートフォンの普及によりGoogle社が開発した「Android」が世の中に出回ります。当然ながらAndroidのスマートフォンはWebPに対応していてAPNGには対応していません。Mozilla社も負けじと「Firefox OS」を開発しますが、普及はせずついには開発終了となる始末です。


追い打ちをかけるようにブラウザ界隈を揺るがす大事件が起こります。主要ブラウザの1つであるOperaが「Chromium」系列のブラウザになったのです。ChromiumとはGoogleが主導するオープンソースプロジェクトのことで、これをベースにして色々なブラウザを作ることが可能です。簡単に言えば、Chromeはそのベースをほぼ変更せずに作られたものです。Chromiumのソースコードをベースにして作れば、当然ながら全ての仕様がそちらに引っ張られることになります。Opera Software社は負担が大きな自社開発よりもGoogle社に依存することを選びました。

こうしてOperaはAPNGに非対応となり、WebPに対応します。Mozilla社にとっての唯一の味方が敵に回ったのです。さらに2014年に入る頃には他の主要ブラウザに大差をつけてChromeがシェア1位になりました。


もはやMozilla社に打つ手はなく、十数年間に渡って決まることのなかったGIFの後釜はWebPになるだろうと思われたその時、思わぬ刺客が入ります。それはApple社でした

「Apple vs Google」の代理戦争へ

Androidの対抗馬はApple社が開発する「iOS」です。Apple社も「Safari」という主要ブラウザの1つを作っていますが、APNGにもWebPにも対応していません。ところが、2014年にiOSとSafariがAPNGへ対応しました

この出来事で勢力図が一気に変わります。

勢力図まとめ
フォーマット大きな勢力
APNGFirefox, Safari, iOS
WebPChrome, Opera, Android
MNG公式仕様だが特になし

これはかなり大きな出来事です。国によっても異なりますが、例えば2014年10月の日本のiOSとAndroidのシェアは両方とも約半数であり、均衡しています。Web技術においてスマートフォンやタブレットユーザーはかなり大きな存在ですから、もはや風前の灯だったAPNGが一気に息を吹き返しました。

Apple社からすれば対抗企業であるGoogle社が開発したフォーマットを採用することに抵抗があったのでしょう。かくして大企業たちの思惑に巻き込まれたのです。


そしてこの出来事により、主要ブラウザの中で静観を決め込んでいるのはMicrosoft社が開発する「Internet Explorer」及び「Microsoft Edge」のみとなりました。Microsoft社にとってはApple社もGoogle社も対抗企業であるわけですが、果たしてどう転ぶでしょうか。

まとめ

出来事をまとめた表を置いておきます。ググりながら書いたので間違っていたらご指摘ください。

歴史表
出来事
1984圧縮アルゴリズムLZWが発表される
1985特許庁のミスにより、IBM社の申請がわずかに早かったにも関わらずIBM社とSperry社の2社が同時にLZWの特許を取得する
1986Sperry社とBurroughs社が合併しUnisys社になり、LZWの特許権も引き継がれる
1987CompuServe社によりGIFが策定される。圧縮アルゴリズムにLZWを採用する
1992国際標準規格としてJPEGが策定される
1994CompuServe社がUnisys社に特許料の支払いを求められ、これに同意した両社との間にライセンス契約が結ばれる。また「GIFを扱う商用ソフトウェア」にも支払いを求める
1996Unisys社が「GIFを扱うフリーソフトウェア」にも将来的に特許料の支払いを求めることを宣言する
1996上記の宣言を受け、標準化団体W3CによりPNGが策定される
1999Unisys社がフリーソフトウェア向けの無料のLZWライセンスを廃止し、特許料の徴収が始まる
2000規格成立に約4年半もの歳月を経てMNGが策定される
2003アメリカ合衆国においてLZWの特許が存続期間満了により失効(日本では翌年)
2004Mozilla FoundationによりAPNGが策定される
2007PNG Development Groupが「APNGは公式仕様として採用しない」と宣言
2007Apple社がiOSをリリース
2008Mozilla社がMozilla Firefox 3、Opera Software社がOpera 9.5をそれぞれリリースし、APNGに対応
2008Google社がGoogle ChromeとAndroidをリリース
2010Google社によりWebPが策定される
2011Google社がGoogle Chrome 9.0とAndroid 4.0をリリースし、WebPに対応
2013Mozilla社がFirefox OSをリリース
2013Opera Software社がChromiumベースに変更したOpera 15をリリースし、APNG非対応/WebP対応となる。
2014Apple社がiOS 8.0とSafari 8.0をリリースし、APNGに対応
2016Mozilla社がFirefox OSの(事実上の)開発終了を発表

あとがき

アニメーション画像フォーマットから見たインターネットの歴史をざっくり(ちょっと大げさに)まとめてみましたが、いかがでしたでしょうか。私はGIFしか扱ったことがなかったのですが、たまたまAPNGとWebPを扱う機会ができたので調べてみたら興味深くなって記事を書いた次第です。

統一される機会は何度かあったけど、それぞれの思惑がそうさせませんでした。GIFの特許問題が発生したのは1996年ですが、その頃からずっと画像フォーマットには歪な事情が根付いています。

互換性を確保したAPNGとそれを切り捨てても性能を確保したWebP、どっちが生き残るんでしょうか。ここにきてMNGとか更なる勢力というのはナシですよ?


ともかく、2017年現在はAPNGとWebPが入り乱れている状態です。表現も実装方法も異なるので構想や設計段階で組み込んでおく必要がありますが、jQueryなどのライブラリを使えばJavaScriptによるアニメーション制御も楽に行えるし、クロスブラウザにも対応できます。SVGを使う手もありますが一般的ではないでしょう。

なお、下記のHTMLでAPNGとWebPの両方に対応できます。

<picture>
  <source srcset="./img/something.webp 1x" type="image/webp" />
  <img src="./img/something.png" /> <!-- 画像はAPNG -->
</picture>

HTML5に対応している必要があり、それぞれ下記に見えます。

  • WebPに対応している→WebP
  • APNGに対応している→APNG
  • どちらにも対応していない→PNG(APNGの最初のフレーム)

アジア圏に限って言えば、LINEのアニメーションスタンプにAPNGが採用されたりしているのでAPNGに追い風が吹いているイメージがあります。フォーマットの仕様は読んでいませんが、PNGの拡張でしかないAPNGは実装が容易なのでしょう。

忘れてはいけないのが、WebPはアニメーションのためのフォーマットではなくJPEGやPNGの代わりにもなることです。PNGにアニメーション機能をつけたのがAPNGであって、APNGとWebPは全くの別物です。

ともあれ、Webエンジニアにとって生き残るのは1つだけであってほしいものです。

3 件のコメント :

  1. ChromeもAPNG対応しましたね。
    http://forest.watch.impress.co.jp/docs/serial/accessranking/1064793.html

    返信削除
    返信
    1. コメントありがとうございます。
      執筆以降アンテナを張っていなかったせいかキャッチできていませんでした……ChromeがAPNGに対応するとは意外です。
      GIFの代わりはAPNGでほぼ確定ですね。Webの統一化がまた一つ進みました。

      削除
    2. APNGそのものに張り合う必要はない、ということでしょうかね
      むしろPNG全体が敵、みたいな

      削除