🎃

ethers.js v6 の日本語チュートリアルを作った

に公開

はじめに

Ethereum の JavaScript ライブラリである ethers.js の日本語チュートリアルを作成しました。

https://github.com/nakamura196/ethers-ja-tutorial

VitePress で静的サイトとしても公開しています。

https://nakamura196.github.io/ethers-ja-tutorial/

作った背景

ethers.js は Ethereum 開発において最も広く使われているライブラリの一つです。v6 に関する日本語記事は v5 からのマイグレーション解説が中心で、初心者がゼロから学べる体系的なチュートリアルは見当たりませんでした。公式ドキュメントも英語のみのため、日本語で基礎から順を追って学べるチュートリアルを作成しました。

チュートリアルの内容

全 8 章構成で、基礎から実践的な内容までカバーしています。

テーマ 内容
1 環境構築 Node.js と ethers.js のインストール
2 プロバイダー Ethereum ネットワークへの接続
3 ウォレット ウォレットの作成と管理
4 ブロックチェーンの読み取り 残高確認・ブロック情報の取得
5 トランザクション送信 ETH の送金
6 スマートコントラクト コントラクトとのやり取り
7 イベント イベントのリスニング
8 ユーティリティ 単位変換・ハッシュなどの便利機能

特徴

すぐに動くサンプルコード付き

examples/ ディレクトリに実行可能なサンプルコードを用意しています。

git clone https://github.com/nakamura196/ethers-ja-tutorial.git
cd ethers-ja-tutorial
npm install
node examples/01-connect.mjs

たとえば 01-connect.mjs を実行すると、Ethereum メインネットの最新ブロック番号やガス価格が取得できます。

import { ethers } from "ethers";

const provider = ethers.getDefaultProvider("mainnet");

const blockNumber = await provider.getBlockNumber();
console.log("最新ブロック番号:", blockNumber);

const feeData = await provider.getFeeData();
console.log("ガス価格:", ethers.formatUnits(feeData.gasPrice, "gwei"), "Gwei");

VitePress によるドキュメントサイト

チュートリアルは VitePress で静的サイト化し、GitHub Pages でホスティングしています。サイドバーから各章にアクセスでき、目次も自動生成されます。

GitHub Actions で main ブランチへの push 時に自動デプロイされる構成です。

ethers.js v5 との違い

このチュートリアルは v6 に対応しています。v5 からの主な変更点として、以下のような違いがあります。

  • ethers.providers.JsonRpcProviderethers.JsonRpcProvider(フラットな名前空間)
  • ethers.utils.formatEther()ethers.formatEther()
  • BigNumber → ネイティブの BigInt
  • Contract のイベントリスニング API の変更

v5 のコードをそのまま使うと動かないケースが多いため、v6 に特化したチュートリアルを用意しました。

技術スタック

  • ethers.js v6 — Ethereum ライブラリ
  • VitePress — 静的サイトジェネレーター
  • GitHub Actions — CI/CD(自動デプロイ)
  • GitHub Pages — ホスティング

おわりに

Ethereum 開発に興味があるけれど英語のドキュメントに抵抗がある方や、ethers.js v6 の使い方を体系的に学びたい方の参考になれば嬉しいです。

Issue や PR でのフィードバックも歓迎しています。

https://github.com/nakamura196/ethers-ja-tutorial


動画版(生成AIによる自動生成): この記事の内容をずんだもん×四国めたんの掛け合いで解説しています。自動生成のため、内容に誤りがある可能性があります。正確な情報は記事本文をご参照ください。

Discussion