San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
API Security

Webhookの簡単な説明

Webhookは、データを伴ってトリガーされるHTTPリクエストで、ウェブアプリ間の通信を自動化し、動作を効率化する。オンラインサービスの単なる通信手段以上に、多くの可能性を秘めた技術である。本稿では、Webhookの概要、動作の仕組み、そして対処すべきセキュリティ課題について解説する。

Webhookの簡単な説明

Webhookとは:簡単な解説

Webhookはデータを伴って自動生成されるHTTPリクエストです。元のシステムで定義されたイベントや操作が発生すると起動され、通信相手のシステムに送信されます。   

WebhookはポーリングやAPIよりも高速です。同時に、開発者の手間も少なくなります。アプリ内では、SMS通知のように機能します。例えば、オンラインで買い物をすると販売者からSMSで知らせが届くのと同じです。

同様に、元のシステムでイベントや操作が発生するたび、受信側にはWebhookを通じて通知されます。


Webhookの利用用途

Webhookの基本的な使い方は定義から明らかです。元のシステムと送信先システム間でアプリの通信と高速なデータ交換を行い、双方のシステム間で双方向の連携を実現します。 

以下は、他の通信手段よりもWebhookが有効なシーンの例です。

  • 開発者は、常時接続ではない通信システムで2つのシステムを連携させる必要がある。
  • Webhookを利用して、イベント情報を各種データベースに送信する。
  • 特定の操作が発生した場合、即時なアプリの応答が求められる。
  • Webhookを使い、アプリ内で顧客データの同期をスムーズに行う。
  • タイムリーなプッシュアップデートを受け取るため、プッシュモデルが必要である。
  • 通信は一対一で行う必要がある。
  • Webhookは、メールマーケティングやキャンペーン管理ツールと決済ゲートウェイの接続を実現する。

これらの利点から、WebhookはSaaSアプリ開発において重要なツールとなる。実際の例として、Shopifyはカートの自動更新やセール告知などにWebhookを活用している。 

Stripeも、アカウント更新や支払い通知などの情報伝達にWebhookを利用する有名なプラットフォームである。 

webhook work


WebhookとAPIの違い

一般には、WebhookとAPIは同じようなものと考えられる。両者ともアプリ間通信に用いられ、Webhookを逆APIと呼ぶ開発者もいる。しかし、熟練の技術者のみがその違いを理解し、活用できる。ここでは、WebhookとAPIの主な違いをまとめた。

Webhooks vs API

これらの技術は、アプリ間で情報を伝達するために利用され、その動作はほぼ同様である。大きな違いは、データの受信方式にある。

  • APIはポーリング方式を用い、必要な通信データを取得する。ポーリングとは、新たなデータがあるか確認するために連続してサーバにリクエストを送る方法である。
  • Webhookはプッシュ方式を採用し、トリガーイベントが発生すると元のシステムから必要なデータを送信する。 
  • APIは新しいデータの生成を待ち、定期的に接続を維持する必要があるが、Webhookはイベント発生時に自動的に起動する。 
  • 実際の運用では違いが顕著で、例えばAPIは在庫確認のために店舗所有者へ問い合わせるのに対し、Webhookは希望商品が利用可能になると販売者から連絡が入る。これにより双方の手間と時間が節約される。 
  • Web APIセキュリティは、絶え間ない厳しいリクエストに伴い、都度APIセキュリティ対策を実施する必要があり、管理が困難である。一方、Webhookはリクエスト頻度が低いため、セキュリティの確保が比較的容易である。
  • 即時なアプリ更新が求められる場合はWebhookを、サーバ側の変更が頻繁な場合はAPIを利用する。 
  • WebhookはAPIの簡易版であり、APIは追加、削除、データ取得など多様な操作が可能な完全なシステムで、Webhookは自動処理、APIは開発者の手動操作が必要である。 
  • Webhookは広くサポートされていないが、多くのサードパーティ連携はAPI対応である。
Webhooks vs API 1

Webhookの動作原理

表面上は似ているが、実際は複雑なプロセスが関与している。以下、その仕組みである。

