SIMロックフリー版iPhone 6 Plusがやってきた!(拡大表示と搭載メモリ容量)シリーズ第4回

(無音)

 はい、ということでね。お決まりの挨拶をミュートでお届けさせてもらった訳ですけれども。

 iPhone 6 Plus なんてデカすぎ!要らない!ガッカリだよ!と、さんざんコキ下ろしてきた人間が、実際に実機を手にした時にどのような感想を抱くのか。

 そして、今までの iPhone と比べて少々特殊なところの多い 6 Plus についてのアレコレを、実機で確認しながら書いていくシリーズの第4回。

 今回は、iPhone 6 (Plus) で追加された拡大表示とは一体なんなのか、そして iPhone 6 Plus の搭載メモリ容量について、コードの面から見ていきたいと思います。

スポンサーリンク

読み込み中です。少々お待ち下さい

拡大表示って?

 さて、早速ですが、iPhone 6 (Plus) で追加された拡大表示機能とは、一体なんでしょうか。

  • 拡大表示
     ディスプレイの表示方法が増えました。標準の表示では、より多くのアプリケーションを見ることができます。拡大表示を選択すれば、アプリケーションのアイコンも、すべてのコンテンツも、さらに大きく表示されます。

 本家の紹介文を紐解くと、こんなことが書かれていますが、いや、そう言われましても......あぁ、拡大して表示するんだな、くらいのことしか読み取れません。

 そこで、iPhone 6 Plus の実機で実際に違いを見てみましょう。

 具体的には、標準表示と拡大表示で、それぞれ [[UIScreen mainScreen] bounds] の値を取ってみたところ、どんな機能であるのか、なんとなく分かってきました。

  • 標準表示......414x736(幅×高さ)
  • 拡大表示......375x667

 ん?この拡大表示の 375x667 というサイズは、どこかで見た覚えがありますね。

 そうです。この記事でも書きましたが、これは iPhone 6 の画面サイズなのです(ハード的な画素数ではなく、アプリで扱うスクリーンサイズ)。

 つまり、拡大表示というのは、とても人間的な書き方をするならば、ディスプレイがひと回り小さい機種のスクリーンサイズに合わせて引き伸ばして表示するモードのようです。

画面サイズ

6 Plus の拡大表示は 6
6 の拡大表示は 5(?)の
サイズで引き伸ばして表示

 iPhone 6 Plus こそ入手したものの、6 の実機は手元に無いので確認できないまま書いてしまって申し訳ないのですが、おそらく iPhone 6 の拡大表示は 320x568 で動作するのではないでしょうか。
 Apple のサイトのサンプル画面を見ても、ホーム画面のアイコン表示が4列6行から、拡大表示に切り替えると iPhone 5s までと同じ4列5行に変わってますし(iPhone 6 Plus は拡大表示でも4列6行のままなのです)。

 また、特に iPhone 6 Plus の場合はドットバイドットで表示するモードが無く、常にオートスケールしつつ動作していますので、本当にスケーリングモードの選択といった感じの機能なんでしょうね。

 ただし、iPhone 6 Plus では 375x667 の拡大表示時であっても @3x のリソースが読み込まれますので(iPhone 6 は @2x)、スクリーンサイズは同じでも、単純に iPhone 6 と同じ動作をする訳ではないようです。

iPhone 6 Plus の拡大表示

iPhone 6 Plus の標準表示

@1x(100x100)、@2x(200x200)、@3x(300x300)のリソースを用意しましたが、拡大・標準いずれの場合も iPhone 6 Plus では @3x が読み込まれました

