こんにちは!プロダクトの成長とともに増えていくエラー通知に、こんなウンザリした経験はありませんか?
「 Slackの全体チャンネルに、毎日何十件もエラーが流れてくる……」
「 誰も自分宛てだと思わないから、結局誰も直さない。気づけば放置の山……」
夜中に飛んできた謎のエラー、朝起きたら「これ、一体誰のコードが原因なんだっけ?」とgit logの海をさまよう――。エンジニアなら誰もが通る、あの不毛な時間です。
もし、「エラーが発生した瞬間、そのコードを書いた本人のSlackに直接メンション付きで通知が飛ぶ」としたらどうでしょう?しかも、修正すべきファイルの行数まで添えて。
今回は、SentryとGitHub連携、そしてカスタムWebhooksを巧みに組み合わせて、エラーの発見から担当者へのアサインまでを完全自動化する「現場で使える裏技」を、優しく丁寧に解説していきます。これをマスターすれば、あなたのチームのデバッグ体験は劇的に変わりますよ!
—
1. エラートラッキングの神髄とSentryの役割
そもそも、なぜ「エラーログ」ではなく「Sentry(エラートラッキング)」が必要なのでしょうか?
ログ収集ツール(DatadogやCloudWatchなど)が「システム全体で何が起きたか(What)」を時系列で追うためのものだとしたら、Sentryは「コードのどこで、なぜバグったか(Where & Why)」をピンポイントで突き止めるための外科手術用メスです。
Sentryは、エラーが発生した瞬間の以下の情報を完璧にパッケージングしてくれます。
- 正確なスタックトレース(どのファイルの何行目か)
- コンテキスト情報(ユーザーID、リクエストパラメータ、OSやブラウザ)
- リリース情報(どのバージョンのデプロイでそのバグが混入したか)
この強力なデータを、単なる「アラートの山」で終わらせず、「開発者へのダイレクトなアクション」に変えるのが今回のテーマです。
—
2. 基礎セットアップ:GitHubとSentryを繋ぐ
自動アサインの魔法を実現するための第一歩は、Sentryに「どのコードが、誰によって書かれたか」を教えることです。ここではGitHub連携の基本をサクッと整えましょう。
Step 1: SentryとGitHubのインテグレーション
1. Sentryのダッシュボード右上の歯車アイコン(Settings)を開きます。
2. Integrations > GitHub を選択し、「Install」をクリックします。
3. あなたのGitHub組織(Organization)へのアクセスを許可します。これで、Sentryがリポジトリのコードやコミット履歴にアクセスできるようになります。
Step 2: リポジトリの紐付けとコミットトラッキング
Sentryのプロジェクト設定から、対象のGitHubリポジトリを接続します。
これを行うことで、Sentryは単なるエラーの記録係から、「コードの執筆者を特定できる知的エージェント」へと進化します。Sentryはエラーのスタックトレースからファイル名と行数を特定し、背後にあるGitのコミット履歴を逆引きして、「この行を書いたのは誰か(Commit Author Email)」を割り出せるようになるのです。
—
3. 動作確認:HelloWorld的エラー検知のテスト
まずは、正しくSentryがエラーをキャッチし、コミット情報と紐づくかテストしてみましょう。簡単なNode.js(またはお好みの言語)のサンプルで試します。
// app.js
import as Sentry from “@sentry/node”;
Sentry.init({
dsn: “YOUR_SENTRY_DSN_HERE”,
tracesSampleRate: 1.0,
});
// わざとエラーを発生させる関数
function triggerTheBug() {
const user = null;
// ここでTypeErrorが発生する
console.log(user.name);
}
try {
triggerTheBug();
} catch (e) {
Sentry.captureException(e);
}
このコードをGitHubにプッシュし、デプロイ(またはローカル実行)してエラーをわざと発生させます。
Sentryのダッシュボードを見てみてください。エラー詳細画面の「Culprit(原因)」や「Tags」に、コミットハッシュや作成者の情報が表示されていれば、基礎セットアップは大成功です!
—
4. 現場の裏技:Commit Author Emailを活用した自動アサインとSlack通知
ここからが本番です。Sentryの標準機能だけでは、「誰に通知するか」の細かいルーティングやSlackへのメンション付き通知が物足りない場合があります。そこで、Sentryの「Webhooks」と、中継地点となる「AWS Lambda / 簡易スクリプト」(またはZapierやMakeなどのiPaaS)を組み合わせて、究極のワークフローを作ります。
ワークフローの全体像
1. Sentryでエラー発生。
2. スタックトレースから Commit Author Email を自動特定。
3. Sentryの Webhooks が発火し、そのメールアドレスを含むJSONペイロードを送信。
4. 受け取ったサーバー(またはiPaaS)が、「Sentryのメールアドレス」と「SlackのメンバーID」をマッピング。
5. 該当する開発者に「@yamadaさん、あなたの書いたコードでエラーが出ていますよ!」とSlackで直接メンション通知!
Sentry Webhooksの設定手順
1. Sentryのプロジェクト設定から Webhooks を選択します。
2. エンドポイントURL(自作のLambdaやiPaaSのWebhook URL)を入力します。
3. 通知を受け取るイベントとして `issue:created`(新しい課題が作成された時) にチェックを入れます。
送信されてくるJSONの構造(イメージ)
Sentryから飛んでくるデータの中には、親切にも以下のようなコミット情報が含まれています(一部簡略化)。
{
“action”: “created”,
“data”: {
“issue”: {
“id”: “123456789”,
“title”: “TypeError: Cannot read properties of null (reading ‘name’)”,
“culprit”: “triggerTheBug (app.js)”,
“url”: “https://sentry.io/organizations/…/issues/123456789/”
},
“event”: {
“entries”: [
{
“type”: “exception”,
“values”: [
{
“type”: “TypeError”,
“value”: “Cannot read properties of null (reading ‘name’)”,
“stacktrace”: {
“frames”: [
{
“filename”: “app.js”,
“lineNo”: 14,
“authorEmail”: “yamada@example.com” // ←このメールアドレスがキモ!
}
]
}
}
]
}
]
}
}
}
この `authorEmail`(`yamada@example.com`)を抽出し、社内Slackのメールアドレス検索APIなどと突合させれば、完璧なメンション通知が完成します。
—
5. まとめと、明日からの開発へ向けて
今回は、Sentryの「Commit Author Email」を起点とした、コードオーナーへの自動アサインとチャット通知の裏技を解説しました。
- SentryのGitHub連携で、エラーとコードの執筆者を紐付ける。
- Webhooksを活用して、エラー発生時にリアルタイムでデータを外部へ飛ばす。
- 担当者のメールアドレスをキーにして、Slackで直接メンションを飛ばす仕組みを作る。
この仕組みを導入すると、チームの空気がガラリと変わります。「誰のせいか」を責め立てるためではなく、「一番そのコードを理解している人が、最速で直すためのバトンタッチ」が自動で行われるようになるからです。
これをマスターすれば、毎日のエラー対応という名の宝探しが劇的に楽になり、プロダクトの品質もスピードも確実にワンランク上がりますよ。ぜひ、次のスプリントの合間に試してみてくださいね!