Bugsnag(公式表記はBugSnag)は、アプリで起きた例外やクラッシュを自動で集め、原因ごとにまとめて通知する米SmartBear社のエラー監視サービスです。この記事では、SDKが送ったイベントがエラー単位にまとまる規則、JavaScriptとExpressへの組み込みコード、ソースマップとリリース情報の送り方を順に示します。後半では、リリースごとの品質を数値で見る安定性スコアの計算方法と、2026年10月時点の料金、Sentryとどちらを選ぶかの判断基準を扱います。
まとめ:Bugsnagを選ぶべきリリース品質重視のチームと見送る条件
Bugsnagの強みは、エラーを「どのリリースで入り込んだか」で追える点と、エラーの無かったセッションの割合を安定性スコアとして出せる点です。モバイルアプリや頻繁にリリースするWebサービスで、「今回の版を全員に広げてよいか」を数字で決めたいチームに向いています。
見送るのは、ログやトレースまで1つの製品に集めたい場合と、無料枠で長く運用したい個人開発です。安定性スコアは上位のPreferredプラン以上でしか使えず、Freeプランのデータ保持は7日に限られます。ログ管理やAIによる原因調査まで欲しいなら、Sentryを先に比べてください。
Bugsnagの仕組み:SDKが例外を送りエラー単位にまとめるまでの流れ
Bugsnagは、アプリに組み込んだSDK(公式の呼び名はnotifier)が例外を検知してBugsnagのサーバーへ送り、ダッシュボードでエラーとして束ねる構成です。モバイル・Web・デスクトップ・サーバーの50以上のプラットフォームに対応しています。
SmartBear傘下のBugSnag:Insight Hub改称後の2026年の名称
Bugsnagは2021年にSmartBear社に買収され、2025年には「SmartBear Insight Hub」への改称が発表されました。ところが2026年10月15日時点では、公式の料金ページもドキュメントも製品名をBugSnagと表記しています。smartbear.comのInsight HubページはBugSnagのサイトへ転送されるため、検索ではBugSnagの名前で情報を探すのが確実です。
利用者側で気をつけるのはドメインです。BugSnag for Enterpriseの案内によると、新規のEnterprise組織はapp.bugsnag.smartbear.com、既存顧客と非Enterpriseプランは従来のapp.bugsnag.comを使います。SDKの多くはAPIキーから送信先を自動で判定するので、旧版のツールを使う場合だけ送信先を手で設定します。
イベントとエラーの違い:最上位スタックフレームでまとめる既定の規則
Bugsnagでは、1回1回の例外の発生を「イベント」、同じ原因とみなしたイベントの束を「エラー」と呼びます。料金はイベント数で決まり、受信箱にはエラーが並ぶという関係です。
Error groupingのドキュメントによると、既定の規則は「最も内側の例外のうち、自分のプロジェクト内で最上位にあるスタックフレームの、エラークラス・ファイル・行番号が同じもの」をまとめる方式です。ライブラリ内部で落ちた例外でも、自社コードのどの行から呼んだかで分かれるため、修正担当を決めやすくなります。
DB停止のように、あちこちの呼び出し元で同じ例外が出る障害は、この規則だと別々のエラーに散らばります。その場合はProject settingsの「Group by error class」でクラス単位にまとめます。グルーピング方式を新しい版に上げる操作は元に戻せず、上げた後に受信したイベントにだけ効く点も覚えておくべきです。
BugsnagをJavaScriptとExpressに組み込む導入手順とコード例
ここからは、BugSnagのアカウントとプロジェクトを作成済みという前提で、Node.jsのWebアプリに組み込む手順を示します。APIキーはプロジェクト設定の画面で確認できます。
@bugsnag/js 9.1系のインストールとExpressミドルウェアの登録
JavaScript integration guideによると、@bugsnag/jsはNode.jsとブラウザのどちらで動いているかを自動で判別する共通パッケージです。npmレジストリ上の最新版は2026年10月9日公開の9.1.0で、ドキュメントの記載(v9.0.0)より一歩進んでいます。TypeScriptの型定義は同梱で、4.5以上が前提です。
npm install --save @bugsnag/js @bugsnag/plugin-express
Express integration guideの構成に、リリース追跡用のappVersionとreleaseStageを足した初期化例です。
import express from 'express'
import Bugsnag from '@bugsnag/js'
import BugsnagPluginExpress from '@bugsnag/plugin-express'
Bugsnag.start({
apiKey: process.env.BUGSNAG_API_KEY,
plugins: [BugsnagPluginExpress],
appVersion: process.env.APP_VERSION, // 例: 4.10.0
releaseStage: process.env.NODE_ENV, // 未設定ならproduction
enabledReleaseStages: ['production', 'staging'],
redactedKeys: ['password', 'authorization', 'cardNumber']
})
const app = express()
const middleware = Bugsnag.getPlugin('express')
app.use(middleware.requestHandler) // 必ず最初のミドルウェアにする
/* ここに他のミドルウェアとルートを書く */
app.use(middleware.errorHandler) // 他のエラーハンドラより前に置く
app.listen(3000)
requestHandlerは、自分より後ろに登録したミドルウェアの例外しか拾えません。順番を間違えると、エラーが1件も届かない状態になります。redactedKeysは既定で「password」を含むキーを伏せますが、自分で指定すると既定値を置き換えるため、上の例のようにpasswordも並べ直します。
try-catchで握りつぶした例外をBugsnag.notifyで送るコード
未処理の例外とPromiseの未処理リジェクトは、初期化だけで自動送信されます。手で送る必要があるのは、catchで処理を続ける代わりに記録だけは残したい例外です。
try {
await chargeCustomer(order)
} catch (e) {
Bugsnag.notify(e, (event) => {
event.severity = 'warning'
event.addMetadata('order', { id: order.id, plan: order.plan })
event.setUser(String(order.customerId))
})
return res.status(502).json({ message: '決済処理に失敗しました' })
}
addMetadataで付けた値はダッシュボードのタブとして表示され、エラーを絞り込む条件にも使えます。ユーザーIDを付けておくと、「このエラーに当たった利用者は何人か」が分かります。修正の優先順位を決めるときの根拠です。ブラウザ版では利用者のIPアドレスも既定で記録されるため、保存したくない場合はcollectUserIp: falseを指定します。
BugSnag CLIでソースマップを送り本番のスタックトレースを読める形に戻す手順
本番のJavaScriptは圧縮されているため、そのままではスタックトレースが「main.min.js の1行目」のような表示になります。Source mapsのドキュメントで推奨されているのは、ソースマップをBugsnagへアップロードする方法です。Node.jsはアップロードしか選べず、ブラウザ向けだけは公開サーバーに置いたソースマップを取りに行く方式も使えます。
upload jsのコマンドリファレンスに沿った、ビルド後に実行する例です。CLIはnpmの@bugsnag/cli(2026年10月8日時点で3.10.7)として入れられます。
npx @bugsnag/cli upload js \
--api-key=$BUGSNAG_API_KEY \
--version-name=4.10.0 \
--base-url="https://example.com/assets" \
./dist
--base-urlには圧縮済みファイルを配信しているURLを指定します。スタックトレース上のパスとソースマップを対応付ける値なので、CDNのパスと1文字でも違うと元のコードに戻りません。--version-nameを省くとpackage.jsonの版が使われるため、SDK側のappVersionと同じ値になっているかを最初に確かめます。ディレクトリを指定せずにプロジェクト直下で実行すると、node_modules内のソースマップまで送られる点にも注意が要ります。
リリース単位の追跡:create-buildと安定性スコアで品質を判断する運用
Bugsnagを入れる価値の半分は、エラーをリリースと結び付けて見られることにあります。Releases & versionsによると、SDKに版とリリースステージを設定するだけで、ダッシュボードを版で絞り込めるようになり、タイムラインに版の切り替わりが表示されます。
create-buildでコミットと版を結び付けるCIへの組み込み
リリースにコミットや差分へのリンクを付けるには、デプロイ時にビルド情報を送ります。create-buildのリファレンスでは、Gitリポジトリの最上位で実行すれば、最初のリモートURLとコミットハッシュが自動で使われると説明しています。
# デプロイ直後にCIから実行する
npx @bugsnag/cli create-build \
--api-key=$BUGSNAG_API_KEY \
--version-name=4.10.0 \
--release-stage=production \
--builder-name="ci" \
--metadata="pipeline=$CI_PIPELINE_ID"
サーバーアプリのように同時に1つの版しか動かない構成なら、--auto-assign-releaseを付けると、SDKに版を設定しなくても以降のイベントがこのビルドに紐付きます。ただしデプロイの前後に届いたイベントは、通知のタイミング次第で違う版に入ることがあります。正確に追いたいなら、SDKのappVersionを設定する方法を優先してください。
セッション単位の安定性スコアと目標値・危険値の2段階しきい値
Stabilityのドキュメントによると、安定性スコアはエラーの無かったセッションの割合です。セッションの区切りはプラットフォームで異なり、ブラウザはページの読み込み、サーバーはリクエスト1件の処理、モバイルはアプリの起動か30秒以上バックグラウンドにいた後の復帰を1セッションと数えます。
しきい値は、目標とする「Target stability」と、下回ったらバグ修正を優先する「Critical stability」の2段階で設定します。モバイルでは利用者単位のスコアも選べますが、サーバー側のプロジェクトでは使えません。
落とし穴は2つです。スヌーズや無視に設定したエラーも、未処理であればスコアを下げます。逆に、レート制限で受信されなかったイベントは数えられないのに、セッションは数え続けるため、障害の最中ほどスコアが実際より高く出ます。リリース可否の判断にスコアを使うなら、レート制限の通知もあわせて有効にしておくべきです。
Bugsnagの料金:Free・Select・Preferredのイベント数課金と保持期間
Bugsnagの料金は、ユーザー数ではなく、月間のイベント数と性能監視のスパン数で決まります。以下は2026年10月15日に公式の料金ページで確認した値で、スパンは最少の月100万件を選んだときの月額です。ページ自体に時点の表記はありません。
月50,000イベントで23ドル:プラン別の上限と月額の比較表
| プラン | 月額(月払い) | 月額(年払い) | 主な条件 |
|---|---|---|---|
| Free | 0ドル | 0ドル | 1ユーザー・7,500イベント・保持7日 |
| Select 50k | 23ドル | 20ドル | ユーザー無制限・保持60日 |
| Select 300k | 75ドル | 65ドル | イベント数だけ増やした場合 |
| Preferred 100k | 39ドル | 33ドル | 安定性スコア・SAML SSO |
| Preferred 1M | 480ドル | 399ドル | 自動の優先度付け |
| Enterprise | 要問い合わせ | 要問い合わせ | オンプレミス版・個別保持期間 |
Selectは月300万イベント、Preferredも月300万イベントまでの段階が用意されています。表で分かるとおり、安定性スコアを使うにはPreferredが前提で、同じ月10万件前後でもSelectより割高になります。リリース判断にスコアを使う予定があるなら、最初からPreferredで見積もってください。14日間の無料トライアルがあり、AWS Marketplace経由でAWSの請求にまとめる契約も選べます。
イベント上限を超えないための送信量の設定:maxEventsほか3項目
イベント課金で費用が読めなくなる原因の多くは、開発環境の例外と、同じ画面で繰り返し出る例外です。Configuration optionsには、送信量を抑える設定が用意されています。
enabledReleaseStages:既定では全ステージを送る。productionとstagingだけに絞ると、手元の開発環境のエラーで枠を消費しないmaxEvents:ブラウザ限定。1ページで送るイベントの上限で、既定は10件、最大100件maxBreadcrumbs:イベントに添える操作履歴の件数。既定25件、最大100件で、課金ではなく1件あたりの情報量に効く
ブラウザのmaxEventsはURLがpushStateで変わるたびに数え直されます。SPAで画面遷移が多い場合、1人の利用者が数十件を送ることもあるため、無料枠の7,500件は小さなサービスでも数日で尽きる可能性があります。
BugsnagとSentryの選び分け:リリース品質管理とログ・AI調査で判断する基準
Bugsnagの比較相手として最も挙がるのがSentryです。Sentry側の機能と導入方法はSentryの機能・料金・使い方にまとめています。
無料枠・有料の入口価格・保持期間の比較表:5,000件と7,500件の差
| 観点 | Bugsnag | Sentry |
|---|---|---|
| 無料枠 | 7,500イベント・1ユーザー | 5,000エラー・1ユーザー |
| 無料枠の保持 | 7日 | 30日 |
| 有料の入口 | Select 年払い月20ドル(5万件) | Team 年払い月26ドル(5万件) |
| 有料の保持 | 60日 | 最大90日 |
| ログ・AI調査 | なし | ログ5GB込み・Seerは別料金 |
Sentryの値はSentryの料金ページの年払い価格で、5万件を超えた分は1件あたり0.0003625ドルからの従量課金です。入口の単価はBugsnagがやや安く、保持期間とログの同梱ではSentryが勝ります。OpenTelemetryの計装と組み合わせる構成なら、SentryとOpenTelemetryを併用する3経路のほうが選択肢は広がります。
Bugsnagを採用すべき条件:リリースごとの安定性で出荷を判断する体制
採用するのは、iOS・Android・Webを並行してリリースし、「新しい版のクラッシュ率が前の版より悪化していないか」を毎回確かめているチームです。安定性スコアの目標値と危険値を決めておけば、段階リリースを広げるか止めるかを、担当者の感覚でなく数字で決められます。
エラー監視の導入だけでなく、リリース判定のルールや障害時の連絡体制まで含めて整えたい場合は、保守運用・内製化支援として、ツール選定から運用ルールづくりまで相談を受けています。
Bugsnagを見送る場面:ログ統合が必要な構成とAPMを既に入れている環境
見送るのは、エラーとログとトレースを1つの画面で突き合わせたい構成です。Bugsnagの性能監視は分散トレーシングまで扱いますが、ログ管理は持たないため、障害調査では別のログ基盤と行き来することになります。
すでにDatadogやNew RelicでAPMを計装している環境も、エラー追跡のためだけにBugsnagを足す理由は薄くなります。Datadogを使っているなら、Datadog Error Trackingの実装手順のように既存の計装の上でエラーを束ねるのが近道です。APMとエラー監視の役割の違いはAPMの仕組みと導入判断、製品の横並びの比較はオブザーバビリティツールの選定軸で整理しています。
Bugsnagの導入前によくある質問:無料プラン・名称・対応言語
Bugsnagの検討でよく出る質問に、2026年10月時点の公式ドキュメントと料金ページをもとに答えます。
Bugsnagは無料で使えますか?
Freeプランがあり、1ユーザーで月7,500イベントと月100万スパンまで無料です。ただしデータの保持は7日間で、チームで使うにはユーザー数の制限がネックになります。個人の検証やリリース前の試用には十分ですが、本番運用ではユーザー無制限で保持60日のSelect以上を前提に考えてください。有料プランは14日間の無料トライアルで試せます。
BugsnagとInsight Hubは別の製品ですか?
同じ製品です。SmartBear社は2025年にBugsnagをInsight Hubへ改称すると発表しましたが、2026年10月15日時点の公式サイトとドキュメントでは製品名がBugSnagに戻っており、Insight Hubのページも転送されます。オープンソースのSDKは一貫して@bugsnagの名前で配布されているため、コードを書き換える必要はありません。
Bugsnagはどの言語やフレームワークに対応していますか?
公式には50以上のプラットフォームに対応しています。JavaScriptではReact・Angular・Vue・Svelte・Express・Koa・Honoなどの専用ガイドがあり、AWS LambdaやCloudflare Workers向けの手順も用意された構成です。モバイルはAndroid・iOS・React Native・Flutter・Unityに対応し、CLIでdSYMやProGuardのマッピングファイルもアップロードできます。
Bugsnagの安定性スコアはどのプランで使えますか?
PreferredプランとEnterpriseプランで使えます。Selectプランではリリースごとのエラー一覧は見られますが、エラーの無かったセッションの割合としてのスコアと、目標値・危険値の設定は含まれません。月10万イベントのPreferredは月払いで39ドル、年払いで月33ドルです。
Bugsnagに個人情報を送らないようにするにはどうすればよいですか?
SDKのredactedKeysに伏せたいキー名を並べると、送信前に値が[REDACTED]に置き換わります。ブラウザ版は利用者のIPアドレスを既定で記録するので、不要ならcollectUserIp: falseを指定します。受信後に個人情報を検出して保存前に消す機能まで欲しい場合は、Enterpriseプランが対象です。
関連記事
- Sentryとは?エラー監視・APMの機能・料金・使い方を解説:Bugsnagと最も比べられるエラー監視サービスの機能と料金。
- Datadog Error Tracking実装手順:イシュー集約とソースマップ登録、APM/RUM/Logs連携:APMを入れた環境でエラーを束ねる別の選択肢。
- オブザーバビリティツール比較|選定軸と課金モデル・体制別の選び方【2026年8月時点】:監視製品を課金モデルと体制で選ぶ判断軸。
- APM(アプリケーション性能監視)とは|仕組み・3種の監視データ・OpenTelemetry計装と導入判断を実装目線で解説:エラー監視とAPMの守備範囲の違い。
- オブザーバビリティ(可観測性)とは?監視・モニタリング・APMとの違いと使い分けを解説:エラー監視を含む監視領域全体の位置づけ。