Firebase Crashlytics vs Sentry 比較

Googleが提供する無料・軽量なクラッシュトラッキングSDK

VS
Sentry

エラートラッキング+パフォーマンス+セッションリプレイを一つのプラットフォームに統合、セルフホストも可能

12 分で読了Services

クイック結論

明確な基準:「アプリがいつクラッシュしたか」だけを知りたく、予算がゼロならCrashlytics一択です—導入は数分で終わり、請求リスクもありません。エラー・パフォーマンス・セッションリプレイを一つのダッシュボードで管理したい、あるいは法令上データを自社インフラに保持する必要があるならSentryの守備範囲がそのコストに見合います。多くのチームは両方を併用していますが、その道を選ぶなら二重SDKがアプリサイズと起動時間に与える影響を自分のビルドで必ず測定してください。

Firebase CrashlyticsSentry
結論をすべて読む

スコア比較

グラフを読み込み中...

詳細スコア

詳細スコア: Firebase Crashlytics と Sentry — カテゴリー別10点満点のスコア
カテゴリーFirebase CrashlyticsSentry
パフォーマンス
7/10
9/10
学習のしやすさ
9/10
6/10
エコシステム
6/10
9/10
コミュニティ
8/10
8/10
求人市場
6/10
7/10
将来性
7/10
8/10

長所と短所

Firebase Crashlytics

長所

  • 完全無料—使用量やイベント数に応じた課金なし
  • Firebaseコンソール内の他の製品(Analytics、Performance、Remote Config)と一つのダッシュボードに統合
  • 導入は数分で完了、最小限の設定で済む
  • Android/iOS/Flutter/Unity/NDK向けの公式SDKサポート
  • クラッシュフリーユーザー率とバージョン単位のベロシティアラートを標準搭載
  • BigQueryエクスポートで生データへのアクセスが可能
  • Google Play ConsoleとAndroid側でネイティブに統合

短所

  • 独立したパフォーマンス/トレーシングモジュールはなく、クラッシュ検知に特化
  • セッションリプレイやユーザーフロー記録機能はない
  • セルフホストの選択肢はなく、データは常にGoogleのインフラに置かれる
  • アラートルールは5つの固定イベントタイプ(新規fatal/non-fatal、regressed、trending、increasing-velocity)に限定されており、Sentryのようにカスタムの閾値や条件は定義できない

最適な用途

クラッシュ追跡だけで十分な、予算ゼロのチームすでにFirebase(Auth、Firestore、Remote Config)を利用しているプロジェクトMVPや開発初期段階のモバイルアプリGoogle Play/App Storeのクラッシュフリー指標を追跡したいチーム

Sentry

長所

  • Tracing、Profiling、Session Replay、Logs、Feature Flagsを一つのダッシュボードに統合
  • セルフホストオプションによりデータを完全に自社インフラ内に留められる
  • GitHubスター4万4千超(2026年9月)を誇る大規模なオープンソースコミュニティ
  • sentry-cocoa/sentry-react-native/sentry-dartは活発な週次リリースペース
  • dSYM/ソースマップのアップロードはsentry-cli + Xcode Build Phaseで自動化できる
  • 米国またはEU(フランクフルト)のデータ保存リージョンを選択できる
  • Slack連携(`/sentry link`、alert action、テスト通知)を標準搭載
  • ProGuard/R8マッピングの自動化が公式に文書化されている

短所

  • クォータ超過分はエラーごとに課金—急激なエラー急増が請求額を急速に膨らませる可能性がある
  • Crashlyticsに比べて設定項目が多い(マッピング/dSYMの手順が必要)
  • セルフホスト版ではSpike ProtectionやSeer AI/MLなど一部のSaaS専用機能が利用できない
  • データ保存リージョン(US/EU)は組織作成後に変更できない
  • 無料のDeveloperプランは1ユーザーに限定される

最適な用途

エラー+パフォーマンス+セッションリプレイを一つのダッシュボードで管理したいチーム法令上データを自社インフラに保持する必要がある(セルフホストを求める)企業バックエンド+モバイル+Webを同じオブザーバビリティプラットフォームに統合したいチームSDKの活発な更新と迅速なバグ修正ペースを重視するチーム

コード比較

