Sentry — その概要、原理、エラー収集

著者: IT Sectr 公開日: 2026-05-29 読了時間: 8 分

Sentryは、リアルタイムのエラートラッキングとアプリケーションパフォーマンス監視プラットフォームであり、開発者に各クラッシュの完全なコンテキストを提供します。Sentry Documentation, 2025によると、Sentryは1日あたり100億以上のイベントを処理し、iOS、Android、Web、バックエンド向けに90以上の言語とフレームワークとの統合を提供しています。

重要ポイント

  • Sentryは、90以上の言語とプラットフォームをサポートするオープンソースのエラートラッキングおよびパフォーマンス監視プラットフォームです。
  • Error events — 完全なスタックトレース、変数値、デバイス状態を含む自動例外収集。
  • Breadcrumbs — エラーに先行するユーザーアクションとシステムイベントのシーケンス。
  • Source maps — 本番環境で読み取り可能なコールスタックを復元するための、最小化されたコードの難読化解除。
  • Performance Tracing — 全サービスにわたる分散トレーシングによるトランザクション実行時間の監視。

開発におけるSentryとは

Sentryは、2012年に設立されたオープンソースのクラッシュレポートおよびパフォーマンス監視プラットフォームです。開発者は、完全な診断コンテキスト(コールスタック、クラッシュ時の変数値、エラー前のユーザーアクションのシーケンス、環境状態)とともにリアルタイムでエラー通知を受け取ることができます。

集約型クラッシュレポートサービス(Google Play Console、App Store Connect)が統計情報と基本的なグラフのみを提供するのとは異なり、Sentryは各イベントを個別に表示し、エラータイプによるグループ化とアプリバージョンによるフィルタリングが可能です。SentryのIssueは、同じスタックトレースを持つイベントのグループであり、何千もの同一クラッシュに埋もれることなく、完全なコンテキストで根本原因の修正に集中できます。

Sentry(2025)によると、Sentry SDK導入後、平均エラー検出時間は30分から30秒に短縮され、自動breadcrumbsと環境コンテキストにより診断時間は60%削減されます。このプラットフォームは、Airbnb、Microsoft、Instagram、PayPalを含む世界中の10万以上の組織で使用されており、毎日数十億のイベントを処理しています。

Sentryのアーキテクチャ: SDK、Relay、イベント処理

Sentryシステムは、アプリケーション側のSDK、Relay(プロキシサーバー)、イベント処理バックエンドの3つの主要コンポーネントで構成されています。Sentry SDKはアプリケーションに埋め込まれるライブラリで、例外をインターセプトし、コンテキストを収集し、JSON/HTTPSプロトコルを介してRelayにイベントを送信します。

Sentry Relay

Relayは、企業のインフラストラクチャにデプロイできる中間サーバーです。SDKからイベントを受信し、ルール(PIIデータ、不要なイベント)に従ってフィルタリングし、バッファリングしてSentry SaaSまたはセルフホストインスタンスに転送します。Relayは低レイテンシを保証します — 一般的なイベント受信時間は500〜1500ミリ秒です。

インバウンドデータフィルター

Sentryは、サーバーに送信する前に不要なイベントを破棄するための組み込みフィルターを提供します:テスト環境からのエラー、古いアプリバージョンからのエラー、同一フィンガープリントの重複イベント。Filteringは、一般的な本番プロジェクトで最大70%のデータ量を節約し、消費コストとデバイス通信チャネルの負荷を削減します。

iOSおよびAndroid向けSentry SDKのセットアップ

モバイルプラットフォーム用のSentry SDKのインストールには5〜10分かかり、依存関係の追加とDSNキーによる初期化が必要です。DSN(Data Source Name)はSentry内のプロジェクトの一意の識別子であり、イベントの送信先を指定します。

Androidでのセットアップ

Androidの場合、SentryはGradleプラグインを通じて自動インストルメンテーションを提供します。プラグインはコンパイル時にバイトコードを変更し、すべてのActivity、Fragment、ネットワークコールにラッパーを追加します。Auto-instrumentationはbuild.gradleの1つのオプションで有効になり、コードを変更せずにアプリケーションライフサイクルからbreadcrumbsを取得できます。

