画像ツール一覧

Webhook

Webhook

ITの運用・現場用語

Webhookとは、イベントが発生したときに、登録されたURLへHTTPリクエストを送り、他のシステムに知らせる仕組みです。通知の速さ、再送、順序の保証は提供サービスによって異なります。

🐾 猫で例えると?

カゴや棚の隙間からひょっこりと顔を出し、何かアクションが起きるのを待ち構えながら下を見下ろしている茶トラの猫
ひょっこり顔を出して通知のタイミングを狙う茶トラ

何かを見つけた猫が、その都度飼い主へ知らせに来るイメージです。飼い主が何度も様子を見に行くのがポーリング、猫から知らせるのがWebhook。ただし留守なら知らせが届かないこともあり、通知の失敗への備えが必要です。

🐾 PR

💻 IT現場における「Webhook」とは?

例えばGitHubへコードの変更を送るPushをきっかけに、外部のシステムへ通知して検証処理を始める用途があります。通知を受けた後に何をするかは受信側が実装します。自動デプロイやチャット通知が、すべて必ずWebhookだけで実現されるわけではありません。

変更の有無を繰り返し問い合わせるポーリングに比べ、不要な確認を減らせます。一方、配送の遅延や失敗、重複が起こる場合があり、即時・一度だけ・順番どおりの配信を無条件には期待できません。

⚠️ Webhookの仕組みと注意点

Webhookは非常に軽量で強力な仕組みですが、誰からでもアクセスできる公開URL(エンドポイント)を用意して待つという性質上、セキュリティ面の防御策が極めて重要になります。

セキュリティ検証用のHTTPヘッダー情報の例

以下はGitHubの通知で使われるヘッダー名を基にした、説明用の断片です。省略された値なので、このまま検証を通すことはできません。

POST /webhooks/github HTTP/1.1
Content-Type: application/json
X-GitHub-Event: push
X-GitHub-Delivery: 配送ごとの識別子
X-Hub-Signature-256: sha256=省略

(イベントに応じたJSON本文)

GitHubの場合、共有シークレットと受信した本文の元のバイト列からHMACを計算し、署名と比較します。JSONを解析して再出力するとバイト列が変わる場合があります。HMACは本文の暗号化ではなく改ざん検知・認証のためで、重複配送の対策は配送IDなどを使って別途行います。

🛠️ Webhookを賢く使うためのポイント

実務でWebhookの受信システムを設計・構築する際は、インターネット通信の不確実性を考慮した堅牢な実装が求められます。

ひょっこり顔を出す茶トラのように、Webhookは出来事を相手へ知らせます。ただし、通知が遅れたり重複したりする場合もあります。署名の確認、再送への対応、重複して処理しない仕組みをそろえ、受理した通知を失わない手順で応答しましょう。

参考資料