メインコンテンツへスキップ

🔔 Webhookとは何か ― イベント駆動連携の基本を押さえる

🧭 はじめに

Webhookは、「あるシステムで何かが起きたことを、別のシステムに即座に通知する仕組み」 です。 APIが「取りに行く(pull)」仕組みであるのに対し、Webhookは「向こうから届く(push)」仕組みであり、イベント駆動アーキテクチャの基本要素として広く使われています。

本記事では、Webhookの概念・仕組み・用途・設計上の注意点を、BookStackに保存しやすい形で整理します。


📦 Webhookの基本概念

🔁 Webhookの一言定義

Webhookとは、特定のイベント発生時に、事前に登録されたURLへHTTPリクエストを送信する仕組みです。

Webhookは「APIの一種」ではあるが、呼び出す主体が逆である点が最大の特徴。


🔌 APIとの違い(Pull vs Push)

観点 API Webhook
通信の起点 クライアント サーバ
データ取得 定期的に取得 イベント時のみ送信
無駄な通信 発生しやすい 最小限
リアルタイム性 低い 高い

「変更が起きたときだけ知りたい」場合、Webhookは非常に効率が良い。


⚙️ Webhookの仕組み

📬 基本フロー

  1. 受信側が「Webhook受信用URL」を用意する
  2. 送信側にそのURLを登録する
  3. イベント発生
  4. 送信側がHTTP POST(またはPUT)で通知
  5. 受信側が処理を実行

Webhookの実体はただのHTTPリクエスト。特別なプロトコルは不要。


📄 送信されるデータ

多くの場合、以下の形式で送信されます。

  • HTTPメソッド:POST
  • Content-Type:application/json
  • ボディ:イベント内容(JSON)

例(概念):

  • イベント種別
  • 対象ID
  • タイムスタンプ
  • 追加メタデータ

🧩 Webhookの主な利用シーン

🔔 通知・連携

  • Gitリポジトリの更新通知
  • チャットツールへの自動通知
  • 障害・アラート連携

🔄 システム間自動連携

  • 決済完了 → 注文確定処理
  • フォーム送信 → データ登録
  • CI完了 → デプロイ実行

Webhookは「人が確認しなくても次が動く」設計を可能にする。


🛡️ セキュリティ上の注意点

🔐 認証・検証は必須

Webhookは外部からURLにアクセスされるため、なりすまし対策が不可欠です。

主な対策:

  • 共有シークレットによる署名検証
  • IPアドレス制限
  • ヘッダトークンの検証

検証なしでWebhookを受け取るのは危険。 誰でもリクエストを送れてしまう。


⏱ 再送・冪等性

  • ネットワーク障害で同じ通知が複数回届く可能性あり
  • 同一イベントを複数回処理しても問題が起きない設計が重要

Webhookは「1回だけ届く」と仮定してはいけない


🧱 設計上のベストプラクティス

🧠 非同期処理を前提にする

  • 受信後すぐに200 OKを返す
  • 重い処理はキューやバックグラウンドで実行

📊 ログと監視

  • 受信ログの保存
  • エラー時のアラート

Webhookは「届いたか・処理されたか」が追える設計が理想


🧩 Webhookと他技術の関係

🔄 ポーリングとの違い

  • ポーリング:一定間隔で確認
  • Webhook:必要なときだけ通知

🧵 メッセージキューとの違い

  • Webhook:シンプル・即時
  • キュー:高信頼・高可用・再試行制御

Webhookは小さく始めやすいが、大規模ではキューと併用されることが多い。


🏁 まとめ

Webhookは、

  • イベント駆動
  • リアルタイム
  • シンプルなHTTP

という特性を持つ、現代的なシステム連携の基礎技術です。

APIと対立する概念ではなく、 「Pull(API)とPush(Webhook)」を適材適所で使い分けることが重要です。

Webhookを理解すると、自動化・連携・拡張性の設計視野が一段広がる。