現場のエンジニアへ:Rollbarの「Person Data」を使いこなし、法規制とデバッグ効率を両立させる極意
優秀なエンジニアは、障害発生時に「どのユーザーが」「どんな状態で」エラーを踏んだかを瞬時に把握する。しかし、GDPRやCCPAが叫ばれる現代において、無防備にメールアドレスやIPをRollbarに流し込むのは「技術的負債」どころか「法的リスク」だ。
今日は、Rollbarの`person`オブジェクトをハックし、プライバシーを守りつつ、デバッグ速度を最大化する設計術を伝授する。
—
1. なぜ「Person Data」の設計が重要なのか?
Rollbarの`person`データは、エラーとユーザーを紐づける強力な武器だ。だが、安易に `email` や `real_name` をそのまま送るな。個人特定情報(PII)をプレーンテキストでログ基盤に置くのは、セキュリティ・コンプライアンスの観点から自爆行為に近い。
鉄則:識別子は「ハッシュ化」し、コンテキストは「属性」で分離せよ。
—
2. 実践:GDPR準拠のPerson Data実装術
クライアントサイドから直接PIIを投げず、サーバーサイドで適切にマスキングする。これがプロのやり方だ。
推奨される設定コード(Node.js / Express例)
const Rollbar = require(‘rollbar’);
const crypto = require(‘crypto’);
// PIIを不可逆的にハッシュ化するユーティリティ
const anonymize = (email) => {
return crypto.createHmac(‘sha256’, process.env.ROLLBAR_PII_SALT)
.update(email)
.digest(‘hex’);
};
const rollbar = new Rollbar({
accessToken: process.env.ROLLBAR_ACCESS_TOKEN,
// 重要な設定:PIIの自動フィルタリングを有効化する
scrubFields: [‘email’, ‘password’, ‘credit_card’, ‘ssn’],
});
// ミドルウェアでPersonデータを注入
app.use((req, res, next) => {
if (req.user) {
req.rollbar.configure({
payload: {
person: {
id: anonymize(req.user.email), // メアドそのものではなくハッシュ値をIDに
username: req.user.username, // ユーザー名は可読性のため残すケースもあるが要検討
scope: ‘premium_user’ // 属性(属性で絞り込むのが賢い)
}
}
});
}
next();
});
ポイント: `scrubFields` を設定し、自動的にマスクされるキーを定義しておくこと。これにより、開発者が誤ってPIIを `extra` データに含めて送信しても、Rollbar側で弾くことができる。
—
3. 開発スピードを劇的に上げる「神」設定と運用ルール
A. チーム共有の「設定ファイルベストプラクティス」
`rollbar.config.json` をルートに置き、環境変数を注入するスタイルを推奨する。
{
“environment”: “production”,
“enabled”: true,
“captureUncaught”: true,
“captureUnhandledRejections”: true,
“payload”: {
“client”: {
“javascript”: {
“source_map_enabled”: true,
“code_version”: “1.0.2” // デプロイごとにCIで更新せよ
}
}
},
“scrubFields”: [“auth_token”, “password”, “secret”]
}
B. チーム開発の生産性を底上げする「3つのルール」
1. `code_version` は自動付与せよ: CI/CDパイプライン(GitHub Actions等)から環境変数で `ROLLBAR_CODE_VERSION` を注入し、ソースマップの不整合を皆無にせよ。
2. 「Telemetry」を活用せよ: エラー発生直前のログ(breadcrumbs)を丁寧に仕込め。エラーの「瞬間」だけでは追えないバグも、前後の操作フローがあれば解決時間は半分になる。
3. Notificationの「ノイズ除去」: 全てのエラーをSlackに流すな。特定の `severity`(critical/error)のみ通知し、`warning` はRollbarのダッシュボードで週次確認する運用に切り替えろ。
—
4. 知る人ぞ知る「時短」テクニック
- キーボードショートカット: RollbarのDashboard画面で `?` を押せ。隠されたコマンドメニューが開き、プロジェクト間の移動や検索を爆速化できる。
- 神プラグイン「Rollbar CLI」: `rollbar-cli` を使い、デプロイ通知を自動化せよ。デプロイ直後のエラー急増を検知し、即座にロールバックする判断基準になる。
- Error Itemの「Assigned To」自動化: Webhookを利用し、GitHubのIssueと連動させよ。エラーが発生した瞬間、該当コードのオーナーに自動でIssueが飛ぶ仕組みを作るのが、真のDevOpsだ。
—
テックリードからのメッセージ
オブザーバビリティとは、単なる「監視」ではない。「何が起きているか」を解像度高く理解し、迷いなくコードを修正できる状態を作り出すことだ。
今日紹介した設定は、単なる規約ではなく、君たちのエンジニアリングを「法的リスク」から守り、「修正スピード」という武器を与えるための防具である。明日から、Rollbarの `person` データを見直し、安全かつ高速なデバッグ環境をチームに浸透させてほしい。
さあ、ログに振り回されるのはやめよう。ログを支配する側になるんだ。