kotlin
import io.sentry.Sentry

class App : Application() {
    override fun onCreate() {
        super.onCreate()
        Sentry.init { options ->
            options.dsn = "https://example@sentry.io/project"
            options.tracesSampleRate = 0.2
            options.enableAutoSessionTracking = true
        }
    }
}

このコードはAndroidアプリケーションでSentry SDKを初期化します。パラメータtracesSampleRate = 0.2はセッションの20%でパフォーマンストレーシングを有効にし、enableAutoSessionTrackingはアプリ起動ごとに自動的にセッションを作成します。

iOSでのセットアップ

iOS用SDKはCocoaPods、Swift Package Manager、Carthageをサポートしています。インストール後、SDKは自動的にNSException、シグナル(SIGABRT、SIGSEGV)、Swiftエラーをインターセプトします。Sentry Cocoa SDKはiOS 12+およびmacOS 10.13+と互換性があり、Swift Concurrency(async/await)とURLSessionの自動インストルメンテーションをサポートしています。

swift
import Sentry

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        SentrySDK.start { options in
            options.dsn = "https://example@sentry.io/project"
            options.enableAutoPerformanceTracing = true
        }
        return true
    }
}

Swiftコードは、自動パフォーマンスメトリクス収集とともにSentry SDKをアクティブ化します。enableAutoPerformanceTracingは、追加コードなしで画面読み込み時間とHTTPリクエストの監視を有効にします。

Breadcrumbsは、エラーに先行するイベントの時系列シーケンスです。Sentryは、ボタン押下、画面遷移、HTTPリクエスト、システム通知に対して自動的にbreadcrumbsを記録します。開発者はビジネスロジック用のカスタムbreadcrumbsを追加できます。

各breadcrumbには、タイムスタンプ、イベントタイプ(navigation、http、ui、error)、カテゴリ、任意のデータが含まれます。エラーが発生すると、過去2〜5分間(設定可能)のすべてのbreadcrumbsがイベントに添付されます。このコンテキストは、スタックトレース自体よりも重要なことがよくあります。開発者は、ユーザーが商品を選択した後に“支払う”をクリックし、その後クラッシュが発生したことを確認できます。デフォルトのbreadcrumbsの最大数は200で、それを超えると最も古いレコードが自動的に削除されます。

kotlin
Sentry.addBreadcrumb(
    Breadcrumb().apply {
        category = "payment"
        message = "User tapped Pay button"
        type = "user"
        level = BreadcrumbLevel.INFO
        data["amount"] = "19.99"
        data["currency"] = "USD"
    }
)

このコードは、支払いシナリオでのユーザーアクションに対するカスタムbreadcrumbを追加します。このアクションの後にエラーが発生した場合、開発者はSentryでユーザーが19.99 USDの金額で“支払う”をクリックしたことを確認でき、支払いフローの問題を迅速に特定できます。

ユーザーコンテキスト

Sentryでは、イベントにユーザー情報(ID、ユーザー名、メール)を添付できます。User contextは同じセッションのすべてのイベントとともに自動的に送信され、ユーザーごとにエラーをグループ化し、特定のバグの影響を受けたユーザー数を特定できます。プライバシーポリシーに従い、アプリケーションのポリシーで許可されていない場合は個人データを送信しないことが重要です。

ソースマップとデバッグシンボル

iOSおよびAndroidの本番ビルドでは、コードは通常、最小化または難読化されています。処理がないと、エラースタックには“UserViewModel.fetchData()”の代わりに“a.b()”のような理解不能な名前が含まれます。Source maps(JavaScript)およびdebug symbols(iOSのdSYM、AndroidのProGuardマッピング)は、読み取り可能なスタックを復元します。

Androidの場合、Sentryはリリースビルド時にGradleプラグインを介してProGuardマッピングファイルを自動的にアップロードします。iOSの場合はdSYMファイルのアップロードが必要です — Sentryはアーカイブ時に自動アップロードするスクリプトを提供しています。デバッグシンボルがないと、Sentryのエラースタックは開発者にとって役に立たないため、そのアップロードプロセスはCI/CDパイプラインの必須ステップであるべきです。

Sentryによるパフォーマンス監視

