1

モバイルアプリは機能の追加やバグ修正などで頻繁にアップデートされるのが普通です。しかし、この追加アップデートは、場合によってはアプリのデータサイズを肥大化させてしまい、ユーザーの使う端末のストレージ容量をひっ迫させてしまうという大きな問題をはらんでいます。そんな中、GoogleはAndroidアプリのアップデートデータの容量を65%も削減することに成功したと発表しています。

Saving Data: Reducing the size of App Updates by 65% | Android Developers Blog

https://android-developers.googleblog.com/2016/12/saving-data-reducing-the-size-of-app-updates-by-65-percent.html

増大するアプリの容量はスマートフォンなどのモバイル端末を使う上で大きな問題になっており、ユーザー体験を損ねているとGoogleは認識していました。そこでGoogleは2016年7月に、Androidアプリをアップデートするときに使うバイナリ差分のアルゴリズムを「BSDiff」に変更することで、アップデート時のデータサイズを平均47%減らすことに成功したと発表していました。

Improvements for smaller app downloads on Google Play | Android Developers Blog

https://android-developers.googleblog.com/2016/07/improvements-for-smaller-app-downloads.html

Googleはさらにアプリの「データダイエット」に取り組んで、新たに「File-by-File patching」という手法を導入したところ、フルサイズのアプリをダウンロードするのに比べて平均65%もデータサイズを小さくすることに成功したとのこと。さらに、いくつかのケースでは90%もサイズを削減することに成功したそうです。

これはアプリ別のデータ削減率の一覧。Gmailのようにデータ削減量に大きな差がないアプリもあれば、Netflixのように劇的な効果が見られるアプリがあるなど、効果はアプリごとに違うようです。



なお、大幅なデータサイズ縮小に成功したBSDiffを使ったFile-by-File patching手法には、アップデート時に端末のCPUパワーが必要になるという欠点があるともGoogleは述べています。2015年以降の端末であれば圧縮作業に必要な時間はMBあたり数秒ですが、古い性能の劣る端末ではアップデート作業に時間がかかるとのこと。しかし、記事作成時点では、アップデート時間のかかるFile-by-File patching手法は「自動アップデートがON」になっている端末のみ用いられているため、「スマートフォンを使っていない深夜の充電中」というタイミングなどでのみバックグラウンドでアップデートが行われ、実使用上の問題にはならないとGoogleは述べています。

ちなみにFile-by-File patching手法のおかげでGoogleは1日当たりに6ペタバイト(6000TB)のデータ削減に成功したとのこと。ユーザーだけでなくGoogleにもストレージ節約効果をもたらしたFile-by-File patching手法に関するソースコードは、以下のGitHubページで公開されています。

GitHub - andrewhayden/archive-patcher: Automatically exported from code.google.com/p/archive-patcher

https://github.com/andrewhayden/archive-patcher