Androidアプリの作成おいては、アプリのソースを記述し、総合開発環境でビルド、パッケージ化を行います。2018年に発表された新機能であるApp Bundleは、ゲームといった大規模なアプリケーションにおけるアプリの容量問題を解決する大きな手助けとなっています。
今回の記事では、AndroidにおけるAPKとAAB、開発の際に重要となる32bitと64bitの解説をしていきます。
1. APKとAABの違い
![](/upload/image/column/20200830/acefe5172e954978c16783331e57c5e8.jpg)
Androidアプリについて調べると、APK、AABという言葉をよく耳にすると思います。そこで、ここではこれらの違いと、それぞれのメリット・デメリットを解説していきます。
(1)APK、AABとは
APK(Android Application Package)とは、.apkの拡張子を持った圧縮ファイルのことで、Androidデバイスにインストールすることができるアプリケーションファイルです。これはJavaのJARフォーマットのバリアントのひとつであり、その内部にはアプリがデバイスに正しくインストール、動作するのに必要なコンポーネントが保存されています。 コードから認証まで含まれていますが、インストール後に新しいデータを再度インストールすることが必要な場合もあり、Androidアプリケーションのインストールと配布に使用されています。
AAB(Android App Bundle)は、Googleが公開している、アプリのコンパイル済みコードとリソースがすべて含まれた公開形式です。Google Playでは、App Bundleから各々のデバイス設定に対し最適化したAPKを生成、配信しています。また、動的機能モジュールをアプリプロジェクトに追加しApp Bundleに組み込むことで、後からモジュールをダウンロードするようにリクエストすることができます。 すでにAABを採用しているアプリでは、平均して35%のサイズの節約を達成しています。例えば、TwitterやDuolingoといったアプリがAABを採用しており、Duolingoは56%のサイズ削減を実現しました。
(2)APK
ア. メリット
APKのメリットとしては、Android端末において、Google Playで配信されているアプリだけでなく、インターネット上のWebサイトから直接ファイルをダウンロード、インストールできるという点です。 これにより、より自由に端末を使用することができるようになります。
イ. デメリット
APKのデメリットとしては、Android端末ごとに最適な形が異なっているという点です。これにより、開発者はその端末に適したAPKを作成し配布する必要があり、負担が大きくなっています。また、アプリ上で後から内容を増やすにあたり、あらかじめ大容量のアプリを配信しなければならない点もデメリットとして挙げられます。
(3)AAB
ア. メリット
AABを使うメリットとしては、様々な端末に適したAPKを効率的に配布することができるということが挙げられます。昨今では多種多様なAndroid端末が発売されていますが、今までは開発者がその多くの端末にサポートするために複数のAPKを生成して配布していました。
AABでは、その作業をGoogleが代わりに行うことで、開発者が全てを管理するという手間を減らすことができます。 またAABは、APKに比べて容量が少ないという点がメリットです。動的機能モジュールをアプリプロジェクトに追加してApp Bundleに組み込むことで、後でアプリ側からPlay Core Libraryを使用してモジュールのダウンロードをリクエストすることができます。 さらにこれを圧縮しないネイティブライブラリのサポートと組み合わせることで、ゲームのような容量の多いアプリでも、少ない容量で開発・配信することができるようになります。
イ. デメリット
AABを使うデメリットとしては、AABをビルドする際にバグが発生する可能性があるということです。例えば、リソーステーブルを動的に変更するツールを使用すると、App Bundleから生成されたAPK が予期しない動作をしない場合があります。 また、動的モジュールのマニフェスト内でベースモジュールに存在しないリソースを参照すると、Google PlayでアプリのベースAPKが生成される際に全てのモジュールのマニフェストがベースAPKのマニフェストに統合されてしまい、リソースのリンクが壊れることがあります。 このように、AABをビルドする際にバグが発生することがあるので、使う際には注意する必要があります。
2. 32bitと64bitの違い
![](/upload/image/column/20200830/76919093faec40aafa3c7f428a163d6e.jpg)
次に、32bitと64bitについて解説していきます。Googleは2021年8月1日から、ネイティブコードを含む全てのアプリは新規・更新ともにGoogle Playに公開するにあたり、32bit版に加えて64bit版を提供することが必須であると公表しました。ここでは、bitの基礎知識と、32bit・64bitの違い、移行の背景と今後について解説していきます。
(1)bitとは
bit(binary digit)とは、情報の単位のことです。コンピュータでは、二進数で情報処理を行います。つまり、1bitとは0もしくは1の状態のことであり、32bitはでは2の32乗、64bitは2の64乗の情報を一度に処理できるということを表しています。 このように二進数で情報を表現することは私たちにとっては難しく感じますが、コンピュータにおいては制御を簡易的に行うことができるという利点があります。また、良く耳にするbyteという単位は、8bitを表しています。
パソコン、スマートフォンにおける32bit、64bitの比較を行う際には、これらはCPU(中央演算処理装置)の性能の違いを表しています。そして、これらの性能の違いは、端末のメモリやドライブ(HDDなど)の容量の上限に関係してきます。32bit版のコンピュータでは、メモリ容量は最大でも2〜4GB、HDD容量は約2TBまでしか認識することができません。 さらに、実際にコンピュータのOSで利用できるメモリはさらに少なくなってしまいます。一方、64bit版のコンピュータでは、メモリ容量は8GB〜2TB、HDD容量は2TB以上を認識することができます。 次からは、32bitと64bitのメリット・デメリットについてさらに詳しく解説していきます。
(2)32bitのメリット・デメリット
ア. メリット
32bit版のコンピュータのメリットは、64bit版のコンピュータと比べて安価であるという点です。メモリ容量は2〜4GBですが、専門的な処理を含むソフトを使わないのであれば、32bit版で安価に抑えることができます。
イ. デメリット
32bit版のコンピュータのデメリットは、現在では主流ではないという点です。2007年に発売されたWindows Vistaでは主流は32bit版でしたが、その後2009年に発売されたWindows 7からは64bi版のソフトウェアやデバイスドライブの普及率が増加していき、現在では64bit版が主流になっています。 そのため、32bit版のコンピュータでは最新のソフトウェアやデバイスドライブに対応していない可能性があります。また、処理速度も64bit版に比べるとかなり遅くなります。
(3)64bitのメリット・デメリット
ア. メリット
64bit版のコンピュータのメリットは、メモリ容量やHDD容量、処理速度の性能が32bit版と比べて格段に良いという点です。3Dグラフィックソフトや動画編集など、大容量の処理が必要な場合には、64bit版のコンピュータを使って処理することができます。
また先述の通り、現在では64bit版が主流となっているため、最新のソフトウェアやデバイスドライブの多くが64bit版です。ソフトウェアの中には32bitと64bitの両方に対応しているものもありますが、その場合には64bit版のコンピュータを動作させる方が、処理速度が向上します。 少しでも処理時間を短縮させたい時には64bit版を使う方が良いです。
イ. デメリット
64bit版のコンピュータのデメリットは、メモリの消費量が増えてしまうという点です。同じアプリケーションの処理であっても、32bit版のコンピュータを使用していた時と比べると、64bit版のコンピュータでは消費するメモリが増える場合があります。 これは、64bit版のコンピュータではポインタサイズや他のデータ型のサイズが増大してしまうためです。また、一部のソフトウェアでは同じソフトウェアでも64bit版の方が32bit版よりも処理速度が遅くなってしまう場合もあります。
別のデメリットは、64bit版のコンピュータが32bit版と比べると高価であるという点です。しかし、最近では64bit版のコンピュータが主流になってきたため、安価になってきてこのデメリットは解消しつつあります。
3.背景について
![](/upload/image/column/20200830/b88386dd03d23a32be4c9e07ecf937c1.jpg)
ここまではAPKとAAB、32bitと64bitの基礎知識について解説してきました。ここからは、これらが発展してきた背景について説明していきます。
AABが発展した背景には、多種多様なAndroid端末とアプリケーションが開発されたことがあります。AndroidのアプリケーションのフォーマットとしてAPKが使われてきましたが、多くのAndroid端末が開発されたことにより、それらに対応するために都度仕様を変更する必要が出てきました。
そこでABBでGoogleが様々なAPKを生成することによって、開発者の負担を減らしています。また、端末の普及により、アプリ開発に対する敷居が下がってきました。AABの普及は、アプリ開発の発展と共に行われてきたと言えるでしょう。
64bitが発展した背景には、通信技術の発展があります。半導体に関するムーアの法則によれば、半導体チップの搭載されるトランジスタ数は、1年半から2年で2倍になっていきます。このように、急速な技術の発達により64bitが主流になってきました。今までは理論上でしかなし得なかったことも、技術が追いつくことで実現されつつあるという背景があると言えるでしょう。
4.今後について
最後に、ここまで解説してきたAPKやAAB、32bitや64bitの知識をもとにして、業界の今後の展望について考察していきます。
5G時代の到来により、スマートフォンのような電子端末はより私たちにとって身近なものになります。これによって、高速通信、大容量のアプリケーションがますます普及されることが考えられます。その際に、アプリケーションの容量を少なく済ませたり、開発者の負担を減らしたりするといったさらなる工夫が求められてきます。
AABではこのような問題解決に寄与していましたが、今後はアプリ開発においても自動化される工程がさらに増え、より効率的に開発を進めていくことができるようになると考えられています。また、5G時代では、さらなるbitの向上も期待することができます。高速大容量通信が実現されることで、今までにはないアプリケーションの開発が進められることが期待されています。
参考サイト
・apk スマートフォン用語集
http://touch-slide.jp/glossary/web担当者様向け/apk/
・Android App Bundleについて
https://developer.android.com/guide/app-bundle?hl=ja
・NTT西日本公式ホームページ
https://flets-w.com/user/point-otoku/knowledge/pc-equipment/pc-equipment11.html
・窓の杜
https://forest.watch.impress.co.jp/docs/news/1164945.html