---
title: "webhookとは?"
description: "リアルタイムWeb3通知のためのwebhookの設定方法と使い方"
---

# webhookとは?

Webhookは、開発者が2つのアプリケーション間でリアルタイムの通信を自動的に行うための仕組みです。サーバーに情報を継続的にポーリングする方法とは異なり、webhookは迅速でセットアップが容易であり、フル機能のAPIサービスを構築する際の軽量な代替手段として捉えられることが多くあります。

[Alchemy Notify API](https://www.alchemy.com/notify)を使用することで、開発者はアドレスのアクティビティやマイニングされたトランザクションなど、重要なイベントについてユーザーにリアルタイムの通知をプッシュできます。

例えば、[リアルタイムのトランザクション通知](https://www.alchemy.com/docs/reference/webhooks-overview)を備えた分散型アプリケーションの構築は、webhookを使うことで実現可能かつよりシンプルになります。webhookを実装することで、エンドユーザーの体験は大きく向上し、時間のかかる複雑な通知システムをゼロから構築する必要がなくなります。

この記事では、webhookとは何か、その仕組み、web3における多様な通知のユースケース、そして[Web3のwebhookを使い始める方法](https://www.alchemy.com/docs/reference/notify-api-quickstart)について解説します。

## **webhookとは何か**

**webhookとは、あるアプリケーションが別のアプリケーションにリアルタイムでデータをプッシュするための自動化された手段です。** webhookは2つのサービス間の一方向の通信のみを実現し、エンドポイントをポーリングするより高速で、必要な開発の労力も少なく済みます。

### webhook URLとは何か

webhook URLとは、送信元アプリケーションからデータを受け取るアプリケーションのアドレスのことです。通常、webhookは異なる2つのアプリケーションを接続するために使われ、一方がイベント情報の「送信者」、もう一方が「購読者」となります。送信元アプリケーションでイベントが発生すると、そのデータが購読者アプリケーションのwebhook URLに送信されます。

#### webhookエンドポイントとは何か

**webhookエンドポイントとは、送信元アプリケーションが購読者アプリケーションにデータを提供するために設定されたwebhook URLのことです。** 送信元アプリケーションが購読者アプリケーションにデータを提供するには、要求された情報を届けるためのwebhook URLが必要です。

つまり、webhook URLはエンドポイントであり、アプリケーション間で情報がスムーズに流れるように公開されている必要があります。リクエストがトリガーされ、データが解析されると、購読者アプリケーションはHTTPSステータスコードを含むコールバックメッセージを送信し、データの受信を通知できます。

### webhook APIとは何か

状態の変化が起きたかどうかを確認するためにエンドポイントを継続的にポーリングするのとは異なり、webhookは情報が利用可能になった時点でそれを提供します。言い換えると、webhookは通信がデータを要求する側ではなく、データを提供する側のプログラムによって開始されるため、「逆向きのAPI」とみなすことができます。

従来のAPIと同様に、2つのソフトウェアインターフェース間で情報と機能が共有されます。webhookを利用することによる効率性と実質的な利点から、開発者はこの仕組みをリアルタイムのデータ更新やweb3の通知のための実用的で軽量なソリューションとみなしています。

### webhookインテグレーションとは何か

webhookインテグレーションを使うと、開発者は一意のURLを用いて、あるアプリケーションと別のアプリケーションの間でメッセージを自動化できます。例えば、開発者はZapierというソフトウェアツールを利用できます。これは、新たな機能をコーディングすることなく、2つ以上のアプリケーション間で繰り返し行われるタスクを自動化できるツールです。Zapierがなければ、ユーザーには通知が届かず、レスポンスは単なる別のレスポンス、多くの場合はJSONオブジェクトに過ぎません。

一方で、[ZapierとAlchemy webhookを連携させる](https://www.alchemy.com/docs/reference/webhooks-overview)ことで、Discord、Twitter、Slackといった幅広いサードパーティアプリケーションにWeb3データを共有できるようになります。オンチェーンイベントが発生した場合（例：追跡対象のウォレットで新たなアクティビティが発生した場合）、Zapierは専用のSlackチャンネル、Discordサーバー、またはTwitterアカウントにメッセージを送信できます。つまり、Zapierのようなサービスはコミュニケーションのループを改善し、開発者とユーザーの両方にとってより有用なプロダクトを生み出します。

ZapierとAlchemy webhookの連携は比較的シンプルで簡単です。実際、この連携を実現するために過剰なツールを必要とせず、[Alchemyアカウント](https://www.alchemy.com/)とZapierアカウントさえあれば十分です。

### webhookは何をするのか

webhookは、あるアプリケーションが別のアプリケーションにリアルタイムのデータを共有できるようにし、機能性を高めます。Web3アプリケーションの開発を迅速化するために、webhookを基盤とした[AlchemyのNotify API](https://www.alchemy.com/docs/reference/webhooks-overview)は、Ethereum、Polygon、Optimism、Arbitrumの各ブロックチェーンネットワーク上で、アドレスのアクティビティやマイニングされたトランザクションの監視などをサポートします。

開発者はAlchemy Notifyを使って、4種類の通知に対応する機能を構築できます。

- マイニング済みトランザクションのwebhookは、あなたのAPIキーを通じて送信されたトランザクションが正常にマイニングされた際に、アプリケーションに通知するために使用できます。この通知は、トランザクションが実行された瞬間に顧客へ知らせる際に役立ちます。
- ドロップされたトランザクションのwebhookは、あなたのAPIキーを通じて送信されたトランザクションがドロップされた際に、アプリケーションに通知するために使用されます。
- webhookは、開発者が任意の数のEthereumアドレスについて、すべてのETH、[ERC20](https://www.alchemy.com/overviews/erc20-solidity)、ERC721の転送イベントを追跡するためにも使用できます。

webhookは、新たなアクティビティやdAppの更新をユーザーに通知するために、多面的な目的で使用できます。

<VideoCta
  title="Alchemyダッシュボードの動作を見る"
  description="30分のガイド付きウォークスルーで、ダッシュボードの全ツールをライブでデモします。"
  ctaHref="/resources/dashboard-demo"
  thumbnail={{
    src: "https://media.alchemy.com/alchemy-dashboard-demo-thumbnail.png",
    alt: "Alchemy Dashboard Demo",
  }}
/>


### webhookの例

Ethereumブロックチェーンはネイティブには通知をサポートしていないため、dAppのユーザーがトランザクションのステータスを常に把握する方法としては、アプリケーションを絶えず更新するか、etherscanを確認するしかありません。これは全体として時間のかかるプロセスであり、ユーザーがアプリケーションを再利用することを妨げます。

現在では、Alchemy Notifyと[AlchemyのpendingトランザクションWebSocket](https://www.alchemy.com/docs/reference/subscription-api)を使うことで、ユーザーは[マイニング済みおよびpending状態のETHトランザクションをシームレスに追跡](https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum)できます。

前述のウォークスルーの結果として、開発者はトランザクションのライフサイクル全体を通じて発生するあらゆるアクティビティについて、ユーザーにSMS通知を送信できるようになります。これにより優れたユーザー体験が実現し、現在の競争の激しい市場において優位性をもたらすことができます。

### なぜWeb3開発者はwebhookを使うべきなのか

Ethereumのようなブロックチェーンネットワークが広く普及するにつれて、分散型アプリケーションはアーキテクチャ的により複雑になってきました。しかし、Web3エコシステムにおけるエンドユーザー体験は、依然としてWeb2に及びません。

Web3のUXインフラストラクチャに欠けている要素の1つが、リアルタイム通知です。例えば、エンドユーザーは自分の取引がいつ実行されるか、トランザクションがいつ失敗したか、オークションの入札がいつ承認されたかなどを知りたいと考えています。

開発者は、webhookへの対応が不十分な場合、前述の理由に加えてトランザクションへの不安や確認の遅延によって、dAppのユーザーがサービスを完全に離れてしまう可能性があることを認識しておく必要があります。

一般的に、[アプリ](https://www.alchemy.com/dapps/top/defi-dapps)にリアルタイム通知を組み込むことは、システムをゼロから構築する際の複雑さ、時間、そして避けられないエラーのために、開発者にとって課題となってきました。

### webhookはどのように機能するのか

開発者はwebhook通知をSMS通知と同様のものと考えることができます。メッセージを送信しようとするエンドユーザーは、あなたの登録済み電話番号を持っており、それが情報を届けるためのアドレスとして機能します。その後、メッセージを受信したことを確認する返信を行うことで、双方向の通信システムを構築できます。

#### **webhookの呼び出し方**

webhookの呼び出しには、開発者による以下の3ステップの入力が必要です。

1. データを受け取るべきアプリケーションのエンドポイント、すなわちwebhook URLを特定します。

2. ペイロードやクエリ変数を問題なく解析できるように、webhook URLをデータを送信するアプリケーションに組み込む必要があります。

3. 最終的にエンドユーザーへのイベントタイプ通知をトリガーするwebhookのルールを指定します。

現在、開発者は[Alchemyのダッシュボードから、またはプログラムによってwebhookを設定](https://www.alchemy.com/docs/reference/notify-api-quickstart)できます。Web3チュートリアルの文脈でwebhookの呼び出しを実践するには、[Telegramでホエールアラートボットを構築する方法](https://github.com/alchemyplatform/webhook-examples)を参照してください。

#### **webhookが動作するまでにどのくらい時間がかかるのか**

**webhookを稼働状態にするまでにかかる時間はごくわずかです。** 実際、開発者は[webhookサーバーの設定方法](https://github.com/alchemyplatform/webhook-examples)に関するこのチュートリアルを参照できます。これは、node-express構成またはpython-djangoで構築したwebhookサーバー構成のいずれかを使って、Alchemy Notify webhookサーバーをセットアップする3つのシンプルなステップを紹介しています。

全体として、webhookサーバーのインストール、実行、およびローカルでのテストは労力が少なく、数個のコマンドを実行するだけで済みます。

## Web3アプリでwebhookを使い始める

Ethereum、Optimism、Arbitrum、PolygonでのWebhookサポートにより、web3開発者はAlchemy Notifyを使用して自身の分散型アプリケーションのユーザー体験を向上させるユースケースを検討すべきです。

web3分野でのビルダーと競争が増えるにつれ、ユーザー体験デザインは、ウォレットのような消費者向けアプリが競合他社との差別化を図る上で重要な領域の1つとなっています。
