---
title: "Alchemyのアプリケーションモニタリングツールの使い方"
description: "Alchemyのアプリケーションモニタリングツールでdappの可能性を最大化。分析、監視、デバッグで最適なパフォーマンスを実現します。"
---

# Alchemyのアプリケーションモニタリングツールの使い方

ブロックチェーンとの通信にノードを使う方法についての記事と、独自にノードを運用するのではなく Alchemy のようなノードプロバイダーが[必要になる理由](https://medium.com/alchemy-api/what-is-a-node-provider-and-why-do-i-need-alchemy-16e89b43bfda)については、すでにお読みいただいたと思います。

しかし、平均的なノードプロバイダーと比べて Alchemy を使うことで得られる追加のメリットについては、まだ十分に説明していませんでした。

特に、私たちが[Ethereum エコシステム](https://www.alchemy.com/dapps/ecosystem/ethereum)におけるトップアプリの70%に採用されている主な理由の一つは、開発者にとって圧倒的に作業を楽にする開発者向けツール一式を提供しているからです。

これらのツールは、アプリの開発を高速化することから、ノードエンドポイントを通じて送受信されるリクエストとレスポンスの分析、トラフィックとユーザーの状態をリアルタイムで監視することまで、幅広い用途をカバーしています。この記事を読む代わりに実際に試してみたい方は、[こちらから試すことができます。](https://dashboard.alchemy.com/)

<ImageBlock
  src="https://media.alchemy.com/1704722168-the-home-page-for-our-dashboard.png"
  alt="ダッシュボードのホームページ"
  width={1600}
  height={1173}
  caption="ダッシュボードのホームページ"
/>

‍開発プロセスの初期段階ではこのダッシュボードが必要ないと感じるかもしれませんが、dApp を公開して他のユーザーがあなたのインフラを通じてリクエストを送るようになったら、これらのツールはデバッグの際に必ず役立ちます。

## Alchemy explorer：過去のリクエストを確認する

ブロックチェーンに1つのリクエストを送信すると、通常はノードからすぐにクエリへの回答としてレスポンスが返ってきます。しかし、以下のようなケースではどうすればよいでしょうか？

- 一部のリクエストが不正な形式になっており、過去1日分の失敗したリクエストをすべて確認してパターンを特定したい場合（例：-32000のノードエラーコードを持つレスポンスをすべて見つける）。
- dApp を本番環境にデプロイし、ユーザーがあなたのインフラ内でブロックチェーンへのリクエストをトリガーするリクエストを送信しています。特定のトランザクションがブロックチェーンに正しく届いていないという報告があり、そのトランザクション送信リクエストをデバッグしたい場合。

このプロセスを管理するツールがなければ、zip圧縮されたテキストファイルに保存された何ページものログを探し、時系列でファイルを並べ替え、grep コマンドで必要な情報を絞り込む作業に追われることになります。原始的な方法ですよね - そこで Request Explorer の出番です！

<ImageBlock
  src="https://media.alchemy.com/1704722308-debugging-your-json-rpc-api-request.jpg"
  alt="前回の「JSON-RPC APIリクエストのデバッグ」"
  width={1600}
  height={953}
  caption="前回の「JSON-RPC APIリクエストのデバッグ」"
/>

<ImageBlock
  src="https://media.alchemy.com/1704722379-your-new-improved-request-debugger.png"
  alt="Alchemy Request Explorer:過去のJSON-RPCリクエストを検索・フィルタリング"
  width={1600}
  height={1032}
  caption="新しく改良されたリクエストデバッガー"
/>

私たちの Explorer では、1秒前から10日前まで、私たちのインフラを通じて送受信された過去のリクエストとレスポンスを検索できます！もうログを探し回る必要はありません - 最新のテクノロジーが手元にあります。

これらのリクエストは、メソッドの種類、HTTP レスポンス、ノード固有のエラーなど、あらゆるパラメーターでフィルタリングできます。タイムスタンプ、リクエストの所要時間、その他多くのオプションでリクエストを確認できます。

気になるリクエストを見つけたら、通常やりたいことがいくつかあります：

1. ログ内で類似のリクエストを検索し、特定の問題がどれくらい頻発しているかを調べる。
1. 同じリクエストを再度試して、まだ失敗するかどうかを確認する。

1つ目については、各リクエストの横にある便利な「Explore Similar」ボタンを使えば、一致するパラメーターで新しい検索を実行できます！2つ目については、以下の機能が役立ちます：

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


## Alchemy composer：ブラウザからリクエストをテストする

一回限りの API リクエストを手動で送るのに、必要以上に時間がかかると感じたことはありませんか？私たちも同じように感じています。ターミナルで丹念に curl リクエストを書くにしても、2か月前に自分で名付けて忘れてしまった Postman のライブラリを探すにしても、いつも少し面倒なものです。

Alchemy Composer は、ブラウザベースの GUI を使って一回限りのブロックチェーンリクエストを送信し、同じウェブページ上ですぐにレスポンスを受け取れるようにするツールです。

以下のような作業が不要になります：

- curl リクエストを書いてエンドポイントを選択する代わりに、テストしたいブロックチェーン、ネットワーク、メソッドを選ぶだけです。
- 各メソッドのパラメーターを推測する代わりに、ドロップダウンから選択するだけです。
- JSON オブジェクトをパースする代わりに、ブラウザ上で事前にパース済みの状態で表示されます。

<ImageBlock
  src="https://media.alchemy.com/1704722459-the-alchemy-composer.png"
  alt="Alchemy Composer:ブラウザからブロックチェーンAPIリクエストをテスト"
  width={1593}
  height={999}
  caption="Alchemy Composer"
/>

特に便利な追加機能があります：見ているリクエストをペアプログラミングの相手と共有したい場合は、右上の「Copy config URL」をクリックするだけで、リクエスト情報をすべて保持したままそのURLを直接共有できます。仲間同士でリクエストを検証するための、手早く簡単な方法です。

## Alchemy mempool watcher：トランザクションの状態を確認する

まず、Mempool が何をしているかを理解することが重要です。基本的に、mempool は各ノード内にある保留中のトランザクション用の待機部屋です。これらは、ユーザーによって送信されたものの、まだ「マイニング」されていない、つまりブロックチェーンに書き込まれていないトランザクションです。

ブロックチェーン上で確認されるまでのトランザクションの典型的な流れを以下にまとめます：

1. ユーザーがトランザクションを生成・署名し、sendTransaction リクエストを作成してノードに送信します。
1. そのノードは保留中のトランザクションを自身の mempool に入れます。mempool はトランザクションに対して様々な検証を行い、無効な場合は却下します。
1. そのノードは、保留中のトランザクションを可能な限り多くのピアと共有し、それが繰り返されることで、ネットワーク上の各ノードがこの特定の保留中トランザクションを自身の mempool に持つようになります。
1. ブロックがマイニングされると、マイナーは自身の mempool の中からガス価格が最も高い保留中のトランザクションを選び、ブロックに含めます。これで保留中だったトランザクションはマイニングされたことになります。
1. 時間が経ってもマイニングされない保留中のトランザクションは、最終的にノードによって破棄されることがあります。

まだ疑問がある方は、[保留中のトランザクションに関するこの記事が役立つかもしれません。](https://www.alchemy.com/blog/how-to-debug-pending-ethereum-transactions)‍

一つの大きな問題は、mempool の中身が基本的にユーザーから見えないことです - その内容についての情報を得る唯一の方法は、API リクエストで状態を確認し、延々と続くログストリームを受け取ることでした。

<ImageBlock
  src="https://media.alchemy.com/1704722572-successful-request-to-the-mempool-to-fetch-its-status.jpg"
  alt="これはmempoolのステータスを取得する、実際に成功したリクエストです。美しいでしょう。"
  width={1600}
  height={683}
  caption="これはmempoolのステータスを取得する、実際に成功したリクエストです。美しいでしょう。"
/>

‍これがいかに面倒かを見て、CLI の代わりにダッシュボード上で mempool の状態にアクセスできる GUI を構築することにしました！

Mempool Watcher で mempool を閲覧すると、このようになります：

<ImageBlock
  src="https://media.alchemy.com/1704722647-mempool-watcher.png"
  alt="Alchemy Mempool Watcher:保留中のトランザクションをガス価格とステータス付きで一覧表示"
  width={1600}
  height={870}
  caption="Alchemy Mempool Watcher"
/>

‍[保留中のトランザクションがなぜ処理されないのか](https://www.alchemy.com/blog/how-to-debug-pending-ethereum-transactions)、疑問に思ったことはありませんか？ほとんどの場合、それはトランザクションのガス価格が現在の相場より低いことが原因です。このようなツールを使えば、mempool で停滞しているトランザクションを素早く特定し、それに関連するガス価格を確認し、市場価格と比較して、より高いガス価格でトランザクションを再送信すべきタイミングを判断できます。

## これらのグラフは何のためにあるのか

<ImageBlock
  src="https://media.alchemy.com/1704722888-charts-and-analytics.jpeg"
  alt="リクエスト数と利用状況の推移を示すAlchemyダッシュボードのチャート"
  width={1600}
  height={788}
  caption="Alchemyのチャートとアナリティクス"
/>

ノードプロバイダーとして、私たちがあなたのために収集できる有用な情報はたくさんあります - そして、それをできる限りわかりやすくお伝えするよう努めています！グラフとして表示できる、通常は目にすることのない情報には以下のようなものがあります：

- 時間の経過に伴うリクエスト数を、アプリごとに分解したもの。
- リクエストの IP アドレスをアメリカおよび世界地図上にマッピングしたもの（クライアントアプリから直接 Alchemy にトラフィックを送信している場合に非常に便利です！）
- アプリを通じて送信された最近のリクエストの可視化。
- アプリ・月ごとに並べ替え可能な使用履歴。トラフィックの傾向を把握するのに役立ちます！

## Alchemy が提供する他のメリットとは

Alchemy はブロックチェーン向けのノードインフラを提供しており、これは Ethereum ブロックチェーン（その他いくつかのチェーンも含む）へのリクエストの送受信に関連するすべてのインフラを、私たちが管理することを意味します。[なぜノードプロバイダーが必要なのか、詳しくはこちらをご覧ください。](https://www.alchemy.com/overviews/blockchain-node-providers)

私たちのシステムを通じてリクエストを送信するようになると、これまで説明してきたすべてのメリット - [アプリ](https://www.alchemy.com/dapps/top/defi-dapps)の構築と監視を容易にする可視化ツールやウェブベースのブラウザツール - を得ることができます。

それに加えて、以下も利用できます：

- ブロックチェーンにつきまとうスケーラビリティと一貫性の問題を解決する、独自インフラに支えられた Alchemy の Node API へのアクセス。
- ブロックチェーン上で発生するトランザクションなどのイベントに対するプッシュ通知（webhook）を提供するツール、Alchemy Notify へのアクセス。
- 通常は計算コストが高い、あるいは不可能なブロックチェーンへのリクエストを可能にする、Enhanced APIs へのアクセス。
- さらに多くの機能を、Flow、Crypto.org、L2 では Polygon や Arbitrum といった様々なチェーンで利用可能です。

## Alchemy を使い始める
ノードプロバイダーとして Alchemy を設定するのは非常に簡単です - 実際、たった1行のコードで済むはずです！[web3.js](https://www.alchemy.com/dapps/web3-js) や [ethers.js](https://www.alchemy.com/dapps/ethers-js) をすでに使っているのであれば、[私たちのダッシュボードから Alchemy アカウントを作成し](https://dashboard.alchemy.com/)、API キーを生成して、インスタンス化の部分を以下のようなコードに置き換えるだけです：

詳しいチュートリアルが必要な方は、[Getting Started with Alchemy guide](https://www.alchemy.com/docs/alchemy-quickstart-guide) をお読みください。お困りの際は、[Alchemy support center](https://www.alchemy.com/support) をご覧ください。
