mcpField
C
crash-analytics

crash-analytics

github.com/appeekyテスト・品質2.2k2.4k 回インストール3 週間前に更新
リポジトリ

crash-analytics について

アプリチーム向けのクラッシュ分析スキルです。クラッシュデータの収集、優先順位付け、デバッグ、リリース監視を案内し、クラッシュ率と評価、継続率、App Storeでの表示との関係も扱います。

主な機能

  1. 01クラッシュレポートの設定
  2. 02影響度に基づく優先順位付け
  3. 03レポートの読み取りとデバッグ
  4. 04シンボリケーションの管理
  5. 05リリース後のクラッシュ率監視

活用シーン

  1. 01影響の大きいクラッシュのトリアージ
  2. 02リリース後のクラッシュ回帰調査
  3. 03段階的なアプリリリースの監視
  4. 04クラッシュが評価に与える影響の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/appeeky/aso-skills --skill crash-analytics

インストール後、Claude Code で/crash-analyticsを入力して読み込まれたか確認します。

詳細

クラッシュ分析

アプリのクラッシュのトリアージ、優先順位付け、削減を支援し、クラッシュ率が App Store での見つけやすさや評価に与える影響を理解します。

クラッシュ率が ASO のシグナルとなる理由

  • App Store のランキング — Apple のアルゴリズムは、クラッシュ率の高いアプリの評価を下げます
  • App Store での特集 — クラッシュ率が高いと、編集部による選定の対象外になります
  • 評価 — クラッシュは星 1 つのレビューの最大の原因です
  • 継続率 — 初回セッションでクラッシュすると、Day 1 の継続率が大きく損なわれます

目標: クラッシュのないセッション > 99.5% | クラッシュのないユーザー > 99%

ツール

ツール提供される機能セットアップ
Firebase Crashlyticsクラッシュ、ANR、シンボリケーション済みスタックトレースのリアルタイム表示FirebaseCrashlytics pod/SPM パッケージを追加
App Store Connectクラッシュ率の推移、セッションあたりのクラッシュ数標準搭載、コードは不要
Xcode OrganizerTestFlight と App Store の集約済みクラッシュログXcode → Window → Organizer → Crashes
MetricKitデバイス上の診断情報、ハング率、起動時間iOS 13 以降、自動

おすすめ: Crashlytics(リアルタイムのアラートと検索)+ App Store Connect(推移の検証)

Crashlytics のセットアップ

iOS(Swift)
// AppDelegate or @main App struct
import FirebaseCore
import FirebaseCrashlytics

@main
struct MyApp: App {
    init() {
        FirebaseApp.configure()
        // Crashlytics is auto-initialized
    }
}
非致命的エラー(クラッシュさせずに記録)
// Log a non-fatal error
Crashlytics.crashlytics().record(error: error)

// Log a custom key for debugging context
Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue(screenName, forKey: "current_screen")
Android(Kotlin)
// build.gradle (app)
implementation("com.google.firebase:firebase-crashlytics:18.x.x")

// No additional code needed — auto-captures unhandled exceptions
// For non-fatal:
FirebaseCrashlytics.getInstance().recordException(throwable)

トリアージのフレームワーク

すべてのクラッシュが同じではありません。影響度に基づいて優先順位を付けます。

優先度スコア = クラッシュ頻度 × 影響を受けたユーザー数 × ユーザーセグメントの重み

優先度基準対応時間
P0 — 致命的起動時/チェックアウト時/主要機能でクラッシュする、セッションの 1% 超本日中に修正
P1 — 高よく使われるフローでクラッシュする、セッションの 0.1% 超今回のリリースで修正
P2 — 中エッジケースでクラッシュする、セッションの 0.1% 未満次回のリリースで修正
P3 — 低まれで、操作を妨げないクラッシュ、セッションの 0.01% 未満バックログに追加
Crashlytics ダッシュボードでのトリアージ
  1. 頻度ではなく、「影響」(影響を受けたユニークユーザー数)で並べ替えます
  2. onboarding、checkout、core feature、background、launch でグループ化します
  3. 上位 3~5 件の問題に P0/P1 を割り当てます
  4. 0.5% を超えるユーザーに影響する問題について、Crashlytics で発生率アラートを設定します

クラッシュレポートの読み方

Fatal Exception: com.example.NullPointerException
  at com.example.UserProfileVC.loadData:87
  at com.example.HomeVC.viewDidLoad:45

Keys:
  user_id: 12345
  current_screen: "home"
  app_version: "2.3.1"
  os_version: "iOS 17.3"

デバッグ手順:

  1. Xcode でファイルと行番号(UserProfileVC.swift:87)を開きます
  2. その時点で nil になり得る値を確認します
  3. ユーザーの状況(OS バージョン、デバイス、画面)に合わせて再現します
  4. 修正する前に、失敗するテストを作成します

シンボリケーション

dSYM をアップロードしていれば、Crashlytics が自動的にシンボリケーションします。シンボル化されていないトレースが表示される場合:

# Manually upload dSYMs
./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios MyApp.app.dSYM

Bitcode を有効にしたビルドの場合は、App Store Connect → Activity → Build → dSYMs から dSYM をダウンロードします。

App Store Connect のクラッシュデータ

  • App Store Connect → App Analytics → Crashes — バージョンごとのクラッシュ率の推移
  • リリースごとに、リリース前後のクラッシュ率を比較します
  • 特定のバージョンでの急増は、そのリリースでのリグレッションを示します

クラッシュ率の計算式: クラッシュ数 / セッション数 × 100

影響範囲を最小限に抑えるリリース戦略

段階的リリースを利用して、全面展開の前にクラッシュを検出します。

iOS: App Store Connect → Version → Phased Release(7 日間の展開:1% → 2% → 5% → 10% → 20% → 50% → 100%)

Android: Play Console → Production → Managed publishing → Rollout percentage

ルール: 各段階で 24 時間、Crashlytics を監視します。クラッシュ率が 0.2% を超えて増加した場合は、展開を一時停止します。

クラッシュが原因の星 1 つのレビューへの対応

  1. クラッシュに関連する星 1 つのレビューが投稿されたアプリのバージョンを特定します
  2. クラッシュを修正します
  3. クラッシュに関連する各レビューに返信します:「バージョン X.X で修正しました — アップデートしてください」
  4. アップデートの公開後、rating-prompt-strategy を使って評価を回復します

出力形式

クラッシュ監査レポート
Stability Report — [App Name] v[version] ([period])

Crash-free sessions: [X]%  (target: >99.5%)
Crash-free users:    [X]%  (target: >99%)
Top crash issues:

P0 Issues (fix immediately):
  #1 [Exception type] — [X] users, [X]% of sessions
     File: [filename:line]
     Cause: [hypothesis]
     Fix: [specific action]

P1 Issues (this release):
  #2 [Exception type] — [X] users, [X]% of sessions
     ...

Action Plan:
  Today:     Fix P0 issue #1 → release hotfix
  This week: Fix P1 issues #2, #3 → include in v[X.X]
  Monitoring: Set velocity alert at 0.5% session threshold

関連スキル

  • app-analytics — 分析スタック全体。Crashlytics はその一部です
  • rating-prompt-strategy — クラッシュが原因の星 1 つのレビューを解消した後に評価を回復します
  • review-management — クラッシュに関連するレビューに返信します
  • retention-optimization — Day 1 のクラッシュは継続率の指標を損ないます
  • app-store-featured — クラッシュ率が 2% を超えると、編集部による特集の対象外になります

コメント