デベロッパー

リアルタイムのコミュニケーションを手軽に実現: webhook および WebSocket ガイド

Zoom のビデオベース コミュニケーション ソリューションを活用するために、webhook と WebSocket を活用して、アプリケーション、統合を構築する方法。
4 分で読める

更新日 January 26, 2023

公開日 January 25, 2023

WebSockets and webhooks

webhook、WebSocket とは?

webhook と WebSocket は、非常に重要なイベント通知サービスを提供していることから、現代アプリケーションの主要コンポーネントとなっています。 webhook と WebSocket のいずれを使用しても、Zoom アカウントのイベントに関する通知をリアルタイムで受信できます。 またいずれも、さまざまな変更、更新に即応する必要があるアプリケーションをサポートします。 とはいえ webhook と WebSocket の間には、若干の重要な違いもあり、各ユースケースにどちらが適しているかを見極めるには、実装の手間、配信速度、信頼性、アーキテクチャなどの要因について考慮する必要があります。

webhook と WebSocket の比較

プロトコルと実装の手間

webhook は HTTP プロトコルに準拠し、WebSocket は WebSocket プロトコルに準拠しています(ws と wss の違い)。 このため一般的には、webhook ではエンドポイント URL さえ用意すれば HTTP POST リクエストを受信できる webhook の方が、簡単に実装できます。 WebSocket ではアクセス トークンの取得、サーバー接続の確立など、より複雑なセットアップが必要です。

配信速度

通知を配信する速度は、二重通信チャネルを提供する分、WebSocket での配信の方がスピーディーです。 WebSocket ではクライアント - サーバー間に単一の通信を確立して、リアルタイムでデータを交換でき、追加の HTTP リクエストは必要ありません。 webhook に比べると、常時接続している分、より高速でイベント通知を配信でき、より効率的にリソースを活用できます。

信頼性

イベントベースのコミュニケーションのオプションを評価するとき、信頼性は非常に重要です。 webhook はイベント発生時に特定の URL に通知を送信します。 ただし、そのエンドポイントに問題が発生していると、イベント通知が正しく処理されない場合もあります。 一方 WebSocket は、サーバーと常時接続しているため、webhook より通信が安定し、通信の信頼性が高くなります。

アーキテクチャ

webhook は「プッシュ」モデルを基盤としています。同モデルでは Zoom がイベント発生時にエンドポイントにイベント通知をプッシュしています。 WebSocket は「プル」モデルを基盤としています。同モデルではクライアントがサーバーとの接続を確立し、以後はイベントが発生するたび、イベント通知を受信します。

ステートレスとステートフルの比較

webhook はステートレスですから、各イベント通知が独立しており、すべての通知がイベントに関する必須情報をすべて伝送します。 WebSocket はステートフルです。つまりクライアントとサーバーが常時接続しているため、接続開始から接続終了まで、状態に関する情報を共有できます。

ユースケース

受信する必要のあるイベント通知が少ないアプリでは、webhook の方が優れたソリューションとなる場合もあります。 たとえばユーザーがミーティングを作成、更新、または削除したときのみ通知が届く市販アプリがあるとしましょう。 この場合、アプリが受信しなくてはならないイベント通知(ミーティング関連のイベントなど)は少ないため、webhook が効果的です。 これらの通知を webhook 経由で受信できるようにシンプルなエンドポイントを設定する方法は、WebSocket 実装より効率的です。

バンキング、金融機関、医療機関などの業界でアプリケーションを開発する場合は、WebSocket が適切なオプションと考えられます。 webhook を実装する場合、デベロッパーはリクエストの検証IP のホワイトリスト処理など、エンドポイントの安全性を徹底するため、格別の対策を施す必要があります。 対して WebSocket は、クライアントとサーバーが直接、接続されるため、中間者(MITM)攻撃のリスクが減る分、一段高いセキュリティ強度を備えています。 Zoom WebSockets は通信が開かれているときのみデータが転送され、一度開かれた通信は、デベロッパーが閉じない限り切れないため、通信の信頼性が比較的高くなります。 Zoom WebSockets にまつわるさらに興味深い事実には、たとえば WebSocket サブスクリプションを作成したアプリで生成されたアクセス トークンでのみ、通信を開くことができる点、一度に 1 つの通信しか維持できない点があります。 webhook に比べ、WebSocket の主だった長所の 1 つは、WebSocket はレイテンシーが少ないリアルタイムのコミュニケーションをサポートする点です。これはリアルタイムの更新が非常に重要となるユースケースでは、必須の条件です。

魅力的な体験をつくり出すための必須ツール

WebSocket と webhook は、シームレスで効率的な更新、低レイテンシー、高い費用対効果、スケーラビリティを実現できるため、インタラクティブなウェブ アプリケーションの構築には欠かせません。 Zoom では両テクノロジーを活用し、魅力的で直感的に理解・操作できるユーザー体験を創出しています。 顧客エンゲージメント アプリ、モニタリングシステムなど、何を構築する場合にも、アプリの潜在能力を十分に発揮させるには、これらのイベント通知機能が肝心です。

これから始める皆様向けに、webhookZoom WebSockets(ベータ版)の参考資料をご用意しました。 こちらのフォームにご入力いただくと、Zoom WebSockets(ベータ版)に登録でき、この新機能に手軽にアクセスできます。

ご愛顧いただいているお客様

Okta
Nasdaq
Rakuten
Logitech
Western Union
Autodesk
Dropbox
Okta
Nasdaq
Rakuten
Logitech
Western Union
Autodesk
Dropbox

Zoom - すべてのつながりをひとつのプラットフォームで