Google、Androidの断片化解決に本腰か?
AndroidはiOSと違い、最新バージョンのOSが市場のほとんどを占めているのではなく、さまざまなバージョンのOSが市場で使われています。
たとえば、2016年11月にGoogleが公開したバージョン別シェアでは、Android 5.x Lollipopが34.1%、Android 4.4 KitKatが25.2%、Android 6.0 Marshmallowが24.0%、Android 4.1 Jelly Beanが13.7%となっており4分割しています。また、最新のAndroid 7.0 Nougatのシェアは、0.3%で多く使われていません。
Dashboards | Android Developers
一方のiOSは、2016年10月25日時点のデータでは、iOS 10が60%、iOS 9が32%となっており、過半数のユーザが最新バージョンのOSを使っています。
断片化する2つの理由
OSの断片化が発生する理由は以下の2つがあげられます。
- 理由1:端末メーカやキャリアがアップデートを提供しない。
- 理由2:ITに積極的でないユーザも多くいる。
理由1は、よく取り上げられる話題です。
最近は、端末の発売後2年以内をめどに、アップデートが提供されています。ただし、確約されたものではなく、提供されたとしても時間がかかる場合があります。また、Androidの立ち上がりの頃は、端末メーカがそれぞれの想いで開発を行った結果、独自色の強い端末がOSの進化から取り残されましたが、互換性を定義するガイドラインが整備されて、イレギュラーな端末を見かけることもなくなり、こうしたケースもなくなりました。
理由2は、Androidゆえの事情と言えます。
GoogleがAndroidを世に送り出した目標のひとつに「すべての人が安価なデバイスでインターネットにアクセスできるようにする」があります。現状は、80%を超える世界シェアを得ているので目標は達成しているといえますが、中にはITに積極的ではないユーザも含まれます。こうしたユーザは、現状で満足できれば、いま以上を求めないので、最新OSにも感心を示さず取り残されます。
分断化は避けられないところもありますが、理由1は課題として取り組むべきものです。これに対して、Googleも解決策を用意し始めています。
Googleが示す解決策とは
Googleは、端末メーカがAndroidデバイスを開発する際に厳守すべき要件をまとめたガイドライン「Android Compatibility Definition Document」(CDD)を公開しています。これには、さまざまな要件が記されており、端末開発メーカは、CDDに求められている要件を満たすように端末を開発する必要があります。
Android 7.0を対象にしたCDDには「3.1.1. Android Extensions」という興味深い章が追加されています。
記述によれば、同じAPIバージョンを維持しながら、独自APIを設けられる手段が設けられるようです。独自APIは、拡張部分を共有ライブラリ(ExtShared)か拡張サービス(ExtServices)として実装して、これを端末にプリロードすることで、端末メーカは独自実装を実現できるようです。これは、理由1で上げた課題に対する回答になりそうです。
ExtServicesは、すでに存在しているServiceクラス(android.app.Service)のように、アプリケーションレベルでの実装ではなく、ハードウエアに近くシステムワイドで実装が行える仕組みなのかもしれません。と言うのも現段階ではドキュメントには詳細な記述がなく詳しいことはわかりません。
端末メーカは、OSをカスタマイズするのではなく、Android Extensionsの枠組みを利用することで独自実装が実現できるのかもしれません。独自部分をOSから切り離すことができれば、新OSがリリースされたとしても、いちからOSをビルドすることなく独自の部分が新OS上で動作するか検証すれば良いだけなので、これまでより格段に手間と時間を節約できます。
端末メーカの負担が減れば、これまでアップデートに積極的ではなかったメーカも考えを改めることになるでしょうし、ユーザにアップデートを提供するまでのリードタイムも短くなります。Android Extensionsは、今後、情報が提供されると思われるので、機会を見て続報をお届けします。
今週は、このあたりで、また来週。