HIKKIE

PC / スマートフォン / ガジェット好きのひきこもりライフログBlog

Google Playでのアプリのインストールの最適化とは丨Googleはアプリ インストールを最適化しています

Google はアプリ インストールを最適化しています

今日、Pixel 5a (5G)でふとGoogle Play ストアを開いたらGoogle はアプリ インストールを最適化していますというガイド表示が出た。

ようするに、アプリのインストール工程をデバイスに最適化するため、テレメトリを収集するよということであるが、アプリ インストールの最適化はなぜ必要なのだろうか。

最近はAndroid スマートフォンにおけるストレージ(主記憶装置)がeMMCからeUFSに切り替わってきていて、インプット/アウトプット(I/O)はかなり高速化した。シーケンシャルのリード/ライトだけでなく、マルチプル コマンドキューなどの実装によってマルチタスクも高速となり、一昔前散々にぶっ叩かれたAndroidモッサリ問題はある程度改善している。

その一方で、これ以上の高速化を目指すとなると発熱という副作用がどうしても避けられないものがある。デスクトップや家庭用ゲーム機ではヒートシンクなどの実装で超高速ストレージを実現しているが、モバイルの世界ではなかなかそうもいかないものがあり、これはハードウェアの方の高速化ではなくアプリのインストール(記憶装置への書き込み)を最適化することで高速化を図ろうということなんだろう。

hikkie.hatenablog.jp

仕組み

アプリのインストールの最適化を有効にすると、インストール後に初めてアプリを起動したときにアプリのどの部分を使用したかを、Googleが認識できるようになる。一定数のユーザーに利用されることで、Googleはアプリのインストール、起動、実行を高速化するための最適化を行うことができるとしている。

アプリのどの部分を使用したかをGoogleが認識することでどうしてインストールや起動、実行が高速になるの?という疑問が生まれるが、メモリ上にキャッシュするデータの優先度を最適化したり、起動時にすぐにはいらないデータの読み込み優先度を落とし、インストール時に記憶装置への書き込みを最適化することによってストレージの断片化を低減することで高速化というか、ストレージの長期利用時、また空き容量が少なくなってしまっている時の低速化を抑える仕組みということだと思う。(多分。)

NANDフラッシュメモリにおける断片化

まず断片化とはなにかというと、本来ひとまとめに記憶されるべきデータが、ストレージ上に分散してばらばらに記憶されてしまうこと。データの書き込みを繰り返しストレージ上の断片化が進むと、アドレス演算などのオーバーヘッドが生じてストレージI/Oが低速化する。そこで、定期的にデフラグとか、トリムという最適化処理を行って断片化を解消し、アクセス速度を維持する必要がある。古のAndroid スマートフォンは最適化のためのトリムコマンドを実装していなかったので長期間の使用でどんどん低速化していった。

一般に、SSDやスマートフォンの組み込みフラッシュメモリについては断片化を解消するためのデフラグという作業は不要ということにされているが、実際は断片化の影響で低速化する。詳しく解説するととてもとても長くなるので省略してしまうが、記憶装置の方が遅くなっていなくてもシステムソフトウェアのファイルシステムが断片化による影響を受けるからである。

トリムコマンドによって一定の改善は見込めるが、それはあくまで一定の改善であって本来的にはデフラグをしてしまった方が高速になる。だが、それは書き込み総量が制限されるNANDフラッシュメモリでやると寿命を大きく削ることになる。だから誰もがSSDやスマートフォンでデフラグは必要ない(絶対やるな)と言っている。

TBW(総書き込み容量)を突破しなくても、実際には酸化膜が劣化していて、高温環境下に放置されるなどのユーザーの不始末で書き込まれたデータが揮発するような致命的なダメージを受ける可能性が向上していく。

改善するためにはファイルシステムをよりNANDフラッシュメモリに最適化されたものに切り替えるという手法が一番で、実際にサムスンとかファーウェイが取り組んで成果を上げている。

で、Google Playでのアプリインストール最適化の話に戻るが、アプリを実行するときに真っ先に読み込む部位を特定することによってストレージ上での書き込み順を調整し、断片化の影響をさらに低減する(したい)機能なのではないかということだ。

アプリのインストールの最適化を無効にする

Googleはこの機能で、名前やメールアドレスなどの個人情報が収集されることは一切ないとしているが、テレメトリを勝手に収集されるのが嫌なら、機能を無効にすることも出来る。

ユーザーアイコンをタップ
全般 ドロップダウン
トグルスイッチで無効化

Play ストアアプリを起動し、右上、検索バー上のユーザーアイコンをタップし、設定を開く。全般をドロップダウンして、アプリのインストールの最適化のトグルをタップし、グレーアウトすれば無効となる。

Googleのヘルプページではハンバーガーメニューでガイドされているが、これって昔のUIではないだろうか。

テレメトリとは

ソフトウェアやアプリケーションがパフォーマンスの改善や品質向上を目的として収集するユーザーの利用状況データのこと。プロセスは自動化されていて、Googleやデバイスベンダーのコントロールセンターなどにデータは送信、収集されている。

通常、収集されたデータから個人を特定するのは難しいとされているが、最近では個人情報扱いされ、送信の無効化や削除が出来るようにする動きがみられる。

参考・関連リンク

Google Play でのアプリのインストールの最適化 - Google Play ヘルプ

Privacy Policy – Privacy & Terms – Google

管理人のおすすめ記事

hikkie.hatenablog.jp