その2: iPhone 6 plus の スクリーンは2208 x 1242 から 1920 x 1080 にダウンサンプリングされている

f:id:provdr:20140922042210p:plain

iPhone 6 plus の スクリーンは2208 x 1242 から 1920 x 1080 にダウンサンプリングされている - pref·er·ence

以前、こちらの記事にて iPhone 6 Plus のダウンサンプリングについて書きました。私自身興味のある点なので、勉強も兼ねてもう一度どういう仕組みなのか説明しまとめました。間違いなどあればご指摘いただければと思います。それではいきましょう。

iPhone 6 Plus の解像度は 1242p? 1080p?

まず始めに、アップルのウェブサイトに記載されている通り iPhone 6 Plus のスクリーンの解像度は下記の通り 1920 x 1080ピクセルです。

  • Retina HDディスプレイ
  • IPSテクノロジー搭載5.5インチ(対角)LEDバックライトワイドスクリーンマルチタッチディスプレイ
  • 1,920 x 1,080ピクセル解像度、401ppi

iPhone 6 - 技術仕様

では2208 x 1242ピクセルという数字はどこから出てきたか。

For iPhone 6:
* 750 x 1334 (@2x) for portrait
* 1334 x 750 (@2x) for landscape

For iPhone 6 Plus:
* 1242 x 2208 (@3x) for portrait
* 2208 x 1242 (@3x) for landscape

iOS Human Interface Guidelines: Launch Images

こちらはアプリを起動させた時のスプラッシュスクリーンに使うイメージファイルに関するアップル公式のヒューマンインターフェースガイドラインのページ。こちらには、"iPhone 6 以降を対象としたアプリを制作する場合には静止画ではなく、自動でレイアウトを伸縮する事の出来る方法を使ってください。しかし必要であれば静止画も規定のサイズで使う事が出来ます。"という趣旨の事が書かれています。

そして、その規定のサイズが上記のもの。実際にXcodeでは下記のように必要条件が表示されます。

f:id:provdr:20140922035723p:plain

iPhone 6 についてはスペック通りなので問題ありませんが、iPhone 6 Plus は 1920 x 1080 ではなく 2208 x 1242 となっていますね。では、どちらが正しいのでしょうか。

縮小の仕組み

簡潔に言いますと、iPhone 6 Plus に搭載されているパネルは 1080p ですが、内部的に 1242p から 1080p へハードレベルで縮小処理されています。

まず、iPhone 6 世代からは Retina HD と銘打って、今までの Retina と差別化を図っています。そもそも Retina ディスプレイでは、ポイント(pt)と呼ばれる座標に2倍(@2x)のピクセルを詰め込む事でその鮮明さを実現しています。

f:id:provdr:20140922035720p:plain

@2x の方は丁度倍のサイズとなっていますね。より描写範囲が広い物を同じサイズにするのだから、鮮明に見えるのは当然ですね。これが Retina HD では @3x にまでなりました(6 Plus のみ)。

これまでの iPhone + iPhone 6 は:

iPhone ~3GS: 320x480 pt @1x > 320x480 px
iPhone 4/4S: 320x480 pt @2x > 640x960 px
iPhone 5/5s: 320x568 pt @2x > 640x1136 px
iPhone 6:    375x667 pt @2x > 750x1334 px

こういった具合。しかし iPhone 6 Plus では:

414x736 pt @3x > 1242x2208 /1.15 > 1080x1920

と、@3xなのですが、最終的に1.15倍率を下げて(1242/1080) 、つまりダウンサンプリングされて表示されています。ダウンスケーリングではなくダウンサンプリングです。この割り切りの出来ないせいで 6 Plus においては今までの 1px=1px が実現不可能となりました。

iOS の仕組み

実は iPhone 6 Plus ではシステムはあたかも iPhone が 1242p パネルを搭載しているかのように動作しています。簡単に分かる方法としてはスクリーンショット。試しに iPhone 6 Plus をお持ちの方はスクリーンショットを撮ってみてください。その画像は 1242 x 2208 になっているはず。iOS は もちろん、アプリ等も対応していないものを除いてこのように 1242p だと騙されて動作しています。

ですが、この縮小によって画面に表示される UI に差は生じません。 1242p パネルを搭載していたとしても、スクリーンに表示される UI のサイズに変化が生じる事は無いのです。変わるのは物理的な見た目の鮮明さ。同じ5.5" で 1242p だった場合は 461ppi となり、インチあたりのピクセル密度が上昇し、さらにネイティブ解像度となり理論上はより鮮明になります。しかし @3xである事と 5.5" ディスプレイで 401ppi と高精細な事を考えると正直 1242p になったとして果たしてその違いに気づけるかどうか、という位の物でしょう。ネイティブ解像度でない事、1:1 マッピングで無くなった事も普通に使うユーザーにはさほど問題ではないかと思います。

とどのつまり

調べて分かった事を簡単にまとめますと、1080pでダウンサンプリングされてても十分綺麗でなんの問題も無かった、ということですね。