こんにちは!開発現場の最前線で、日々コードと向き合ってお疲れ様です。
新しいプロジェクトを立ち上げ、エラー追跡ツールである「Rollbar」を意気揚々と導入したものの……。
「あれ? テストエラーを起こしたのに、ダッシュボードに何も表示されない……?」
この瞬間、冷やっと背筋が凍るような焦りを感じた経験はありませんか?
大丈夫、安心してください。これは多くのエンジニアが一度は通る「通過儀礼」のようなものです。
今回は、Rollbarにエラーが届かないときの原因と、それを鮮やかに解決するためのチェックリストを、現場の知見をたっぷり詰め込んで優しく丁寧に解説していきます。これをマスターすれば、今後エラー監視で迷子になることはなくなりますよ。
—
そもそも、Rollbarの役割とは?
本題に入る前に、Rollbarというツールの本質を少しだけお話しさせてください。
多くの人は、「Rollbar=エラーが起きたら通知してくれるチャット連携ツール」くらいに思っています。しかし、それは氷山の一角です。
Rollbarの真の役割は、「本番環境で今何が起きているのかを、ノイズなく、文脈(Context)込みで開発者に即座に伝えるタイムマシン」です。
- どのユーザーの、どのブラウザ/サーバーの、どの行でエラーが起きたのか?
- そのエラーに至る直前に、どんなリクエストやログが流れていたのか?
これらを一瞬で集約してくれるからこそ、私たちは原因究明の迷宮から抜け出せるのです。だからこそ、「エラーが届かない」という状態は、このタイムマシンのエンジンが止まっている致命的な状態だと言えます。
—
【動作確認の基本】まずは正確な「Hello World」を送ろう
原因を探る前に、正しく動く基準(ベースライン)を確認しましょう。
Rollbarが正しくセットアップされているかテストするための、最も確実な「Hello World」のコードを見てみます(今回は一番よく使われるJavaScript/Node.jsを例にします)。
// 1. SDKの読み込み(CDNまたはnpm)
var Rollbar = require(‘rollbar’);
// 2. 最小限の初期化設定
var rollbar = new Rollbar({
accessToken: ‘YOUR_POST_CLIENT_ACCESS_TOKEN’, // ここが命綱です
captureUncaught: true,
captureUnhandledRejections: true
});
try {
// 3. わざとエラーを発生させてみる
nonExistentFunction();
} catch (error) {
// 4. 明示的にRollbarにエラーを送り込む
rollbar.error(“Hello Rollbar! これはテストエラーです。”, error);
}
このコードを実行したとき、Rollbarのダッシュボードにエラーがピコンと表示されればセットアップ成功です。
では、これが表示されないとき、何が起きているのか? 現場でよくある5つの原因と対処法を上から順に見ていきましょう。
—
原因チェックリスト:なぜエラーが届かないのか?
1. アクセストークンの種類・設定ミス(一番多い原因)
Rollbarには、いくつかの種類のアクセストークンが存在します。ここを間違えると、門前払いされます。
- Post Client Item: ブラウザやモバイルアプリなど、クライアントサイドから送信する場合に使う。
- Post Server Item: Node.js、Python、Rubyなどのサーバーサイドから送信する場合に使う。
> 💡 先輩からのアドバイス:
> 「とりあえず全部同じトークンでいっか」とサーバーサイド用のトークンをフロントエンドに埋め込むと、CORSや権限エラーで弾かれることがあります。必ず用途に応じたトークンを使い分けてください。また、トークンをコピーする際に、前後に余分なスペースが入っていないかも要チェックです。
2. 初期化(Initialization)の順序エラー
プログラムは上から下に実行されます。RollbarのSDKを読み込む前にエラーが発生した場合、当然ながらRollbarはそれをキャッチできません。
- アンチパターン: アプリケーションの複雑な初期化処理や、DB接続の途中でエラーが起き、その後にRollbarを初期化している。
- 正しいアプローチ: 「アプリケーションのエントリーポイント(最クソ先頭)」でRollbarを初期化すること。
// 【正解】他のどのモジュールを読み込むよりも先に、最速で初期化する
const rollbar = require(‘./rollbar-init’);
const express = require(‘express’);
const app = express();
// その他のルーターやミドルウェアの読み込み…
3. クライアントサイド(ブラウザ)特有の罠:CORSとAdBlocker
フロントエンドからRollbarにデータを飛ばしている場合、ネットワークタブ(ブラウザの開発者ツール)を覗いてみてください。`api.rollbar.com` へのリクエストが赤くなっていませんか?
- CORS(Cross-Origin Resource Sharing)エラー:
ローカル開発環境(`localhost`など)でテストしている際、稀にセキュリティポリシーに引っかかることがあります。しかし、Rollbarは基本的にCORSを寛容に受け入れる設計にしているため、大抵は初期化時の設定ミスであることが多いです。
- AdBlocker(広告ブロック拡張子)の暴走:
これ、意外と見落としがちですが現場あるあるです。開発者自身のブラウザに入っている uBlock Origin などの広告ブロッカーや、企業のセキュリティソフトが、`rollbar.com` への通信を「トラッカー」と誤認してバッサリ遮断しているケースがあります。
- 対策: テスト時はシークレットモードを使うか、広告ブロッカーを一時停止して確認してください。
4. ネットワーク制限・ファイアウォール(社内NWやDocker環境)
厳格なセキュリティがしかれた社内ネットワークや、クラウドのVPC環境から外に出る通信が制限されている場合、RollbarのサーバーへHTTPリクエスト(通常はポート443)が届いていない可能性があります。
- 確認方法:
サーバーのターミナルから、実際にRollbarへ疎通ができるか確認してみましょう。
curl -H “X-Rollbar-Access-Token: YOUR_TOKEN” https://api.rollbar.com/api/1/status/ping
これで正常なレスポンスが返ってこない場合、プロキシの設定漏れや、ファイアウォール(セキュリティグループ)の出口規制(Egress Rule)を見直す必要があります。
5. 環境(Environment)フィルターによる「除外」
Rollbarのダッシュボードには、開発環境(Development)や本番環境(Production)などのフィルター機能があります。
コード側で `environment: ‘production’` と設定しているのに、ダッシュボードの表示フィルターを「Development」だけに絞っていると、「エラーを送っているのに見えない!」という錯覚に陥ります。
- 対策: ダッシュボードの環境フィルターが「All Environments」になっているか確認するか、コード側の環境設定が意図通りかログに出力して確認してみましょう。
—
トラブルシューティングを極めるための「デバッグモード」
もし上記をすべて確認しても原因がわからないときは、RollbarのSDKにデバッグモードを有効にさせましょう。内部で何が起きているのか、コンソールに詳細なログを出力してくれます。
var rollbar = new Rollbar({
accessToken: ‘YOUR_TOKEN’,
enabled: true,
verbose: true, // ← これを有効化すると、通信の裏側が丸見えになります!
environment: ‘development’
});
コンソールに `Rollbar: sending payload…` や `Rollbar: response received: 200 OK` といったログが出力されるようになれば、SDKは正常に動き始めています。もしここで `401 Unauthorized` が返ってきたら「アクセストークンのミス」、タイムアウトしていれば「ネットワークの制限」と、一発で原因を特定できます。
—
まとめ
いかがでしたでしょうか? Rollbarにエラーが届かないときの主な原因は、以下の5つに集約されます。
1. アクセストークンの種類・コピペミス
2. SDKの初期化順序(読み込みが遅い)
3. ブラウザのAdBlockerやCORSによるブロック
4. ネットワーク・ファイアウォールによる外向き通信の遮断
5. ダッシュボード側の環境(Environment)フィルターの絞り込み
これらを一つずつ、チェッカーのように冷静に潰していけば、必ずエラーはダッシュボードに姿を現します。
エラー監視は、いわばシステムの「健康診断」。最初は設定に少し戸惑うかもしれませんが、一度仕組みを理解してしまえば、あなたの開発ライフを強力に支えてくれる最高の相棒になります。
これをマスターすれば、毎日のデバッグ作業や「本番でバグったらどうしよう」という不安が劇的に楽になりますよ。ぜひ快適なオブザーバビリティライフを手に入れてください!