Bugsnagは、本番環境で完全な診断コンテキストとともにバグを自動的に検出、グループ化、優先順位付けするアプリケーションエラーモニタリングおよび安定性プラットフォームです。Bugsnag Documentation、2025によると、BugsnagはAirbnb、Lyft、Slack、PagerDutyを含む7,000以上のクライアント向けに月間60億イベントを処理しています。
重要ポイント
Bugsnagは、2013年に設立され2019年にSmartBearに買収されたアプリケーション安定性モニタリングプラットフォームです。Bugsnagと競合他社の主な違いは、単なるエラー数ではなく、安定性を主要なプロダクトメトリクスとして重視している点です。このプラットフォームは、iOS、Android、React Native、Flutter、ウェブ、バックエンドサービス向けの統合ダッシュボードを提供します。
Bugsnagの各エラーには、コンテキストに基づいて自動的に重大度(critical、warning、info)が評価されます:クラッシュが発生したか、支払い機能が影響を受けたか、多くのユーザーでエラーが再発しているか。チームはバグのリストだけでなく、ビジネスへの影響を示す優先順位付けされたバックログを確認できます。
SmartBear(2024)によると、Bugsnagを使用するチームは、自動重複グループ化と完全なイベントコンテキストにより、平均解決時間を40%削減しています。このプラットフォームは、Slack、PagerDuty、Jira、GitHub、GitLabと統合し、エラーから自動的にタスクを作成します。
Stability ScoreはBugsnagの主要メトリクスであり、エラーなしで完了したセッションの割合を示します。この値は、一定期間における総セッション数に対するクラッシュフリーセッションの比率として計算されます。99.9%のスコアは、1,000セッション中1つにエラーが含まれることを意味します。
Stability Scoreのしきい値はCI/CDと統合されています:新しいバージョンをデプロイした後にスコアが設定されたしきい値(例:99.5%)を下回った場合、Bugsnagは自動的にリリースをブロックするか、Slackにクリティカルアラートを送信します。Release health dashboardは、アプリケーションの各バージョンのスコアの推移を表示し、特定の変更が安定性に与える影響を追跡できます。
Bugsnagは、3つの重大度レベルによる自動エラー分類アルゴリズムを使用します。Critical — アプリケーションのクラッシュ、5%以上のユーザーに影響する支払いシナリオのエラー。Warning — 個別の機能に影響する致命的でないエラー(handled exceptions)。Info — ログ、低優先度の警告。このアプローチは、何百もの通知によって本当に深刻な問題に集中できなくなるアラート疲れを防ぎます。
| 重大度 | 例 | アクション |
|---|---|---|
| Critical | アプリ起動時のクラッシュ | 即時通知 |
| Warning | アバター読み込みエラー | 次のスプリントのJiraタスク |
| Info | QRスキャンのタイムアウト | 通知なしのログ記録 |
Bugsnag SDKのインストールは5分で完了します:依存関係の追加とプロジェクトのAPIキーによる初期化。Bugsnag Android SDKはKotlinとJavaをサポートし、Java例外、ANR、シグナルによるネイティブ(C/C++)エラーを自動的にインターセプトします。
SDKはGradle経由で追加され、Application.onCreateで初期化されます。Bugsnagはデバイス情報(モデル、OSバージョン、空きメモリ、バッテリーレベル)を自動的に収集します。Auto-notifyはデフォルトで有効になっており、すべての未処理例外をBugsnagサーバーに送信します。
import com.bugsnag.android.Bugsnag
import com.bugsnag.android.Configuration
class App : Application() {
override fun onCreate() {
super.onCreate()
val config = Configuration("YOUR_API_KEY")
config.autoTrackSessions = true
config.launchDurationMillis = 5_000
Bugsnag.start(this, config)
}
}
このコードは、自動セッショントラッキングと最大5秒の起動時間でBugsnag SDKを初期化します。この時間内にアプリケーションが起動しない場合、Bugsnagは警告として「slow launch」イベントを記録します。
Bugsnag iOS SDKはSwiftとObjective-Cをサポートし、NSException、Mach例外(SIGABRT、SIGSEGV)、オペレーティングシステムシグナルをインターセプトします。SDKはiOS 11+およびSwiftUIと互換性があり、すべてのUIイベント(タップ、遷移、ジェスチャー)に対して自動的にbreadcrumbsを作成します。
import Bugsnag
class AppDelegate: UIResponder, UIApplicationDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Bugsnag.start(withApiKey: "YOUR_API_KEY")
// 追加設定
return true
}
}
Swiftコードは最小限の設定でBugsnagを起動します。すべての未処理例外とクラッシュは、完全なデバイスコンテキストとコールスタックとともに自動的にBugsnagダッシュボードに送信されます。
BugsnagのBreadcrumbsは、エラーに先行するイベントの構造化ログです。各breadcrumbには、タイムスタンプ、タイプ(navigation、request、state、error、manual)、および任意のメタデータが含まれます。Bugsnagは、iOSおよびAndroidのUIイベント、アプリケーションの状態変更(background、foreground)、ネットワークリクエストに対するbreadcrumbsを自動的に記録します。
デベロッパーはビジネスロジック用のカスタムbreadcrumbsを追加できます:「ユーザーがカートに商品を追加しました」、「注文作成リクエストが送信されました」。エラーが発生すると、過去30秒間のすべてのbreadcrumbsがイベントに添付されます。Bugsnagは「state」もサポートしています — すべてのセッションエラーとともに送信される任意のデータ辞書です。
Bugsnag.leaveBreadcrumb(
message = "Order created",
metadata = mapOf(
"order_id" to "ORD-12345",
"total" to "49.99"
),
type = BreadcrumbType.STATE
)
Bugsnag.setExtraData(
"user_tier", "premium"
)
このコードは、注文作成に関するbreadcrumbを残し、ユーザーのプランに関する追加情報を設定します。このセッションでエラーが発生すると、Bugsnagは注文番号とユーザータイプのコンテキストを添付します。
Bugsnagはセッションを自動的にカウントします — アプリケーションの起動ごとに新しいセッションと見なされます。エラーのあるセッションの総セッションに対する比率がStability Scoreを形成します。Session trackingは料金に影響します:Bugsnagはエラー量ではなく、追跡されたセッション数に基づいてライセンスされるため、Sentryや競合他社のイベント単位の料金モデルとは異なります。
Release trackingは、各エラーを特定のアプリケーションバージョンおよびリポジトリコミットにリンクするメカニズムです。BugsnagはInfo.plist(iOS)またはbuild.gradle(Android)からバージョンを自動的に検出し、ダッシュボードにバージョン別のエラー数を表示します。これにより、問題が最新のリリースによって引き起こされたかどうかを即座に確認できます。
バージョン2.4.1のデプロイ後にクリティカルエラーの数が2.4.0と比較して3倍に増加した場合、Bugsnagはこのバージョンを「不安定」としてマークし、アラートを送信します。CI/CD統合により、Stability Scoreがしきい値を下回った場合、ステージングやプロダクションへのビルドプロモーションをブロックできます。Jenkins、GitHub Actions、GitLab CIのプラグインがパイプラインに安定性メトリクスを渡します。
Bugsnag Stability Benchmark(2024)によると、モバイルアプリケーションのエラーの68%は新しいバージョンによってもたらされ、長年存在するバグではありません。Release trackingにより、デプロイ後の回帰検出時間が数時間から数分に短縮されます。
エラーモニタリング市場には3つの主要プレイヤーがあります:Bugsnag、Sentry、Firebase Crashlytics。Bugsnagは、セッションベースの料金モデル(イベント単位ではなく)、Stability Scoreへの焦点、自動重大度優先順位付けで際立っています。Sentryは、分散トレーシングによるより深いパフォーマンスモニタリングを提供し、オープンソースです。Crashlyticsは、Firebaseエコシステムに統合された基本的な機能を備えた無料のソリューションです。
| 特徴 | Bugsnag | Sentry | Crashlytics |
|---|---|---|---|
| 価格(開始) | 5,000セッションまで無料 | 5,000イベントまで無料 | 無料 |
| パフォーマンスモニタリング | 制限あり | 分散トレーシング対応の完全版 | なし |
| Flutter向けSDK | あり | あり | 制限あり |
| セルフホステッド | なし | あり(オープンソース) | なし |
| Stability Score | あり(主要メトリクス) | なし | なし |
ツールの選択は優先順位によって異なります:主要なメトリクスが本番環境でのアプリケーション安定性である場合、Bugsnagが最も直感的なメトリクスを提供します。分散トレーシングによる深いパフォーマンス分析が必要な場合 — Sentry。Googleエコシステムとの統合による無料の基本モニタリングの場合 — Crashlytics。
よくある質問
アルゴリズムは3つの要素を考慮します:例外のタイプ(クラッシュまたはhandled)、影響を受けるユーザー数、シナリオコンテキスト。Critical重大度は、メイン画面または支払いフローでエラーが発生し、1%以上のユーザーに影響を与えた場合に割り当てられます。デベロッパーはAPIまたはSDK設定を通じて手動で重大度を上書きできます。
はい、BugsnagはReact Native(新しいアーキテクチャ対応)とFlutter(Dart 3.x互換)向けのSDKを提供しています。両方のSDKは、ナビゲーション、ネットワークリクエスト、アプリケーション状態の自動breadcrumbs収集と、ビジネスロジック用のカスタムインストルメンテーションをサポートしています。
はい、BugsnagはJiraとの双方向統合を提供しています:新しいエラーが自動的にJiraでタスクを作成でき、Jiraでタスクを閉じるとBugsnagでエラーが「解決済み」ステータスに移行します。Jira CloudとJira Server(Jira Connect経由)がサポートされています。
Bugsnag SDKは、リリースビルドでAPK/IPAサイズに約1.5MBを追加します。これはSentry(約2MB)より少ないですが、Firebase Crashlytics(約0.8MB)より多いです。コンパイルを高速化するためにデバッグビルドからSDKを削除し、テストとリリース設定のみに残すことをお勧めします。
はい、Bugsnagはバックエンド言語をサポートしています:Ruby、Python、Node.js、Java、.NET、Go、PHP。バックエンドエラーはモバイルエラーと同じダッシュボードにサービスごとにグループ化されて表示されます。これにより、エンドツーエンドの安定性を追跡できます:APIがダウンした場合、デベロッパーは問題がクライアント側かサーバー側かを確認できます。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。