Androidプラットフォームを採用した商用向け端末がはじめて世に登場したのは、2008年10月のことだ。米T-Mobileの「T-Mobile G1」を皮切りに、わずか2年足らずの間で、世界中のメーカーがこぞってAndroid搭載機を市場に投入した。そして今もなお、Androidは急速にシェアを拡大し続けている。

 ユーザーの視点からすると、デバイスの多様性がAndroidの持つ魅力の一つといえる。ユーザーは、自分の好みや利用目的に合わせて端末を選択することができるからだ。もちろん、携帯電話だけに限らず、今後はPDAやカーナビ、家電などといった分野にも応用されていくことだろう。

 ところが、デベロッパーの視点から見た場合、その多様性が逆にあだとなってくる。開発の対象となるデバイスが多ければ多いほど、実機での検証が困難になるからだ。なるべく多くの種類の端末で検証することが望ましいが、その分、検証に時間がかかってしまう。そもそも市場に出回っているすべての端末で検証するのは現実的ではない。

 Androidという共通のプラットフォームが搭載されているとはいえ、ハードウエアのスペックはデバイスごとに違ってくる。CPUクロックやメモリー容量の差異は、そのままパフォーマンスの違いとして現れてしまうし、センサーやトラックボールの有無など、端末に備えられた物理的な特性の違いはまさに多種多様である。

 また、端末によって搭載されるOSのバージョンが統一されていないという問題もある。例えば、NTTドコモから今春発売されたXperiaは、発売当時OSのバージョンは1.6だったが、同時期にソフトバンクモバイルから発売されたHTC DesireのOSは2.1だった。互換性を保つため、ほとんどのデベロッパーは1.6ベースでの開発を余儀なくされた。

画面1●Android SDKのエミュレータ
[画像のクリックで拡大表示]

 このような問題点に対する一つの解決策としては、Android SDKのエミュレータを活用することが挙げられる(画面1)。エミュレータを起動するために、AVD(Android Virtual Device)と呼ばれる仮想のデバイスを作成する必要がある。このAVDでは、OSのバージョンやハードウエアのスペック、画像サイズなど、多様な端末への対応を想定した事細かな設定が可能となっている。

 SDKのエミュレータは、デバイスの特性だけでなく、例えば電波状況などといった外的な環境条件もエミュレートすることができる。もちろん、目的のデバイス上で実際に検証することができればそれに越したことはないが、開発を効率的に進めるためのツールとして、エミュレータは多いに活用すべきだ。

 そのほか、画面サイズの差異に柔軟に対応できるよう、ピクセルでの指定はできるだけ避けるべきである。具体的には、レイアウトXML内でサイズを指定する際は、ピクセルで直接指定するのではなく、dip(density-independent pixel)という単位を使うことが望ましい。1 dipは「160 dpiの1 pixelの物理的な大きさ」と定義されている。

 dipとpixelの比は、画面の解像度に応じて変化し、例えば、240 dpiの解像度を持つスクリーンでは、1 dipは1.5 pixelに相当する。従って、サイズの指定にdipを使用しておくだけで、異なる画面解像度に簡単に対応できる。

 Androidというプラットフォームが、多様なハードウエアの仕様に対応できるだけの柔軟性を本来備えていることは確かである。しかし、特定のハードウエアに機能が依存してしまうような設計は、極力避けるべきだ。

渡島 健太(わたしま けんた)
アシアル株式会社 エンジニア
1987年福岡生まれ。Perlで書かれたCGIスクリプトの改造がきっかけで初めてプログラミングに触れる。2009年にアシアル株式会社に入社。以後、同社が近年積極的に展開するスマートフォン事業に従事し、Android向けアプリ開発のほか、iPhone向けサイトのデザインなども手がける。