こんにちは。現場で血反吐を吐きながらシステムを安定させてきた、オブザーバビリティの「深淵」を知るエンジニアです。
今日は、多くの開発者が一度は経験する「地獄のミス」――「テストのつもりが、本番のSlackチャンネルにエラー通知を連打してしまった」という悪夢を、Rollbarを使って完全に封じ込めるための鉄則を伝授します。
Rollbarは単なる「エラー収集機」ではありません。正しく設定すれば、あなたのプロダクトの「健全性の羅針盤」になります。さあ、一緒に構築していきましょう。
—
1. なぜ「環境の分離」がオブザーバビリティの第一歩なのか
Rollbarには「Project Access Token」という鍵があります。これを環境ごとに使い分けるのが鉄則です。
初心者がやりがちな失敗は、`.env`ファイルの設定を間違えて、ローカル環境から本番のRollbarプロジェクトへデータを送ってしまうこと。これを防ぐには、「物理的な分離」と「論理的な分離」の両輪が必要です。
—
2. Rollbarの神髄:環境別セットアップの極意
ステップ1:Rollbarプロジェクトの作成(物理的分離)
Rollbarのダッシュボードで、以下の3つのプロジェクトを個別に作成してください。
- `my-app-production`
- `my-app-staging`
- `my-app-development`
なぜ分けるのか?
本番のノイズを減らすためです。開発中の「意図的なエラー」や「デバッグログ」が本番の統計に混ざると、真に優先すべきバグが見えなくなります。
ステップ2:Access Tokenの環境変数化(鉄則)
絶対にコード内にトークンをハードコードしてはいけません。環境変数(`ROLLBAR_ACCESS_TOKEN`)を活用しましょう。
// config/rollbar.js
const Rollbar = require(‘rollbar’);
const rollbar = new Rollbar({
accessToken: process.env.ROLLBAR_ACCESS_TOKEN, // ここが肝!
environment: process.env.NODE_ENV, // ‘production’, ‘staging’ 等を明示
captureUncaught: true,
captureUnhandledRejections: true,
});
module.exports = rollbar;
—
3. 精度高い「HelloWorld」的動作確認
ただエラーを投げるだけでは不十分です。「本当に正しい環境の、正しい場所に届いているか」を確認します。
以下のスクリプトを走らせてみてください。
// test-rollbar.js
const rollbar = require(‘./config/rollbar’);
// 意図的にエラーを発生させる
try {
throw new Error(“これはテストエラーです。環境分離が成功していれば、指定のプロジェクトにだけ飛ぶはずです。”);
} catch (err) {
rollbar.error(err, {
customData: “Sandboxテスト実行中”,
user: “admin-tester”
});
console.log(“エラーを送信しました。Rollbarダッシュボードを確認してください。”);
}
ここがプロの視点:
テストが成功したら、必ずRollbarのダッシュボードで「Environment」項目を見てください。ここに `production` 以外が表示されていれば、あなたの構成は安全です。
—
4. 事故を防ぐための「3つの絶対防衛ライン」
設定ミスを防ぐために、現場では以下の運用を徹底しています。
1. 環境変数のプレフィックス命名:
ローカルの `.env` には `ROLLBAR_ACCESS_TOKEN_DEV` と明示的に書き、本番環境のCI/CD(GitHub ActionsやAWS Systems Manager等)でのみ `ROLLBAR_ACCESS_TOKEN` が注入されるようにします。
2. `environment` フィールドの強制:
Rollbarの初期化設定で `environment` を動的に渡すことで、ダッシュボード上でのフィルタリングを容易にします。
3. 通知チャンネルの徹底分離:
Rollbarダッシュボードの [Settings] > [Notifications] から、Slack等の通知先を環境ごとに完全に分けます。「本番用チャンネル」には本番プロジェクトのトークンしか繋がらないようにする。これが物理的な防波堤になります。
—
まとめ:オブザーバビリティは「安心」を買う行為
Rollbarのセットアップを適切に行うことは、単なる作業ではありません。「自分たちが書いたコードが、今どういう状態にあるか」を、ノイズなしで直視する環境を作ることです。
環境を分け、トークンを管理し、通知を制御する。この地味な作業こそが、後の巨大な障害を未然に防ぐ「最強の守り」になります。
最初から完璧を目指す必要はありません。まずはローカルと本番を分けるところから。これをマスターすれば、毎日のデプロイが少しだけ、心穏やかなものになるはずですよ。
何か詰まったら、いつでも聞いてくださいね。現場の知見を詰め込んで、また回答します。