はじめに
webhookという言葉は聞くのですが、そもそもどういったものなのか、APIとの違いはなんのなのかがいまいちわかっていなかったので、今回まとめてみました。
webhookとは?
Webhookは、「イベント駆動型のHTTP通知」です。
身近な例だと、宅配便の不在通知のようなもので、宅配業者が不在時に「荷物が来ましたよ」と自動的に知らせてくれる仕組みです。
Web開発では、「GitHubにコードがpushされた」時や、「決済が完了した」といったイベントが発生したとき、自動的に指定したURLに通知を送信します。
我々のサービス(CPaaSNow)だと
- API
- SMSを配信した後、APIで「このメッセージの配信結果を教えて」と問い合わせる
- Webhook
- SMSの配信が完了したら、システムが自動で事前に登録したURLに「配信結果」を送信する
APIとの違い
WebhookとAPIはよく混同しますが、情報の流れが逆になります。
API
- こちらから「データをください」とリクエストする
- 必要な時に必要な情報を取得する
- ex). 天気情報APIに「今日の天気は?」と問い合わせる
Webhook
- 相手から「何が起きましたよ」と通知が来る(プッシュ型)
- イベント発生時に自動的に通知される
- 例:注文が入ったら自動的に通知が届く
Webhook動作の流れ
Webhookは以下の3ステップで動作します。
- イベント発生
- サービス側で何かが起きる
- HTTP POSTリクエスト送信
- サービスが、あらかじめ登録されたURLに対して、イベント情報を含んだHTTPリクエストを送信します
- データ受信・処理
- 受信側のサーバーがデータを受け取り、必要な処理を実行
具体例:GitHubのプッシュ通知
- 開発者がGitHubにコードをプッシュ
- GitHubが指定されたWebhook URLにPOSTリクエストを送信
- 受信サーバーがSlackに「〇〇さんがコードをプッシュしました」と通知
その他の使用例
Webhookはさまざまなサービスで使われています:
- Slack通知:GitHubやその他のサービスからの通知をSlackに送信
- 決済通知:Stripeなどで支払いが完了したら通知
- フォーム送信:問い合わせフォームが送信されたらメールやチャットに通知
まとめ
Webhookは、リアルタイムな連携を実現し、効率的なシステム構築を可能にする現代のWeb開発に欠かせない技術です。試してみたくなったら、まずはGitHubやSlackなど、既存のサービスが提供するWebhookで始めてみましょう!
- もっと他の記事も読んでみたい方
- 当社に興味がある方はこちら👀

