メインコンテンツへスキップ
Change page

JavaScript APIライブラリ

ウェブアプリがEthereumブロックチェーンと対話する(すなわち、ブロックチェーンデータの読み取りやネットワークへのトランザクション送信)には、Ethereumノードに接続する必要があります。

この目的のために、すべてのEthereumクライアントはJSON-RPC仕様を実装しており、アプリケーションが利用できる統一されたメソッドのセットが用意されています。

JavaScriptでイーサリアムノードに接続する場合、通常のJavaScriptを使用することは可能です。しかし、エコシステム内には、作業をより簡単にするいくつかの便利なライブラリがあります。 これらのライブラリにより、デベロッパーは直感的な1行のメソッドを作成するだけで、イーサリアムとやり取りするJSON-RPCリクエストを (内部的に) 初期化できるようになります。

マージ以降は、ノードの実行には、実行クライアントとコンセンサスクライアントという2つの接続されたEthereumソフトウェアが必要になることに注意してください。 必ず、ノードに実行クライアントとコンセンサスクライアントの両方が含まれるようにしてください。 ご使用のノードがローカルマシン上にない場合(例:ノードがAWSインスタンス上で実行されている)、チュートリアルのIPアドレスを適宜更新してください。 詳細については、ノードの実行に関するページをご覧ください。

前提条件

JavaScriptを理解することに加えて、EthereumスタックEthereumクライアントを理解しておくと役立つでしょう。

ライブラリの利点

これらのライブラリにより、イーサリアムノードと直接やり取りする際の複雑さが抽象化されます。 また、ユーティリティ関数(例: ETHからGweiへの変換)も提供されているため、開発者はイーサリアムクライアントの複雑な処理に費やす時間を減らし、アプリケーション独自の機能に集中できます。

ライブラリの機能

Ethereumノードへの接続

providersライブラリを使用することで、JSON-RPC、INFURA、Etherscan、AlchemyまたはMetaMaskに関係なく、イーサリアムに接続してデータを読み取ることができます。

警告: Web3.jsは2025年3月4日にアーカイブされました。 発表を読む (opens in a new tab)。 新しいプロジェクトでは、ethers.js (opens in a new tab)viem (opens in a new tab)のような代替ライブラリの使用を検討してください。

Ethers.jsを使った例

// BrowserProviderは標準のWeb3プロバイダをラップしたもので、
// MetaMaskが各ページにwindow.ethereumとしてインジェクトするものです
const provider = new ethers.BrowserProvider(window.ethereum)

// MetaMaskプラグインは、トランザクションに署名して
// イーサを送信し、ブロックチェーン内の状態を変更するための支払いを行うこともできます。
// そのためには、アカウントの署名者が必要です...
const signer = provider.getSigner()

Web3.jsを使った例

一度セットアップすると、ブロックチェーンへ以下のクエリが可能になります。

  • ブロック番号
  • ガスの推定値
  • スマートコントラクトのイベント
  • ネットワークID
  • 等々。

ウォレット機能

これらのライブラリは、ウォレットの作成、キーの管理、トランザクションへ署名を行います。

Ethers.jsを使った例

完全なドキュメントを読む (opens in a new tab)

セットアップ後、以下が可能になります。

  • アカウントの作成
  • トランザクションの送信
  • トランザクションへの署名
  • 等々。

スマートコントラクト関数との対話

Javascriptクライアントライブラリを使用すると、コンパイルされたコントラクトのアプリケーションバイナリインタフェース (ABI) を読み取ることによって、アプリからスマートコントラクト関数を呼び出せるようになります。

ABIには基本的に JSON形式でコントラクトの関数が記述されており、それを通常のJavaScriptオブジェクトのように使用することができます。

以下はSolidityのスマートコントラクトです:

上記は次のようなJSONになります:

次のことが可能であることを意味します:

  • スマートコントラクトにトランザクションを送信し、メソッドを実行
  • EVMでメソッド実行時にかかるガス代を見積もるためにコール
  • コントラクトのデプロイ
  • その他

ユーティリティ関数

ユーティリティ関数は、イーサリアムでの構築を少し簡単にする便利なショートカットです。

ETHの値は、デフォルトでweiに設定されています。 1 ETHは、1,000,000,000,000,000,000,000,000,000,000,000,000 wei です。つまり、非常に巨大な数値を扱っているということです。 web3.utils.toWeiは、etherをWeiに変換します。

Ethers.jsで記述した場合は次のようになります:

// Get the balance of an account (by address or ENS name)
balance = await provider.getBalance("ethers.eth")
// { BigNumber: "2337132817842795605" }

// Often you will need to format the output for the user
// which prefer to see values in ether (instead of wei)
ethers.utils.formatEther(balance)
// '2.337132817842795605'

利用可能なライブラリ

Web3.js - Ethereum JavaScript API

Ethers.js - JavaScriptとTypeScriptにおける完全なEthereumウォレットの実装とユーティリティ。

The Graph - EthereumとIPFSのデータをインデックス化し、GraphQLを使用してクエリを実行するためのプロトコル。

Alchemy SDK - 強化されたAPIを備えたEthers.jsのラッパー。

viem - EthereumのためのTypeScriptインターフェース。

Drift - 組み込みのキャッシュ、フック、テストモックを備えたTypeScriptメタライブラリ。

参考リンク

役に立つコミュニティリソースを知っていますか? Edit this page and add it!

ページの最終更新: 2026年2月25日

この記事は役に立ちましたか?