エンジニアの皆さん、こんにちは。開発現場の「静寂」は時に危険です。誰が何をマージしたのか、どのIssueが放置されているのか。これらをSlackやDiscordの通知で可視化することは、単なる「便利機能」ではなく、チームの生存戦略です。
今日は、GitHub Webhooksを使いこなし、情報のノイズを消し去り、必要な時だけ「価値ある通知」が届くハイレベルなワークフローの構築術を伝授します。
—
1. Webhookとは何か?:開発の「耳」を育てる
Webhookを一言で言えば、「GitHubが外部へ飛ばす、イベント発生の叫び声」です。
通常、チャットツールからGitHubを見に行くのは「プル型」ですが、WebhookはGitHub側からチャットツールへ「プッシュ型」で情報を投げつけます。これにより、あなたは画面を監視する必要から解放されます。
2. 【HelloWorld】まずはWebhookを飛ばしてみる
複雑なツールは不要です。まずはGitHubから「Webhookがどう飛んでくるか」を体験しましょう。
1. Slack/Discord側で「Webhook URL」を取得する:
- Slackなら「Incoming Webhooks」、Discordなら「Webhook URL」を発行してください。
2. GitHub側で設定する:
- 対象のリポジトリ > Settings > Webhooks > Add webhook をクリック。
- `Payload URL` に先ほど取得したURLを貼り付けます。
- `Content type` は `application/json` を選択。
3. イベントの選択:
- まずは `Let me select individual events` を選び、`Pull requests` にチェックを入れてください。
4. Send me everything!
- 設定を保存すると、GitHubから即座に「Ping」というテストイベントが送信されます。チャットツールに反応があれば、あなたのリポジトリは外部と繋がったことになります。
—
3. 「通知ノイズ」を制するものが開発を制する
ここからが本題です。Webhookをそのまま流すと、通知の嵐でチームが疲弊します。「通知疲れ」こそが開発の敵です。ここをフィルタリングするテクニックを紹介します。
A. ミドルウェア(サーバーレス関数)を挟む重要性
直接Slack/DiscordのURLを貼るのではなく、AWS LambdaやGitHub Actionsを「プロキシ」として挟むのがプロの流儀です。
- なぜ挟むのか?
- 通知の「フォーマット」を美しく整形できる(カード型UIなど)。
- 特定の条件(例:マージされたPRが `main` ブランチのみ、など)で通知を捨てるロジックを組める。
B. GitHub Actionsによる「賢い通知」への移行
実は、Webhookを外部サーバーで受けるよりも、GitHub Actions内で通知を完結させる方が、「コードベースで通知ルールを管理できる」という点で圧倒的に優れています。
以下の `.github/workflows/notify.yml` を見てください。
name: Notify Slack on PR Merge
on:
pull_request:
types: [closed] # PRが閉じられた時のみ発火
jobs:
notify:
if: github.event.pull_request.merged == true # マージされた時のみ実行
runs-on: ubuntu-latest
steps:
- name: Send Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
# 重要なのはここ:通知内容を極限まで絞り込む
SLACK_MESSAGE: “🚀 PR #${{ github.event.pull_request.number }} がマージされました!”
SLACK_TITLE: “マージ完了のお知らせ”
SLACK_COLOR: “#36a64f” # 成功時は緑で視覚的に区別
4. 現場で震えるほど役立つ「通知の極意」
1. 「失敗」を強調せよ: 成功通知は流し読みされがちですが、失敗(CIのテスト落ちなど)は赤色(`danger`)で強調し、メンションを飛ばすルールにしてください。
2. 「リンク」を必ず含めよ: 通知を見た後、即座に該当のコードやIssueに飛べるURLを必ず本文に入れてください。
3. チームの認知負荷を下げる: 「誰が」「何を」したのかを一目で分かるテンプレートに統一しましょう。
最後に:自動化は「愛」です
通知をカスタマイズするということは、「チームメイトの時間を奪わない工夫」をすることと同義です。
最初はWebhookのテストからで構いません。少しずつ「どの通知があれば、自分たちはもっと楽になれるか」を考えながら、フィルタリングのルールを育てていってください。この小さな積み重ねが、あなたのチームを世界最強のプロダクト開発組織へと進化させます。
何か詰まったら、いつでも聞いてください。コードは裏切りませんよ!