2014年発売Android端末のdp解像度まとめ

# はじめに
Android端末は機種数が多く、OSバージョンやハードウェアがそれぞれ異なるためにAndroidでアプリを作ることは大変だと言われています。
特にディスプレイについてはそれぞれが異なった画面サイズや解像度を持つため、Androidの画面設計は複雑だと思われがちです。

実際、[OpenSignalのAndroid断片化調査](http://opensignal.com/reports/2014/android-fragmentation/)の中でも以下のような画像とともに画面サイズの断片化について触れています。

![image](https://qiita-image-store.s3.amazonaws.com/0/48019/4a108243-9f29-395a-5902-8e54fb18d0f6.png)


しかし、Androidにはdp(密度非依存ピクセル)という実際の画面サイズ、解像度に依存しない形で画面を扱うための仕組みが用意されており、このdpを使うことでAndroidの画面サイズ断片化への対応コストは大幅に削減することができます。
dpの概要については過去に記事を書きましたので、そちらを参照してください。

[いまさら聞けないdp入門](http://qiita.com/nein37/items/0a92556a80c6c14503b2)

断片化とdpについての基本的な説明は下記ブログに簡単な例と図入りでまとめられているので、ぜひ一読しておきましょう。

[The Android Screen Fragmentation Myth | Rusty Rants](http://rustyshelf.org/2014/07/08/the-android-screen-fragmentation-myth/)

# 本題

最近のAndroid端末の画面サイズ断片化状況を把握するため、2014年に国内キャリアから発売された端末のdp解像度を調査しました。
デバイスの分類については、Android Developers上ではフォン(スマートフォン)とタブレットの2種類となっていますが、どちらにも含まれない端末があるため、 記事中ではそれらの端末を「ファブレット」として分類しました。

![image](https://qiita-image-store.s3.amazonaws.com/0/48019/6bb77466-086e-bb69-4afa-94e29c9d2bca.png)

この記事の調査で作成した一覧表(Googleスプレッドシート)

http://goo.gl/spJxXq

# スマートフォン
Android Developersの定義では、スマートフォン端末は320-384dpの横幅を持つとされています。
一部の端末は物理ボタンを持っており、ナビゲーションバーが表示されないためアプリを描画可能な範囲が広くなりますが、Kitkat以降ではナビゲーションバーの制御も可能になっているため今回の調査では物理ボタンの有無を区別していません。

## スマートフォンのdp解像度

|dp解像度|量子化密度|端末数|
|---|---|---|
|360x640|hdpi|1|
|360x640|xhdpi|8|
|360x640|xxhdpi|22|
|360x640|xxxhdpi|5|
|320x569.3|hdpi|1|

dp解像度の分類でみると、ほぼすべての端末が360x640dpとなっており、最近発売されたスマートフォンに対してはこのdp解像度を基準にデザイン設計を行えば良いことがわかります。
ただし横幅320dpの機種も1機種のみ発売されているため、320dpでも崩れないことを確認したほうが良いでしょう。

## スマートフォンの一覧

スマートフォン端末の解像度とdpはそれぞれ以下のようになっています。
GALAXY Note Edgeのエッジスクリーン領域は除外しています。

|機種名|対角線長|W(px)|H(px)|dpi|量子化密度|W(dp)|H(dp)|備考|
|---|---|---|---|---|---|---|---|---|
|AQUOS PHONE SERIE mini SHL24|4.5|1080|1920|480|xxhdpi|360|640||
|URBANO L02|4.7|720|1280|320|xhdpi|360|540|物理ボタン|
|G Flex LGL23|6|720|1280|320|xhdpi|360|540||
|HTC J butterfly HTL23|5|1080|1920|480|xxhdpi|360|640||
|TORQUE G01|4.5|720|1280|320|xhdpi|360|640|物理ボタン|
|URBANO L03|5|1080|1920|480|xxhdpi|360|640|物理ボタン|
|AQUOS SERIE SHL25|5.2|1080|1920|480|xxhdpi|360|640||
|GALAXY S5 SCL23|5.1|1080|1920|480|xxhdpi|360|640|物理ボタン|
|Xperia ZL2 SOL25|5|1080|1920|480|xxhdpi|360|640||
|isai FL LGL24|5.5|1440|2560|640|xxxhdpi|360|640||
|isai VL LGV31|5.5|1440|2560|640|xxxhdpi|360|640||
|URBANO V01|5|1080|1920|480|xxhdpi|360|640|物理ボタン|
|Xperia Z3 SOL26|5.2|1080|1920|480|xxhdpi|360|640||
|GALAXY Note Edge SCL24|5.6|1440|2560|640|xxxhdpi|360|640|物理ボタン・エッジスクリーン|
|GALAXY S5 SC-04F|5.1|1080|1920|480|xxhdpi|360|640|物理ボタン|
|AQUOS ZETA SH-04F|5.4|1080|1920|480|xxhdpi|360|640||
|Disney Mobile on docomo SH-05F|5|1080|1920|480|xxhdpi|360|640||
|Xperia Z2 SO-03F|5.2|1080|1920|480|xxhdpi|360|640||
|Xperia A2 SO-04F|4.3|720|1280|320|xhdpi|360|640||
|ARROWS NX F-05F|5|1080|1920|480|xxhdpi|360|640||
|らくらくスマートフォン3 F-06F|4.5|720|1280|320|xhdpi|360|640||
|GALAXY Note Edge SC-01G|5.6|1440|2560|640|xxxhdpi|360|640|物理ボタン・エッジスクリーン|
|GALAXY S5 ACTIVE SC-02G|5.1|1080|1920|480|xxhdpi|360|640|物理ボタン|
|AQUOS ZETA SH-01G|5.5|1080|1920|480|xxhdpi|360|640||
|Disney Mobile on docomo SH-02G|5.5|1080|1920|480|xxhdpi|360|640||
|Xperia Z3 SO-01G|5.2|1080|1920|480|xxhdpi|360|640||
|Xperia Z3 Compact SO-02G|4.6|720|1280|320|xhdpi|360|640||
|ARROWS NX F-02G|5.2|1440|2560|640|xxxhdpi|360|640||
|AQUOS PHONE Xx mini 303SH|4.5|1080|1920|480|xxhdpi|360|640||
|AQUOS CRYSTAL 305SH|5|720|1280|320|xhdpi|360|640||
|AQUOS Xx 304SH|5.2|1080|1920|480|xxhdpi|360|640||
|シンプルスマホ2 401SH|4.5|720|1280|320|xhdpi|360|640||
|Xperia Z3  401SO|5.2|1080|1920|480|xxhdpi|360|640||
|CRYSTAL X 402SH|5.5|1080|1920|480|xxhdpi|360|640||
|AQUOS PHONE ef WX05SH|4|480|854|240|hdpi|320|569.3||
|DIGNO T 302KC|4.5|540|960|240|hdpi|360|640|物理ボタン|
|DM016SH|5.2|1080|1920|480|xxhdpi|360|640||


# ファブレット
ファブレットの定義はAndroid Developers上にはありません。
ただし、分類表で未分類の短辺が384dpより大きく、600dpよりも小さい端末はファブレットと呼べそうです。
この記事ではAndroid Developersに従い短辺が600dpのものはタブレット扱いとしましたが、これらの端末は7インチ前後のものが大半のようなので、今後ファブレットとして扱われるようになる可能性もあります。

## ファブレットのdp解像度
今回の分類ではファブレット端末は2機種しか該当しません。

|機種名|対角線長|W(px)|H(px)|dpi|量子化密度|W(dp)|H(dp)|
|---|---|---|---|---|---|---|---|
|Xperia Z Ultra SOL24|6.4|1080|1920|320|xhdpi|540|960|
|Nexus 6|5.96|1440|2560|560|560dpi|410|730|

Xperia Z Ultraの540x960がタブレット最小dp解像度の短辺を60dp短くしただけなのに対して、Nexus6の410x730dpはかなり特殊です。
Nexus6が他のWQHD端末と同様のxxxhdpiであれば360x640dpの標準的なスマートフォンだったはずですが、わざわざ560dpiを定義して410x730dpとすることでこの数字を中心としたファブレットという枠組みを作ろうとしているのかもしれません。
今後のガイドラインの更新に期待しましょう。

# タブレット
Android Developers上の分類ではタブレットは短辺600-800dp、長辺800-1280dpの端末を指します。
スマートフォンと違い、量子化密度が高い端末はあまり多くありません。
タブレットのみ、表中のW=長辺、H=短辺としています。

## タブレットのdp解像度

|dp解像度|量子化密度|端末数|
|---|---|---|
|960x600|xhdpi|3|
|960x600|tvdpi|1|
|1024x768|xhdpi|1|
|1280x800|hdpi|2|
|1280x800|xhdpi|3|

傾向としては、タブレット端末は最小の短辺600dpと最大の1280dpに集中しています。
それぞれ7インチと10インチの端末が多く、8インチでは混在しています。
この2つはアスペクト比も同じため、デザイン上それほど大きな問題にはならないでしょう。
問題はNexus9の1024x768で、アスペクト比が4:3のスクエアディスプレイ端末になります。
とはいえ、960x600dpに対応できていれば縦方向の拡大幅が大きいだけなので、縦スクロールの多いAndroidアプリでは極端な表示崩れとはならないはずです。

## タブレットの一覧

|機種名|対角線長|W(px)|H(px)|dpi|量子化密度|W(dp)|H(dp)|備考|
|---|---|---|---|---|---|---|---|---|
|AQUOS PAD SHT22|7|1920|1200|320|xhdpi|960|600||
|Xperia Z2 Tablet SOT21|10.1|1920|1200|240|hdpi|1280|800||
|GALAXY Tab S SCT21|10.5|2560|1600|320|xhdpi|1280|800|物理ボタン|
|ASUS MeMO Pad 8 AST21|8|1920|1200|320|xhdpi|960|600||
|Xperia Z2 Tablet SO-05F|10.1|1920|1200|240|hdpi|1280|800||
|GALAXY Tab S 8.4 SC-03G|8.4|2560|1600|320|xhdpi|1280|800|物理ボタン|
|ARROWS Tab F-03G|10.5|2560|1600|320|xhdpi|1280|800||
|AQUOS PAD SH-06F|7|1920|1200|320|xhdpi|960|600||
|Nexus9|8.9|2048|1536|320|xhdpi|1024|768||
|MediaPad M1 8.0 403HW|8|1280|800|213|tvdpi|960|600||

# まとめ
スマートフォン、タブレットのどちらにも分類できない端末が出てきたことで、全体としては画面サイズの断片化が進んだ形になっています。
ただしスマートフォン、タブレットに該当する端末に関してはdp解像度が集中していること、サポート範囲が明確に示されていることから、カテゴリの中での断片化はほぼ免れているといっても良いでしょう。
ファブレットに関してはまだ機種が少ないこともありどのような形に落ち着くのか不明ですが、ひとまずNexus6の410dpまでサポートできるようにスマートフォン向けレイアウトを組んだほうが良いかもしれません。
横幅540dpのXperia Z Ultraの存在はAndroid Developersでタブレットの分類を「sw600dp」としているため対応が難しくなっています。タブレット判定用のsw600dpを変更することは難しいので、何かルールが決まるまでは対応端末としないか、多少使いづらくともスマートフォン向けレイアウトで対応するしかなさそうです。