う~ん......

 それにしても、なんで拡大表示を 667x375(高さ×幅)にしちゃったんでしょうね。

 どうせそのくらいのサイズにするなら、iPhone 6 Plus の画素数は 1920x1080 なんですから、@3x でドットバイドットとなる 640x360 にするべきだったのではないでしょうか。そうすれば、iPhone 6 Plus でもスケーリングしないで表示するモードを提供できたのに。

 いや、分かってます。

 640x360 モードなんて作ったら、ただでさえ 6 と Plus で2種類も画面サイズが増えたというのに、さらにもう1種類増えちゃいますから、そうならないように iPhone 6 Plus の拡大表示を iPhone 6 の標準表示に合わせたのだということは分かりますよ?

 けど、この場合、動かすべきなのは iPhone 6 の解像度の方だと思います。

 iPhone 6 のスクリーンサイズを 667x375(画素数 1334x750)なんて中途半端なサイズにせずに、640x360 にすればよかったのです。

 そうすれば、640x360 の @2x なので、iPhone 6 の画素数は 1280x720 となり、とても一般的である上に、ディスプレイを 4.5 インチにすれば ppi も iPhone 5s までとほぼ同等に保てます(約 326 ppi)。

 実際に発売された iPhone 6 は 4.7 インチですが、4.5 インチの方が iPhone 5s までとの差も小さいので、私みたいに「4.7 インチでもデカいよ!」と反発する意見も少なく済んで、いいことづくめだったと思うのですが。

 さらに言わせてもらえれば、iPhone 6 Plus の 1920x1080 は、フラグシップ機としては周回遅れの感が否めません。

 このように、直接的なライバル機と目される他社のスマホが 2560x1440 を採用している状況で、いまさらレンダリングは 2208x1242 で行って、それを 1920x1080 にスケールして表示するとか、妙なことをされても......

 だったら、ここは思い切って 5.7~9 インチの 2560x1440 にして、割り切れないことの多い @3x ではなく、素直に @4x にすべきだったと思います。

 @4x ならば、2560x1440 の @1x が 640x360になるので、上であげた iPhone 6 がそうあるべきだったスクリーンサイズとも一致します。
 ドットバイドットである 640x360@4x を標準表示にして、画面の広さをより活かしたい人向けに「縮小表示」として 768x432 のようなスケーリングモードを用意した方が良かったのではないでしょうか。

 まぁ、どこかの外国の人(あいまい)も言ってましたが、iPhone 6 Plus は過渡期の製品なんでしょうね。あちこち試行錯誤の跡が見られるというか、全体的にスゴい中途半端な印象を受けます。常にスケーリングしているせいで、画面の表示がよく崩れますし。

 でも、iPhone 6 Plus をこんなヘンテコな解像度でリリースしてしまったので、もし来年 iPhone 7 Plus が出るとしても、また画面サイズを増やしてしまいかねない 2560x1440 を採用するのは難しいでしょうね。どうするつもりなんだろ。

 しれっと 2560x1440 の @4x にしてきたら、「iPhone 6 Plus の時から、そうしとけよ!!」ってツッコミたいと思います(笑)

メモリについて

 続いて、搭載メモリ容量の話ですが、そういえば公式でも相変わらず明記されてませんね。

 なんかあったら困るので、ウチでも、あくまで sysctl の hw.memsize の値がどうだったかという観点で話を進めますが――

// sysctl.h #define HW_MEMSIZE 24 /* uint64_t: physical ram size */
int mib[2] = { CTL_HW, HW_MEMSIZE };
uint64_t physicalMemory;
size_t size = sizeof(uint64_t);
sysctl(mib, 2, &physicalMemory, &size, NULL, 0);

 具体的には、上記のコードを iPhone 6 Plus の実機で実行して取得できたのは 1022963712 bytes でした(約 975 MB)。physical ram size という sysctl.h のコメントを信じるとするならば、噂通り 1GB のようです。

 ちなみに、同じコードで iPhone 5 は 1065000960 bytes(約 1015 MB)、iPhone 5s は 1047695360 bytes(約 999 MB)が取得できるので、モデルチェンジの度に徐々に減っています。システムの予約分が増えているのかも知れませんね。

 うぅん、それにしても、この記事にも書きましたが、これまでの Retina でも @2x(200x200 を 100x100 として扱う)が最高だったところ、現状では iPhone 6 Plus のみ @3x(300x300 を 100x100 として扱う)のリソースを使用している訳ですよ。

 より大きなリソースを使用するということは、より多くのメモリを消費するということです。

 例として違いを分かり易くする為に、2048x1024@1x という実際はまずあり得ないとても大きなリソースをあえて読み込んで表示するだけの単純なプログラムを動かした場合、@1x で約 10MB、@2x ですら約 34MB のメモリを消費しますが、さらに @3x だと約 76MB ものメモリを消費します(内、2~5 MB はリソース以外が消費しています)。

2048x1024@1x

2048x1024@2x

2048x1024@3x

 つまり、iPhone 6 Plus は、何も考えずにアプリを作ると、全 iPhone、iPad の中で最も多くのメモリを消費する可能性が高い上、ただでさえ画素数が多いのに、さらに常にスケーリングして表示しているので、もう大変です。

 これらのことを考慮すると、どうしても iPhone 5s までの 1GB から 2GB にメモリを増量しておくべきだったと思うのですが、なんで 1GB に据え置いちゃったんでしょうね。

 sysctl の値がおかしいだけで、実際は 2GB 搭載してくれていれば良いのですが、流石にそれは無いだろうな~......。

 メモリ周りの場当たり感も、過渡期の製品だなぁという印象を助長している気がします。

追記:(2014/10/22)

 iPhone 6 Plus も、このスペックにしとけばいいじゃないか......なんで採用しなかったんでしょうね。

おわりに

 さて、iPhone 6 Plus の実機で実験して書こうと思っていたことは、これであらかた出し尽くしたので、次回があるかどうかは未定です。

 もし次回があるとしたら、全体のまとめになると思います。もしくは、予定外の何かを発見した時に、そのことについて書くかも知れません。

 ちなみに、iPhone 6 (Plus) の画面周りについてより詳しい開発寄りの情報はこちらの記事を、技術的でない全般についてはこちらの記事を参照してください。

この記事をシェア
  • このエントリーをはてなブックマークに追加
  • Share on Google+
  • この記事についてツイート
  • この記事を Facebook でシェア