最近キャンプに出かけたのだが、オフグリッドということもあり、私のスマートフォンの機能はかなり制限されていた。天気予報アプリにはデータが入力されず、アップル・マップで現在地を確認できず、ダイレクトメッセージの送受信もできなかった。デジタル時代の悪夢だ。
アプリケーション・プログラミング・インターフェース(API)とウェブフックがなかったら、私たちのテクノロジーはどれだけ使い物にならないことか。どちらもソフトウェア間のコミュニケーションには欠かせないものですが、ではWebhookとAPIはどう違うのでしょうか?これが本質だ:
- アプリケーションAはアプリケーションBに情報を要求し、アプリケーションBは情報を送信するかどうかを決定します。
- WebhookはイベントドリブンAPIの一種です。他のアプリケーションのリクエストに応答して情報を送信する代わりに、Webhookは、時刻、ボタンのクリック、フォーム送信の受信などのトリガーに応答して情報を送信したり、特定の機能を実行したりします。データを送信するアプリケーションが転送を開始するため、Webhookはしばしば「逆API」と呼ばれます。
このガイドでは、WebhookとAPIについて説明し、アプリケーションとAPIの間で自動的にデータをやり取りできるようにします。
ウェブフックを使うタイミング
Webhookはあまり “会話 “を必要としない。Webhookは開発者が指定するAPIエンドポイントに過ぎないので、完全なAPIと比べると非常にシンプルです。
APIシステム全体ほど多くの情報にアクセスできないようにプログラムされているため、その用途はかなり限られている。しかし、ユーザがアプリケーションを開かずにアプリケーションの機能を完了させたい場合に便利です。Webhookが最も意味を持つ場合のアイデアをいくつか紹介しよう:
- ユーザが購読をキャンセルしたときに、顧客関係管理(CRM)システムでユーザの購読ステータスを更新する。
- 会議が始まる5分前に自動リマインダーを送信する。
- INPIの社員に連絡を取ろうとしたユーザーに、帰国日を知らせるEメール通知を送信する。
- ある企業の株を保有しているユーザーに対し、株価が1日で5%下落したことを通知する
Webhookリクエストが正しくフォーマットされていない場合、関数が失敗した理由を伝える詳細なレスポンスを得ることはできません。このため、Webhookをテストして(定期的にチェックして)正しく動作していることを確認することが重要です。
例えば、CRM にユーザー名を追加する Webhook を作成したい場合、Webhook は特定の名前形式(例えば、”姓 “と “名 “の 2 文字セットのみ)しか受け付けないように設定できます。この場合、ミドルネームを入力したり、ファーストネームを2つ持つユーザー(例:”George Michael Smith”)は、ウェブフックを混乱させ、CRMに追加されません。Webhook 設定を再チェックすることで、この問題を特定し、データの損失を防ぐことができます。
Webhook 設定の例
フェデックスサプライチェーン
FedEx Supply Chain は、倉庫管理と配送を専門とする物流プロバイダーであり、FedEx の子会社です。アプリケーション内で発生したイベントを追跡するために、アプリケーション内でWebhook URLを生成することができます。そうすれば、新しいデータを取得するために頻繁に呼び出す必要はありません。例えば、Webhookは、製品が流通プロセスの段階を通過するときに更新を送信するようにプログラムすることができる。
メールチンプ
有料のMailchimpトランザクションアカウントを使用すると、Webhookを使用してアプリケーションにメールデータを送信し、希望するように応答させることができます。例えば、受信者がマーケティングメール内のリンクをクリックした場合、Mailchimpにこのクリックデータを別のアプリケーションに送信させることができます。
APIを使うタイミング
APIは、機械可読形式(通常はJSONまたはXML)でアプリケーション間の通信を維持するので、常に変化したり更新されたりするデータを扱う場合に最適です。天気予報や位置情報データを考えてみよう。
また、APIの通信機能により、ウェブフックだけではできないタスクを実行することもできます。ここでは、APIがWebhookよりも望ましいと考えられる一般的な例をいくつか紹介する:
- eコマース会社の出荷追跡
- マッピング・アプリケーションのためのトラフィック・データの抽出
- サードパーティのMFAアプリケーションを使って企業ポータルにログインする
APIの実例
ペイパル
PayPalはAPIを通じて、顧客が支払い、購読、請求書発行など、さまざまな取引を完了できるようにしています。PayPalがAPIに依存する理由は理にかなっている。PayPalはデジタルウォレットであり、トランザクションを完了するために銀行や多くのPOSシステムと通信する必要がある。
Spotify
他の音楽ストリーミングアプリと同様、Spotifyは音楽データを取得し、ユーザーのプレイリストを管理するためにAPIに依存している。ユーザーが特定のアーティスト、アルバム、トラックを検索すると、SpotifyはAPIを介してユーザーの検索結果を表示する。このプラットフォームはまた、ユーザーのリスニング履歴からデータを抽出し、ユーザーのために特別にデザインされたミックスやプレイリストを編成する。
Uber
Uberが機能するためにAPIを使用していることは驚くことではない。アプリがユーザーとドライバーの位置を特定し、旅程と評価データを収集し、このデータを両者で共有するためには、データベース、ユーザー、ソフトウェア間で多くのコミュニケーションが必要なのだ。
よくある質問:WebhookとAPIの違い
WebhookとAPIの主な違いは何ですか?
APIは手動です – データの抽出や変更を依頼する必要があります。Webhookは、他のソフトウェアからのリクエストなしに、特定のイベントに応じて自動的にデータを送信します。
WebhookはAPIのサブセットであるため、APIよりもはるかに制限されている。APIはより多機能である。APIは異なるソフトウェア間の仲介役であり、ユーザーであるあなたが他のソフトウェアで何かを学んだり変更しようとするとき、APIはあなたがそうする権利を持っているかどうかをチェックし、リクエストを承認または拒否する。
Webhookは単なるREST APIですか?
RESTはAPIに課されたルールやアーキテクチャ上の制限のセットであり、webhookはAPIのサブセットである。REST APIは、その制限にもかかわらず、データを送信するためにユーザーがデータを要求する必要があるため、データの要求を必要としないWebhookとは異なります。
どちらが良いのか?
ウェブフックとAPIのどちらが優れているということはありません。APIの方がウェブフックよりも汎用性が高いのは確かですが、ウェブフックの方がシンプルで軽量です。
ウェブフックとAPIの比較:結論
WebhookとAPIは、私たちが日常的に使うあらゆるソフトウェアで広く使われており、それぞれの使い方が混乱してしまうほど似ています。WebhookはAPIの特定の一種に過ぎないので、その混乱は理にかなっている。
要約すると、webhookは特定のアクションが発生したときにソフトウェア間で軽量のデータ共有を可能にし、APIはもう一方のエンドでデータを要求または変更するために、一方のエンドでユーザーの入力を必要とする。
もし特定の条件が満たされたらすぐに通知を送ったり情報を更新したいのであれば、APIの手間を省くことができる。フローティング・データを扱っていたり、単に通知を送るだけでなくデータを変更したい場合は、おそらくAPIを実装する必要があるだろう。
この2つのどちらかを選択する場合、最も重要な質問は、アクセスしたいデータが常に更新されているかどうかということだ。もしそうであれば、APIの方がWebhookよりも理にかなっているでしょう。そうでない場合は、Webhookの実装を検討しよう。
結局のところ、ウェブフック対APIの議論を始める必要はない。