Sentryは、リアルタイムのエラートラッキングとアプリケーションパフォーマンス監視プラットフォームであり、開発者に各クラッシュの完全なコンテキストを提供します。Sentry Documentation, 2025によると、Sentryは1日あたり100億以上のイベントを処理し、iOS、Android、Web、バックエンド向けに90以上の言語とフレームワークとの統合を提供しています。
重要ポイント
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(プロキシサーバー)、イベント処理バックエンドの3つの主要コンポーネントで構成されています。Sentry SDKはアプリケーションに埋め込まれるライブラリで、例外をインターセプトし、コンテキストを収集し、JSON/HTTPSプロトコルを介してRelayにイベントを送信します。
Relayは、企業のインフラストラクチャにデプロイできる中間サーバーです。SDKからイベントを受信し、ルール(PIIデータ、不要なイベント)に従ってフィルタリングし、バッファリングしてSentry SaaSまたはセルフホストインスタンスに転送します。Relayは低レイテンシを保証します — 一般的なイベント受信時間は500〜1500ミリ秒です。
Sentryは、サーバーに送信する前に不要なイベントを破棄するための組み込みフィルターを提供します:テスト環境からのエラー、古いアプリバージョンからのエラー、同一フィンガープリントの重複イベント。Filteringは、一般的な本番プロジェクトで最大70%のデータ量を節約し、消費コストとデバイス通信チャネルの負荷を削減します。
モバイルプラットフォーム用のSentry SDKのインストールには5〜10分かかり、依存関係の追加とDSNキーによる初期化が必要です。DSN(Data Source Name)はSentry内のプロジェクトの一意の識別子であり、イベントの送信先を指定します。
Androidの場合、SentryはGradleプラグインを通じて自動インストルメンテーションを提供します。プラグインはコンパイル時にバイトコードを変更し、すべてのActivity、Fragment、ネットワークコールにラッパーを追加します。Auto-instrumentationはbuild.gradleの1つのオプションで有効になり、コードを変更せずにアプリケーションライフサイクルからbreadcrumbsを取得できます。
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用SDKはCocoaPods、Swift Package Manager、Carthageをサポートしています。インストール後、SDKは自動的にNSException、シグナル(SIGABRT、SIGSEGV)、Swiftエラーをインターセプトします。Sentry Cocoa SDKはiOS 12+およびmacOS 10.13+と互換性があり、Swift Concurrency(async/await)とURLSessionの自動インストルメンテーションをサポートしています。
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で、それを超えると最も古いレコードが自動的に削除されます。
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パイプラインの必須ステップであるべきです。
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はより多くのコンテキストを提供します:breadcrumbs、カスタムデータ、エラーとパフォーマンスの関連付け。Firebase Crashlyticsは基本的なクラッシュレポートを備えた無料ツールですが、分散トレーシングやカスタムbreadcrumbsインストルメンテーションの機能はありません。Sentryは深い診断が必要なプロジェクトに適しています。
Sentryは月5,000イベント(エラー+トランザクション)の無料プランを提供しています。有料のTeamプランはユーザー1人あたり月額26ドルで、100,000イベントを含みます。大規模プロジェクト向けには、無制限の容量とカスタム価格のBusinessプランが利用可能です。
Sentryは組み込みのData Scrubbingメカニズムを提供します:保存前にイベントからメール、IPアドレス、クレジットカード、その他のPIIデータを自動的に削除します。スクラビングルールは、正規表現をサポートするWebインターフェースまたはRelay設定で構成できます。機密データがユーザーのデバイスから出ないように、SDKレベルでスクラビングを有効にすることをお勧めします。
はい、Sentryには完全にオープンソースのセルフホスト版があります。Self-hosted SentryはDocker Composeを介してデプロイされ、SaaS版のすべての機能を含みます。必要な最小サーバー構成:4 vCPU、16 GB RAM、イベント保存用100 GBのディスク容量。
はい、Sentry SDKはSwiftUI(iOS 13+)およびJetpack Compose(Android)を完全にサポートしています。SwiftUIの場合、SDKはレンダリング時間の測定とともにNavigationViewとListのトランザクションを自動的に作成します。Jetpack Composeの場合は、CompositionLocalProviderを介してComposablesにSentryコンテキストを渡すカスタム統合が必要です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。