【うぇぶふっく】

Webhook とは?

💡 「変化があったら自動で連絡してくれる」仕組み
📌 このページのポイント
ポーリング vs Webhook ポーリング(従来) クライアント サーバー 新着ある? ないよ 新着ある? ないよ 新着ある? あるよ! 無駄なリクエストが多い(リソース浪費) Webhook(イベント駆動) クライアント サーバー URL登録 ... 待機(通信なし) ... イベント発生! POST通知 データ付きで即座に通知される 必要な時だけ通信(効率的) Pull型 Push型 用途例:GitHub通知・決済完了通知・Slack連携・CI/CD
ポーリングとWebhookの通信方式の違い
ひよこ ひよこ

WebhookってAPIと何が違うの?

ペンギン先生 ペンギン先生

APIは自分から「情報を取りに行く」仕組みで、Webhookは向こうから「変化があったら送ってくる」仕組みだよ。引き取りに行くか、配達してもらうかの違いをイメージすると分かりやすいかな。

ひよこ ひよこ

どんな使い方があるの?

ペンギン先生 ペンギン先生

GitHubにプッシュされたらCI/CDが自動で動く、Stripeで決済が完了したら注文確定メールを送る、Slackにメッセージが来たらBotが反応する、といった「○○が起きたら△△する」の自動化によく使われるよ。

ひよこ ひよこ

ポーリングとの違いって何?

ペンギン先生 ペンギン先生

ポーリングは「5秒ごとに変化がないか確認する」方式で、変化がなくても問い合わせが発生する。Webhookは変化があったときだけリクエストが来るから効率的なんだ。

ひよこ ひよこ

Webhookで気をつけないといけないセキュリティ上のポイントって何?

ペンギン先生 ペンギン先生

これは見落とされやすいんだけど、Webhookを受け取るエンドポイントは誰でもリクエストを送れる状態になっているんだ。つまり悪意のある第三者が偽のWebhookを送ってきたとき、本物かどうかをどう確認するかが重要。多くのサービスでは「シークレット」という共有の鍵を使った署名をリクエストに付けて、受け取り側がその署名を検証するよ。GitHubならHMAC-SHA256で署名されたヘッダーがある。この検証をサボると偽の決済通知を本物として処理してしまう事故につながるんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Webhook」って出てきたら「イベント発生時にサービスが自動でHTTPリクエストを送ってくれる仕組みだな」と思えばだいたいOK!
📖 おまけ:英語の意味
「Webhook」 = ウェブのフック(引っかけ)
💬 「フック」はプログラムの特定の処理に割り込む機能を指す。ウェブ上でHTTPを使ったフック、というイメージだよ
← 用語集にもどる