はじめにAkamaiを語ろう
世界のトラフィックの2割はAkamaiが担ってると言われる程、インターネットには欠かせぬ存在となったAkamai。
CDN…つまりコンテンツデリバリーネットワークのサービスで世界No1の企業と言えば知っている方も多いのではないでしょうか?
Akamai CDN
コンテンツデリバリネットワーク(Contents Delivery Network, CDN)とは、Webコンテンツをインターネット経由で配信するために最適化されたネットワークのことである。コンテンツ配信網とも。
そんなAkamaiが提供する画像加工サービスであるimage converterの仕様がひっそりと変更されていた。
2016/1/8から2016/1/13にかけて、全世界に公開された仕様であるが、大きな波紋を投げかけるのでは?と危惧される内容であった。
image converterとは?
そもそもimage converterとは、画像をキャッシュするCDNの用途を越えて、画像のリサイズや品質の最適化を図る事ができるサービスである。
サービスサイトを構築する際には、何はともあれユーザーに重いと感じさせてならず、運営者はあらゆる手を使ってユーザー体験の向上に努力している。その中でCDNは産まれ瞬く間に世界に広がった訳である。
ここで画像を大量に扱うようなサービスサイトにおいては一律した画像加工が求められる。この需要も叶えてしまいうというのがimage converterの便利なところだ。
image converterの仕様変更
今回のimage converterの仕様変更は、画像加工でリサイズや品質を変更する際に、exifにあるorientationが加味される事になったというものである。
ピンとこない方もいらっしゃるので補足すると、一般的にはWEB、HTMLの世界では画像表示の為にimgタグを使う。この時の画像のレンダリングはラスタデータの通りに展開される。
テレビの走査線をイメージするとわかりやすい。横長のテレビに映る画像は当然横長に映るようなデータとして作成され、それぞれの画素が点描されるわけだ。
WEBの画像表示も同じように画素の並びに表示されるのが一般的である。
image converterも今までは画素の並び、つまり向きは崩さずに画像を加工したいたのであるが、2016/1/13の仕様変更にて、exifのorientationを鑑み、作成する画像の向きを回転する事になったのである。
exifって何なの?
exifって何なの?な方に補足すると…
写真用のメタデータを含む画像ファイルフォーマット。デジタルカメラの画像の保存に使われる。略称はExifで「エグジフ」(もしくは「イグジフ」)。
カメラの機種や撮影時の条件情報を画像に埋め込んでいて、ビューワやフォトレタッチソフトなどで応用することができる。
という事で以下のようなメタデータを画像データの中に拡張情報として埋め込めるのである。
以下のようなデータが記録される。適切なサイズでのプリント、撮影時のカメラの設定情報などユーザーが使う上での利便性がある。
撮影日時
撮影機器のメーカー名(製造・販売元)
撮影機器のモデル名(カメラ付き携帯電話・スマートフォンの機種名など)
画像全体の解像度
水平・垂直方向の単位あたり解像度
撮影方向
シャッタースピード
絞り(F値)
ISO感度
測光モード
フラッシュの有無
露光補正ステップ値
焦点距離
色空間(カラースペース)
GPS情報 – GPS付きカメラの場合、緯度・経度・標高など。
サムネイル(160×120画素)
芸能人のアップロードした写真からGPSを抜いて位置を調べるなどの問題を引き起こしているアレである。
今回は撮影の方向がポイントとなってくる。
iPhoneは捻くれ者
日本で最も使われているであろうカメラであるiPhoneにおいては、写真を撮ると画素としては横長のデータとして保存される。ただし縦持ちで写真を撮る機会が多いのでは無いだろうか?
縦に撮った写真は横長のデータとして保存されるが、撮影の方向がexifとして記録されるため、iPhoneで確認すると縦に表示されるようになっているのだ。
ただ前述の通りこの写真をHTMLタグに囲い表示すると横向きに倒れてしまうのである。
こういった事もあってWEBの世界においても、最近、CSS拡張し、今現在はfirefoxではexifのorientationを加味するスタイルを定義している。今後標準化が望まれているが、今時点では標準化されていないのである。
Akamaiの仕様変更の功罪
Akamaiのimage converterが、exifのorientationを加味し、画像を回転させるように仕様変更したのはまさに、WEBの表示仕様がラスタデータの向きであるのに、写真機においてはexifにより撮影向きが補正されて表示される為、撮影直後のユーザーの感覚にそぐわない事を解消する為の対応だったと理解できる。
確かにCSSの標準化を待たずしてiPhoneのような捻くれモノの写真も、写真本来の意図した向きに表示される事になるであろう。
ただ大きな問題が発生する。
Akamaiを利用していないWEBサイトは数多ある。これらはWEBサイトの画像はラスタデータの画素の通り素直に表示される事を期待して設計されている。
このようなWEBサイトが、Akamaiのimage converterを利用するWEBサイトに画像データを連携して渡すような事があると悲劇の開幕となる。
ラスタデータでは横であるがexifでは縦となっているデータは全て、Akamaiにて縦に変換される。元のラスタデータの横向きに表示する事が、期待していた表示であったとしてもだ。
おそらくラスタデータとexifの向きの組み合わせに齟齬がある画像データが、Akamaiを利用するサイトで意図せぬ方向で表示される現象が多発しているのではと予想している。
まぁ、通常に写真とればiPhoneの写真だろうがうまく表示してくれる仕様なので、時間が解決するとは思うが、世界中のエンジニアが頭に?を浮かべているんだろうと想像すると泣けてくる。
ネットで調べると、あまりこの情報は流れていないようだったので、何かしらの気づきになればと記事にしたみた次第である。
Posted from Thankthee!