Screen Sizes and Densities(Dashboards)の読み方


Android Developersでは毎月[Dashboards](http://developer.android.com/intl/en/about/dashboards/index.html)というページでOSバージョンや端末特性ごとのシェアを公開しています。
その中のScreen Sizes and Densitiesという項目について本記事で説明したいと思います。

## Screen Sizesとは何か

![20160113100323_2cb99ceb4e5d59c507f0645fce1761952d00b86f.png](https://qiita-image-store.s3.amazonaws.com/0/48019/b27207b8-c380-c10c-a56b-0db0e98b30e5.png "20160113100323_2cb99ceb4e5d59c507f0645fce1761952d00b86f.png")

横軸のDensities(ldpi〜xxhdpi)は端末の画面密度のことで、[液晶サイズと解像度から求める](http://qiita.com/nein37/items/21cf0e98046a0267b158#dpi%E8%A8%88%E7%AE%97)ことができます。
一方縦軸のScreen Sizesは液晶サイズの分類と思いがちですが、実際には解像度と画面密度から算出されるdp解像度を元にグループ化されています。


以下の図は[Supporting Multiple Screens](http://developer.android.com/intl/en/guide/practices/screens_support.html#range)ページにあるScreen Sizesとインチ数(と画面密度)のマッピング図です。

![](http://developer.android.com/images/screens_support/screens-ranges.png)


この図だけ見ると「5〜7インチ端末はlargeで
8インチ〜10インチがxlarge」と思ってしまうかもしれませんが、更に下の注意書きを良く読む必要があります。

> xlarge screens are at least 960dp x 720dp
> large screens are at least 640dp x 480dp
> normal screens are at least 470dp x 320dp
> small screens are at least 426dp x 320dp


large screenは少なくとも`640dp x 480dp`と書いてあり、横幅480dpの端末はスマートフォンではほとんど存在しません。
Xperia Z Ultraなどごく一部のファブレットが480〜600dpの間にいるくらいで、Nexus5XやNexus6Pですら横幅は410dpです。

つまり、スクリーンサイズに関わらずほぼ全てのスマートフォンが含まれるScreen Sizes区分はnormalになります。
先述のマッピング図はかなり古いもので、スマートフォンの大型化が進んだ現在ではあまり役に立ちません。

このScreen Sizesによる区分は直感的でなかったためか、Android 3.2からはdpによる区分が推奨されるようになりました。

[New Tools For Managing Screen Sizes | Android Developers Blog](http://android-developers.blogspot.jp/2011/07/new-tools-for-managing-screen-sizes.html)


## Screen Sizes and Densities対応表

新しくdpによる区分が推奨され、実装面では非常に楽になったものの、DashboardsはなぜかScreen Sizesベースで提供され続けています。
Dashboardsを読み解くためには、結局Screen SizesとDensityから対応する端末を算出するしかありません。

[Supporting Multiple Screens](http://developer.android.com/intl/en/guide/practices/screens_support.html#testing)のページにAndroid Sdkが持つAVDのスキンと端末解像度の大雑把な対応表が表示されているので、これを見てみます。

![20160113101746_3f7e86507c12e5af0ddc2df9ea4b05290b2bb885.png](https://qiita-image-store.s3.amazonaws.com/0/48019/1109c7e2-8440-57c3-eb71-167881ffdd52.png "20160113101746_3f7e86507c12e5af0ddc2df9ea4b05290b2bb885.png")

一部はそのままでも使えそうなのですが、この表も古いです。
シェアが22.1%あるはずの`normal-xhdpi`には今ではほとんど見かけない[IS03](http://www.sharp.co.jp/products/is03/)と同じ解像度が書いてあります。

しかしこのAVDのスキンベースで判定するという方法は既存端末の一部には有効です。
AVD作成画面でプリセットされている端末情報を見るとDensityとSizeがしっかりと記述されています。
Nexus6やNexus6Pもちゃんと`Size :normal`に分類されており、信頼性がありそうです。

![20160113155959_33d2c2df39e1979ae32e32cf8fdb5ebca29d5741.png](https://qiita-image-store.s3.amazonaws.com/0/48019/8aa56d93-94c8-52ce-01fb-657cdb5780a5.png "20160113155959_33d2c2df39e1979ae32e32cf8fdb5ebca29d5741.png")


ただし、既存の端末をCloneするとなぜかSizeが変わってしまいます。
自分で設定した端末のSizeが正しいかどうかもよくわからないので、プリセット以外はあてになりません。

![20160113160322_8719efc8ca992b14975f8aba82c6c19daf9208dc.png](https://qiita-image-store.s3.amazonaws.com/0/48019/737ff515-27d5-ab59-58a4-ceb9f8468075.png "20160113160322_8719efc8ca992b14975f8aba82c6c19daf9208dc.png")

## 端末を表に当てはめる

ADでは最近の端末解像度との対応表が見つからなかったので、最近販売された端末からScreen Sizes and Densitiesと端末の対応表を作りました。
シェアが5%以上あるものは **太字** にしています。

以下の記事を元に主流な端末情報を当てはめています(インチ数は目安です)。
[2015年発売Android端末のdp解像度まとめ](http://qiita.com/nein37/items/0a622f7ebbbb92db93d5)
[2014年発売Android端末のdp解像度まとめ](http://qiita.com/nein37/items/3918f5833bfa31fbe3d5)


|＼|ldpi|mdpi|tvdpi|hdpi|xhdpi|xxhdpi|xxxhdpi|
|---|---|---|---|---|---|---|---|---|
|Small|3in 240x320[^1]|-|-|-|-|-|-|
|Normal|-|**4in 320x480**|-|**4in 480x800[^2]**|**5in 720x1280**|**5in 1080x1920**|5in 1440x2560|
|Large|7in 800x480|**7in 1024x600**|8in 1280x800|8in 1440x900|8in 1920x1200|-|-|
|Xlarge|-|10in 1280x800|-|10in 1920x1200|10in 2560x1600|-|-|

これで現在でもよく見かける解像度の表になりました。
[1年前のDashboards](https://web.archive.org/web/20150113174639/https://developer.android.com/about/dashboards/index.html)と比べるとスマホ/7インチタブレット/10インチタブレットの比率はあまり変わらないままスマートフォンの画面密度が向上してきているのがわかります。


[^1]: [折りたたみ式のテンキー付きAndroid端末](http://gpad.tv/phone/kyocera-duraxe-e4710/)など
[^2]: 4in 480x854も同様