【入門編】Sentryの「Commit Author Email」を活用したコードオーナーへの自動アサインとチャット通知の実装裏技 – 運用監視・オブザーバビリティ活用バイブル

こんにちは!プロダクトの成長とともに増えていくエラー通知に、こんなウンザリした経験はありませんか?

「 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で直接メンションを飛ばす仕組みを作る。

この仕組みを導入すると、チームの空気がガラリと変わります。「誰のせいか」を責め立てるためではなく、「一番そのコードを理解している人が、最速で直すためのバトンタッチ」が自動で行われるようになるからです。

これをマスターすれば、毎日のエラー対応という名の宝探しが劇的に楽になり、プロダクトの品質もスピードも確実にワンランク上がりますよ。ぜひ、次のスプリントの合間に試してみてくださいね!

タイトルとURLをコピーしました