;

Ichizokuは日本唯一のSentry公認販売業者です。
日本語のドキュメント、動画、サポート窓口で日本のお客様のSentry活用を支援します。

【Size Analysis(Early Access)】モバイルアプリサイズを可視化・最適化

Article by: Max TopolskyNico Hinderling

 

 

これは「man.jpg」です。

A headshot of a man smiling in front of a yellow background.

なぜか、トヨタの iOS アプリにはこのファイルが含まれており、そのサイズは無視できない 14.6MB でした。都合よく、発覚から数か月後に man.jpg は削除されましたが。

本記事は、man.jpg をアプリに含めるべきだったかどうか、あるいは man.jpg をどれだけ小さくできたか(MB)について論じるものではありません。本記事の主題は、今日から Sentry の Size Analysis を使えば、すべての開発者がアプリサイズの問題を簡単に検出し、修正できるということ(さらに、人気のオープンソースアプリのサイズを 30% 削減する方法 😉)です。

 

 

Size Analysis(現在 Early Access)紹介

Size Analysis は、モバイルアプリのサイズを監視し、削減するための機能です。

Sentry が Emerge Tools を買収したことを覚えている方もいるかもしれません。Size Analysis は Emerge の最初の製品であり、SpotifySquareTinder などのチームがアプリをできる限り軽量化してリリースするために活用していました。

そして今、Sentry アカウントを持っているすべての開発者が、同じツールを利用できるようになりました。

 

 

Size Analysis 使い方

Size Analysis は、React Native や Flutter などのクロスプラットフォームフレームワークを利用している場合も含め、あらゆる iOS / Android アプリで動作します。やることはただ一つ、モバイルのビルドをアップロードするだけです。

CI と連携すれば、変更のたびにアプリサイズを解析し、ビルド間で比較して、サイズ削減の機会を発見できます。

ここでは、オープンソースの Firefox iOS アプリで Size Analysis が何をできるかを見てみましょう。必要なのは、アプリをビルドして Sentry にアップロードすることだけです。以下は v145.0 のビルド解析です。ツリーマップは、アプリのサイズがどこから来ているかを正確に可視化します。

A treemap of the Firefox iOS app, showing the file size of the different parts of the app.

ツリーマップを見ると、本番(prod)に含まれるはずのない test-fixtures ノードがはっきり確認できます。意図しないリソースが本番に紛れ込む事例は想像以上に多く、ツリーマップはビルドに実際に何が入っているかを素早く見渡すための有効な可視化を提供します。

A treemap that is visualizing the size of test-fixtures using Size Analysis in Sentry
The insights section of Size Analysis, showing potential file size savings and what to delete to achieve that
 
ハイライトされたインサイトについては、削減を適用するためのスクリプトを同梱しています(近いうちに Seer が自動化してくれるかもしれません 👀)。詳細は下記ドキュメントにリンクしていますが、要点は次のとおりです。
  • バイナリシンボルの削除:これらのシンボルは、クラッシュレポートのようなスタックトレースをシンボリケートするために使われます。クラッシュレポータに dSYM をアップロードしている場合、本番(prod)ではシンボルは不要です。

 

提供スクリプトを基にすれば、Firefox のサイズを約 50MB 削減できます。

いずれの場合でも、Size Analysis の Build Comparison が 2 つのビルド間で何が変わったのかを正確に可視化します。以下は、test-fixtures あり/なしのビルド差分です。

The build comparison feature of Size Analysis, showing what has changed in the app size between versions, what items changed in comparison.
The emergetools.hackernews app analyzed by Sentry in CI, showing the size differences between after introducing a new PR

 

私たちは、Firefox の 2 つの問題(test-fixturesデバッグシンボル)について PR を提出しました。結果として、この 2 件の PR により 合計 67MB(全インストールサイズの約 30%) の削減に成功しました。

ユーザーによっては、14.6MB の man.jpg は気にならないかもしれません。67MB でさえも、そう感じない人もいるでしょう。ですが、一部のユーザーにとっては確実に重要です。

たとえば、Wi-Fi に接続していない外出先で頻繁にアプリをダウンロードするユーザーがいる場合、アプリサイズがモバイル通信のダウンロード制限を超えていれば、Uber のようにインストール率が大幅に低下します。また、古いデバイスや通信環境の悪い地域にアプリを配布している場合は、1バイトごとに意味があります。

アプリサイズの肥大化(bloat)は、インストール率やコンバージョンの低下を招き、アンインストールの主な理由にもなり、さらには技術的な副作用を引き起こすこともあります。

明確にしておくと、ここで述べた修正は Firefox チームの問題ではなく、ツールの問題です。Emerge Tools の公式 X(旧 Twitter)を見たことがある方ならわかるように、多くのアプリが同様の課題に直面しています。既存のアプリサイズ計測ツールは限られており、開発者が気づかぬうちにアプリを肥大化させてしまうことは容易なのです。

 
 

Size Analysis 始め方

Size Analysis は現在、Sentry ユーザー向けに Early Access で提供中です。今後も継続的に改良していきます。利用を開始するには、次の手順を実施してください。

 

Size Analysis 以外にも、Emerge のプロダクトをすでに 2 つオープンソース化しています。

  1. Launch Booster:iOS アプリの起動を高速化
  2. Reaper:実行時解析で未使用コード(デッドコード)を検出

 

この分野については今後もアップデートを予定しています。Size Analysis に関する最新情報をぜひチェックしてください。

 

 

Original Page: Monitor and reduce your mobile app size with Size Analysis (Early Access)

 




IchizokuはSentryと提携し、日本でSentry製品の導入支援、テクニカルサポート、ベストプラクティスの共有を行なっています。Ichizokuが提供するSentryの日本語サイトについてはこちらをご覧ください。またご導入についての相談はこちらのフォームからお気軽にお問い合わせください。

 

シェアする

Recent Posts