2020バージョン以降、Sentryにはパフォーマンス監視(分散トレーシングによるトランザクション実行時間メトリクスの収集)が含まれています。SentryのTransactionは測定可能な作業単位です:画面読み込み、APIリクエスト実行、バックグラウンドタスク処理。各トランザクションには子スパンが含まれ、どの特定のステップに最も時間がかかったかを示します。

Sentryのパフォーマンス監視はエラートラッキングと統合されています。トランザクションがエラーで終了した場合、対応するスパンは“error”ステータスでマークされ、開発者はパフォーマンスメトリクスから例外の詳細に移動できます。Trace IDは、すべてのイベント(エラー、トランザクション、breadcrumbs)を単一のセッションにリンクしてエンドツーエンド分析を実現し、単一のSentryダッシュボード内でIssuesタブとPerformanceタブ間のシームレスな遷移を提供します。

Sentry Performance Benchmark(2024)によると、パフォーマンス監視を有効にした(サンプリングレート10%)アプリケーションは、デバイス上で2〜5%多いトラフィックと1〜2%多いCPUリソースを消費します。このオーバーヘッドは、手動プロファイリングと比較してパフォーマンス診断時間が70%削減されることで補われます。

よくある質問

SentryはFirebase Crashlyticsとどう違いますか?

Sentryはより多くのコンテキストを提供します:breadcrumbs、カスタムデータ、エラーとパフォーマンスの関連付け。Firebase Crashlyticsは基本的なクラッシュレポートを備えた無料ツールですが、分散トレーシングやカスタムbreadcrumbsインストルメンテーションの機能はありません。Sentryは深い診断が必要なプロジェクトに適しています。

モバイルアプリケーション向けSentryの料金は?

Sentryは月5,000イベント(エラー+トランザクション)の無料プランを提供しています。有料のTeamプランはユーザー1人あたり月額26ドルで、100,000イベントを含みます。大規模プロジェクト向けには、無制限の容量とカスタム価格のBusinessプランが利用可能です。

Sentryはエラー内の個人データをどのように処理しますか?

Sentryは組み込みのData Scrubbingメカニズムを提供します:保存前にイベントからメール、IPアドレス、クレジットカード、その他のPIIデータを自動的に削除します。スクラビングルールは、正規表現をサポートするWebインターフェースまたはRelay設定で構成できます。機密データがユーザーのデバイスから出ないように、SDKレベルでスクラビングを有効にすることをお勧めします。

Sentryを自分のサーバーで実行できますか?

はい、Sentryには完全にオープンソースのセルフホスト版があります。Self-hosted SentryはDocker Composeを介してデプロイされ、SaaS版のすべての機能を含みます。必要な最小サーバー構成:4 vCPU、16 GB RAM、イベント保存用100 GBのディスク容量。

SentryはSwiftUIとJetpack Composeをサポートしていますか?

はい、Sentry SDKはSwiftUI(iOS 13+)およびJetpack Compose(Android)を完全にサポートしています。SwiftUIの場合、SDKはレンダリング時間の測定とともにNavigationViewとListのトランザクションを自動的に作成します。Jetpack Composeの場合は、CompositionLocalProviderを介してComposablesにSentryコンテキストを渡すカスタム統合が必要です。

まとめ

  • Sentryは、10万以上の組織で使用されているオープンソースのエラートラッキングおよびパフォーマンス監視プラットフォームです。
  • アーキテクチャは、デバイスSDK、Relayプロキシ、セルフホストおよびSaaSデプロイメントをサポートするイベント処理バックエンドで構成されています。
  • Breadcrumbsはエラー前のユーザーアクションの時系列を提供し、複雑なバグの診断に非常に重要です。
  • ソースマップとdSYMは、難読化された本番コードから読み取り可能なコールスタックを復元します。
  • Performance Tracingはエラートラッキングと統合されており、単一のトレースIDを介して時間メトリクスからエラー詳細に移動できます。
  • Auto-instrumentationは、手動コードなしでActivity、ViewController、HTTPリクエスト、アプリケーションライフサイクルをカバーします。
  • 本番アプリケーションにはSentryの導入をお勧めします:無料プランで月5,000イベントをカバーし、中小規模プロジェクトに十分です。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください