この記事はプロジェクトマネージャーなど、非iOSエンジニアの方に知って欲しい
- アプリのクラッシュとは?
- アプリがクラッシュしたことを知るには?
- その仕組みを利用する上で知っておくべきことは?
これらのことを書きます。
アプリのクラッシュとは
アプリを操作中に突然ホーム画面に移動してしまう現象です。
アプリが継続不可となり強制終了する状態です。
ユーザー体験を大きく損なうため避けるべきエラーです。
アプリがクラッシュしたことを知るには?
サーバーサイドのエラーであればログを手に入れることは可能ですが、アプリユーザーにログ提出を依頼するのは現実的ではありません。
Appleが提供している仕組みでクラッシュレポート (アプリがクラッシュしたこと、及びクラッシュした経緯) を収集することは可能ではありますが
全てのクラッシュを知ることはできません。
※補足
https://support.apple.com/ja-jp/HT202100
Firebase Crashlytics
Appleが提供する仕組みでは全てのクラッシュレポートを取得できないため、サードバーティの仕組みを利用することが一般的です。
Firebase Crashlyticsはその代表と言える、広く利用されているサービスです。
クラッシュレポートの収集に関しては無料で利用可能です。
Firebase Crashlyticsを利用する上で知っておくべきことは?
プライバシーポリシーや利用規約
アプリのプライバシーポリシーや利用規約に「Crashlyticsを利用して情報を収集する」旨を記述するか検討する必要があります。
(ほとんどのアプリは明記されています)
AppleのアプリReviewガイドラインにも個人情報収集に関する記載があります。
法務担当とよく相談しておくべき事項です。
dSYMファイルをFirebaseに送信しなければならない
AppStoreを経由したアプリの配信時は、dSYMというファイルをAppStoreConnectからダウンロードしFirebaseへ送信する必要があります。
この操作は新しいバージョンをリリースするたびに毎回必要な作業になります。
この操作を忘れるとクラッシュレポートは収集できません。
コマンドラインツールの利用などが必要なため、エンジニアに相談しましょう。
※補足
ENABLE_BITCODEがデフォルト値のままtrueになっている前提です
それでも検出できないクラッシュがある
アプリがクラッシュレポートを送信するタイミングはクラッシュ後、つぎにアプリを起動したときです。
よって、クラッシュ後もう2度とアプリを起動しなかった場合はクラッシュレポートが収集できません。
また、起動直後に繰り返しクラッシュするような状況でもクラッシュレポートは収集できません。 (ある程度アプリの実装に左右されます)
最後に
アプリのクラッシュは避けるべきですが、完全になくすことは困難です。
クラッシュが起こったことを知り、修正していくことは重要です。
この記事に書いたクラッシュレポート収集に関する事柄を、予めプロジェクト計画に組み込んでおく必要があると私は考えます。