Firebase Crashlytics
// Firebase Crashlytics - Android (Kotlin) セットアップとnon-fatalロギング
// build.gradle.kts (app)
// plugins { id("com.google.gms.google-services"); id("com.google.firebase.crashlytics") }
// dependencies { implementation(platform("com.google.firebase:firebase-bom:34.19.0"))
//                implementation("com.google.firebase:firebase-crashlytics") }

import com.google.firebase.Firebase
import com.google.firebase.crashlytics.crashlytics
import com.google.firebase.crashlytics.setCustomKeys

class CheckoutViewModel {

    private val crashlytics = Firebase.crashlytics

    fun onPaymentStarted(orderId: String, amount: Double) {
        // Breadcrumb: クラッシュ発生時にどのステップにいたか把握するため
        crashlytics.log("payment_started order=$orderId amount=$amount")
        crashlytics.setCustomKeys {
            key("order_id", orderId)
            key("payment_amount", amount)
            key("user_tier", "premium")
        }
    }

    fun onPaymentFailed(error: Throwable, orderId: String) {
        // アプリをクラッシュさせずにエラーを記録(non-fatal)
        crashlytics.setCustomKey("order_id", orderId)
        crashlytics.recordException(error)
    }

    fun identifyUser(userId: String) {
        crashlytics.setUserId(userId)
    }
}

// AndroidManifest.xml: firebase_crashlytics_collection_enabled=false(同意取得後に有効化)
// Runtime: Firebase.crashlytics.setCrashlyticsCollectionEnabled(true)
Sentry
// Sentry - iOS (Swift): エラー+パフォーマンス+セッションリプレイを単一SDKで
// Package.swift / SPM: https://github.com/getsentry/sentry-cocoa

import Sentry

func configureSentry() {
    SentrySDK.start { options in
        options.dsn = "https://<public-key>@o<org-id>.ingest.sentry.io/<project-id>"
        options.debug = false

        // パフォーマンストレーシング
        options.tracesSampleRate = 0.2

        // UI Profiling (sentry-cocoa 9.x): trace のライフサイクルに連動
        options.configureProfiling = {
            $0.lifecycle = .trace
            $0.sessionSampleRate = 1.0
        }

        // Session Replay: クラッシュ前の画面遷移を記録
        options.sessionReplay.onErrorSampleRate = 1.0
        options.sessionReplay.sessionSampleRate = 0.1

        // エラー発生時にスクリーンショット+ビュー階層を添付
        options.attachScreenshot = true
        options.attachViewHierarchy = true
    }
}

// Breadcrumb + カスタムコンテキスト + non-fatalキャプチャ
func onPaymentFailed(_ error: Error, orderId: String) {
    let crumb = Breadcrumb(level: .error, category: "payment")
    crumb.message = "payment_failed order=\(orderId)"
    SentrySDK.addBreadcrumb(crumb)

    SentrySDK.configureScope { scope in
        scope.setTag(value: orderId, key: "order_id")
        scope.setUser(User(userId: "u_123"))
    }
    SentrySDK.capture(error: error)
}

// dSYM自動アップロード (Xcode Run Script Build Phase):
// sentry-cli debug-files upload --include-sources "$DWARF_DSYM_FOLDER_PATH"

結論

明確な基準:「アプリがいつクラッシュしたか」だけを知りたく、予算がゼロならCrashlytics一択です—導入は数分で終わり、請求リスクもありません。エラー・パフォーマンス・セッションリプレイを一つのダッシュボードで管理したい、あるいは法令上データを自社インフラに保持する必要があるならSentryの守備範囲がそのコストに見合います。多くのチームは両方を併用していますが、その道を選ぶなら二重SDKがアプリサイズと起動時間に与える影響を自分のビルドで必ず測定してください。

無料相談を受ける
FAQ

よくある質問

クラッシュの追跡だけで十分で予算をゼロに抑えたいならCrashlytics、エラー追跡に加えてパフォーマンストレーシングやセッションリプレイ、必要に応じてセルフホストも求めるチームにはSentryが適しています。どちらも導入が簡単なSDKを提供しており、判断は守備範囲と予算の問題に帰着します。

関連ブログ記事

すべての記事を見る
すべての比較