ステップ1: プロセスリクエストの生成 

Webhookを利用するには、十分なバックエンド機能を持ったシステムが必要である。各種イベントに対して複数のHTTPリクエストを促すことで、Webhook対応システムを構築できる。同じ原理により、SaaSプラットフォームは複数イベントのサポートが整っているため、Webhookとの相性も抜群である。GitHub、Shopify、Twilio、Stripe、SlackなどがWebhookに対応している。 

まず、Webhookを受信するための登録を行う必要がある。複数のイベントに対して登録を実施すると、送信先URLに自動生成されたWebhookリクエストが届く。定義されたイベントが発生すると、このリクエストは自動的に処理される。

ステップ2: Webhookの利用 

基礎準備が整ったら、Webhookを利用する段階に入る。Webhookを構築し、動作確認を行えば、プロセスは一層シンプルになる。もし手間がかかる場合は、希望するWebhook URLをアプリに入力し、データ共有を開始するだけでよい。

Webhook利用のため、以下のリソースを参考にしてほしい。

  1. WebhookテストにはRequestBinとPostman 

前述の通り、Webhookのテストはその動作原理を理解する最適な方法である。RequestBinとPostmanは、この目的で最も利用されるツールである。 

RequestBinを使えば、必要に応じたWebhook URLを作成し、データがどのように識別されるか確認できる。Postmanは、Terminalや専用コードからのリクエスト送信も可能だが、RequestBinより若干複雑である。しかし、JSONやXMLのエンコードに関しては柔軟性が高い。 

  1. アプリ同士に通信させる 

Webhookのテストは手間がかかるため、アプリ同士で直接通信させる方法もある。そのため、トリガーアプリのWebhookを有効化してほしい。 

通常、各アプリには詳細なWebhook設定が備わっている。トリガーアプリからデータを取得するには、対象フォームのWebhook設定を開いて、URL欄やHTTPリクエスト仕様の選択を行う。 

次のステップは、受信側アプリのURLを利用することである。このアプリ内の各ドキュメントには特定のマージURLが用意されている。そのURLをコピーし、再度トリガーアプリに戻り、コピーしたWebhook URLを入力する。設定を保存すると、アプリは動作を始める。 

上記のいずれかの方法でWebhookを有効化できる。概念をより理解するため、以下はShopifyにおけるWebhook動作の図である。

Shopify’s webhook work


Webhookの例

上記のShopifyの例を続けると、新規ユーザーがメール認証後にオンラインストアで2件の注文を行ったとする。customer/updateイベントで情報を取得すると、以下のようになる:

HTTP/1.1 200 OK
{
  "webhook": {
  "id": 744408886555322224,
  "email": "ss@testmail.com",
  "accepts_marketing": false,
  "created_at": null,
  "updated_at": null,
  "first_name": "Jane",
  "last_name": "Doe",
  "orders_count": 2,
  "state": "disabled",
  "total_spent": "0.00",
  "last_order_id": 54254, 54258
  "note": "The user registered from India and uses store for sending gifts",
  "verified_email": true,
  "multipass_identifier": null,
  "tax_exempt": false,
  "phone": 8585858585,
  "tags": "retailer",
  "last_order_name": null,
  "currency": "INR",
  "addresses": [

  ],
  "accepts_marketing_updated_at": null,
  "marketing_opt_in_level": null,
  "admin_graphql_api_id": "gid://shopify/Customer/744408886555322224" }
}

結論

Webhookはカスタムコールバックを用いることで、アプリ間通信を迅速かつシームレスに、より簡単に実現する。トリガーに基づいた即時データ交換だけでなく、ネットワーク負荷や雑音の削減にも寄与する。ただし、すべての通信プロトコルと同様、Webhookにも独自のセキュリティ課題がある。これは、アプリ内の脆弱性を減らす「シフトレフト」と、Webhook特有の脅威に備える「シールドライト」の両面から対策する必要がある。この多層防御戦略により、ユーザーと組織双方のセキュリティが向上する。

WallarmのAPIセキュリティ企業は、あらゆる問題を解決し、セキュリティの穴を埋める。

FAQ

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック