SODA Engineering Blog
🤹

モバイルアプリの起動時間の監視・改善するためにやったこと

2023/09/08に公開

これはなに?

こんにちは、エンジニアの冨永です!
モバイルアプリを開発していると、コード量や処理が増えることで徐々に起動時間が遅くなることがありますよね。SNKRDUNK でも一時期起動時間が遅くなっていて改善をしたことがあります。
この記事では、その改善をするために取り組んだことをまとめました。

Firebase Performance Monitoring の導入

Firebase Performance Monitoring とは

Firebase Performance Monitoring サービスを使用すると、Apple アプリ、Android アプリ、ウェブアプリのパフォーマンス特性を把握できます。
Performance Monitoring SDK を使用してアプリからパフォーマンス データを収集し、Firebase コンソールでデータのレビューと分析を行います。これにより、アプリのパフォーマンスをどこで改善できるかがリアルタイムでわかり、その情報を使用してパフォーマンスの問題を解決できます。

https://firebase.google.com/docs/perf-mon?hl=ja

なぜ導入したのか

SNKRDUNK は元々 WebView で作られたアプリでした。現在ではモバイルアプリエンジニアが増え、徐々に Flutter への移行をしています。
Flutter 化の最初のリリースをする際に社内のメンバーから起動時間が遅くなっているというフィードバックをいただいたのですが、モバイルアプリエンジニアが目視で起動時間を何回か測定し比較をしたところ明確な差がなく修正を行わなかったことがあります。
その際に目視ではなく、起動時間の数値で計測し監視をできるようにしていきたいと考え、Firebase Performance Monitoring を導入しました。

また、SNKRDUNK は初回起動のみ表示する画面があり起動時に初期化処理が行われています。導入する際に Firebase Performance Monitoring でデフォルトで計測できる起動時間だけでなく、起動から初期化処理完了後に初めて画面が表示されるまでの時間もカスタムコード トレースで計測することにしました。

https://firebase.google.com/docs/perf-mon/custom-code-traces?hl=ja&platform=ios#add-custom-code-traces

起動時間の改善のためにやったこと

原因の特定

導入しアプリを長期で運用していたところ、起動時間が遅いという意見が上がったため Firebase Performance Monitoring を使った調査をしました。
結果、特定のバージョンから起動時間が遅くなっていることがわかったためリリースの差分を確認し原因の特定を行いました。

原因は、起動時に不要な処理が入っていたこと、並列実行できる処理が直列で実行されている箇所があったため修正しました。

結果

結果として、起動時間を 76% 高速化することができました。やったぜ!

再発防止策

また今回は、リリース後にモバイルアプリエンジニアが起動時間が遅くなっていることに気が付かなかったという課題がありました。
現在は Firebase Performance Monitoring のアラート機能を使い、指定の時間を超えたら開発者にアラートが飛ぶようにして起動時間が遅くなったら気がつけるように改善を行いました。

最後に

▼下記ではより詳しく弊社のプロダクト開発組織について紹介してますので 是非ご覧ください!

https://recruit.soda-inc.jp/engineer

またSODAでは特にエンジニアを積極的に採用しておりますので
少しでも弊社に興味を持っていただけましたらご応募お持ちしております!

▼詳しい会社情報はこちらから

https://recruit.soda-inc.jp/

SODA Engineering Blog
SODA Engineering Blog

Discussion