いさぽん部屋(isapon.com)

ゲーム系プログラマによる特に方針のないブログ。技術系とカレー、ラーメンネタ多めだったはずが、最近はダイエットネタ多め。

スマホの画面の縦横のPPIは違うのだ。スマホ開発はAndroidから行うススメ

Androidで気を付けないとならないのは、PPI(Pixel Per Inch)が縦と横で違うということ。ほんと、微妙な差なので、ぶっちゃけどっちも同じ値を使っていてもわからないくらい。でも一応違います。

例えば、SHARPの SHL25だと 水平方向=428.6, 垂直方向=427.789 と、ほんと、微妙に違います。ほかの端末でも調べたところ、同一のものはどぼありませんでした。iPhoneはというと、わかりません。iOSはPPIを取ることができないのです(本当はあるかもしれないけど今のところ不明)。つまり、仮に違っていてもプログラムからは調べようがありません。なので、縦横同じ扱いにしています。Windows Phone ですが、こちらもPPIを取得可能です。ただ、国内では検証できる実機が少ないので、まだ実際のところどうなのかは検証不十分です。

こういったことも含めてなのですが、スマホアプリの開発を行うならフラグメントの多い Android から始めると幸せになれます。フラグメントが多いだけに、しっかり対応しないと出てこない落とし穴の早期発見が可能になります。何より、フラグメントの多い Android 端末にしっかり対応できるように組んでおくと、iOSはAPIが違えども「フラグメント端末のうちのひとつ」という見方ができるので、かなり安易に対応可能で楽です。

逆に、iOSから開発すると、おそらくAndroidに持っていく際に「この機能はiPhoneのハードウェアに依存しすぎていた」みたいなことになりかねません。また、Androidは根っこがLinuxなので、アクティビティさえしっかり管理すれば、思いのほかプログラムに対して素直に動きます。そのため、OSによる隠ぺい部分が少なくなるので、プログラムの問題点の洗い出しが早いというのも特徴です。なお、Javaでの開発については知りません。

f:id:no-operand:20150830142643p:plain

C++でスマホアプリを作っていた時の互換性に関するなんとなくの肌感覚図。WindowsPhoneはまだ出そろっていないので、今後のリスクも考えて少し大きめの縁にしています。とりあえず、Androidでいろいろ対処しておけば、概ねなんでも対応できる気がします。個人的にはWindows Phoneを応援していますが、やっぱり開発は Android から行うのが結果的に一番幸せになれそうです。

サブミットの関係でiOSのリリースが早いからと言って、iOSから開発すると、結果的に工数が伸びるのでAndroidからの開発をお勧めします。