エラーの「嵐」を「資産」に変える。Rollbar APIで構築する自動週次サマリーレポート術
こんにちは。システムの「健康診断」を専門にしているエンジニアです。
日々開発をしていると、Rollbarにエラーが山のように積もって、「どれから対処すべきかわからない」「結局、今週何が一番ヤバかったのか?」と途方に暮れることはありませんか?
多くのエンジニアが犯す最大の過ちは、「エラーを放置すること」ではなく「エラーを眺めるだけで終わらせること」です。
今日は、Rollbar APIを叩いて、チームのSlackに「今週の最優先修正リスト」を自動で送りつける、実戦的なスクリプトを授けます。これを導入すれば、月曜の朝から「何が起きたか」を把握するために管理画面を徘徊する必要はなくなります。
—
1. なぜ「自動レポート」が必要なのか?
監視とは、ただ監視することではありません。「意思決定を加速させること」です。
- ノイズの排除: 大量の重複エラーを無視し、影響度の高い課題だけを抽出する。
- 心理的安全性の向上: 「見落としがない」という安心感は、エンジニアのメンタルを救います。
- 改善の文化: 数字が可視化されると、自然とチーム内で「次はこれを潰そう」という建設的な会話が生まれます。
—
2. 準備:Rollbar APIの「鍵」を手に入れる
まずは、APIを叩くための権限(アクセストークン)を取得しましょう。
1. Rollbarのプロジェクト画面を開く。
2. Settings > Project Access Tokens に移動。
3. 「Read-only」権限を持つトークンを発行してください。セキュリティの鉄則は「必要な最小限の権限」です。
—
3. 実装:Pythonで賢く集計する
必要なライブラリは `requests` だけです。環境構築には `pip install requests` をお忘れなく。
このスクリプトは、直近7日間の「未解決(Active)」かつ「発生回数が多い」エラーを抽出します。
import requests
import datetime
import json
設定項目
ACCESS_TOKEN = ‘YOUR_ROLLBAR_READ_TOKEN’
PROJECT_ID = ‘YOUR_PROJECT_ID’
SLACK_WEBHOOK_URL = ‘YOUR_SLACK_WEBHOOK_URL’
def fetch_top_errors():
# 7日前のタイムスタンプを取得
seven_days_ago = int((datetime.datetime.now() – datetime.timedelta(days=7)).timestamp())
url = f”https://api.rollbar.com/api/1/items”
headers = {‘X-Rollbar-Access-Token’: ACCESS_TOKEN}
params = {
‘status’: ‘active’, # 未解決のみに絞るのがコツ
‘min_occurrences’: 5 # 頻発しているものだけを抽出
}
response = requests.get(url, headers=headers, params=params)
return response.json().get(‘result’, {}).get(‘items’, [])
def generate_markdown(items):
report = [“# 毎週のエラーサマリー”, f”集計日: {datetime.date.today()}\n”]
for item in items[:5]: # 上位5件にフォーマット
report.append(f”
{item[‘title’]}”)
report.append(f”- 発生回数: {item[‘occurrence_count’]}”)
report.append(f”- URL: https://rollbar.com/item/{item[‘id’]}\n”)
return “\n”.join(report)
実行
if __name__ == “__main__”:
errors = fetch_top_errors()
report_text = generate_markdown(errors)
# Slackへの送信処理
requests.post(SLACK_WEBHOOK_URL, json={‘text’: report_text})
print(“レポートを送信しました。”)
—
4. 現場で震えるほど役立つ「運用の極意」
このコードを動かすだけなら簡単です。しかし、真のアーキテクトはここから先を考えます。
① 「頻度」ではなく「深刻度」でフィルタリングする
`occurrence_count`(回数)だけで判断すると、些細な例外が上位に来てしまいます。Rollbarのタグ機能を使って「Critical」「Warning」といった重要度を付与し、APIのクエリパラメータに `level` を追加して抽出するようにしてください。
② クラウド関数での定期実行
このスクリプトを自分のPCで動かす必要はありません。GitHub Actionsのスケジュール実行や、AWS Lambda(EventBridge)に載せてしまいましょう。「人間が作業しない」ことこそが、自動化の最大の恩恵です。
③ 「未解決」をゼロにする文化
このレポートが届いたとき、単に「へー」で終わらせてはいけません。チームの定例会議で「このレポートの1位を今週どう潰すか?」を議論する。それが、あなたのシステムを最強にする唯一の道です。
—
最後に:ツールは「手段」に過ぎない
Rollbar APIを使いこなすことは、単なるコーディングではありません。それは、「エラーという未知のノイズを、制御可能な情報に変換する」という、オブザーバビリティの本質に触れる作業です。
最初は小さな一歩で構いません。まずはこのスクリプトを動かし、毎週月曜の朝に「今週倒すべき敵」がSlackに届く体験を味わってください。きっと、あなたの開発ライフが驚くほど快適になるはずです。
何か分からないことがあれば、いつでも聞いてくださいね。応援しています!