【うぇぶふっく】

Webhook とは?

最終更新:
💡 「変化があったら自動で連絡してくれる」仕組み

登録したイベントが起きたとき、送信側から指定URLへHTTPリクエストでデータを通知する仕組み。定期的な問い合わせを減らせるが、受信確認や再送・重複への対応も必要になる。

📌 このページのポイント
通知を受け取るきっかけの違い ポーリング Webhook 受信側 提供側 問い合わせ 新着なし 問い合わせ 新着あり 受信側 送信側 イベント 発生 通知 送信元から届くURLを登録しておく 署名の検証・失敗や重複への対応も必要
送信方向の模式例。Webhookの配送時間や再送・順序はサービスの仕様による。
ひよこ ひよこ
WebhookとAPIは別物なの?
ペンギン先生 ペンギン先生
APIはソフトウェア同士の窓口という広い言葉で、Webhookも連携の仕組みの一つだよ。情報を取りに行くAPI呼び出しと比べると、Webhookはイベントの通知を送信側から届ける点が特徴なんだ
ひよこ ひよこ
どんな使い方があるの?
ペンギン先生 ペンギン先生
例えばGitHubの登録したリポジトリでpushが起きたら、外部のCIサーバーへ通知して処理を始められるよ。通知を受けた後に何をするかは受信側で実装するんだ
ひよこ ひよこ
ポーリングとはどう違う?
ペンギン先生 ペンギン先生
ポーリングは一定間隔で新着を問い合わせる方式だよ。Webhookはイベントをきっかけに通知するので、変化がない間の問い合わせを減らせる。用途によって選ぼう
ひよこ ひよこ
通知が届けばそのまま処理していい?
ペンギン先生 ペンギン先生
送信元を検証してから処理しよう。例えばGitHubでは共有のシークレットを設定し、受信した本文に対するHMAC-SHA256署名を照合できるよ
ひよこ ひよこ
一度だけ、順番どおりに届くの?
ペンギン先生 ペンギン先生
それはサービスの仕様によるよ。例えばStripeは同じイベントの重複受信や順序の入れ替わりを考慮する必要がある。イベントIDなどで二重処理を防ぎ、配送失敗をどう再処理するかも決めておこう
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Webhook」って出てきたら「イベント発生時にサービスが自動でHTTPリクエストを送ってくれる仕組みだな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Webhook」 = ウェブのフック(引っかけ)
💬 「フック」はプログラムの特定の処理に割り込む機能を指す。ウェブ上でHTTPを使ったフック、というイメージだよ

参考資料

← 用語集にもどる