
Next.jsでMetaMaskの「ウォレット接続」ボタンを統合する方法を学びましょう。セットアップ、MetaMask SDKの使用、ShadcnUIによるUI作成をカバーするチュートリアルです。

Web3において、ウォレットとはユーザーがブロックチェーンネットワークと対話できるデジタルアプリケーションを指します。ウォレットはユーザーと分散型ブロックチェーンの世界をつなぐ橋渡し役を担っています。メールアドレスとパスワードの組み合わせやOAuthサービスを認証に使用する従来のWebアプリケーションとは異なり、Web3アプリはウォレットの所有権とそれに紐づく秘密鍵に基づいてユーザーを認証します。「Connect Wallet」ボタンは、この認証プロセスを開始するためのものです。
このチュートリアルでは、MetaMaskウォレットとの認証プロセスを開始する「Connect Wallet」ボタンをNext.jsアプリに実装します。
Next.jsおよびReactの基本的な知識。
Node.jsおよびnpm/yarnがインストール済みであること。
ブラウザにMetaMask拡張機能がインストール済みであること。
これらはチュートリアルの前提条件ですが、実際に始めながら学ぶことが最善の方法です。
Next.jsプロジェクトをセットアップするには、マシンにNode.jsがインストールされている必要があります。Node.jsのインストール後、ターミナルを開いて以下のコマンドを実行することで、新しいNext.jsアプリケーションを作成できます:
npx create-next-app@latest以下のプロンプトが表示されます:
このコマンドは、指定したプロジェクト名で新しいフォルダを作成し、Next.jsの初期構造をセットアップして、必要な依存関係をすべてインストールします。作成されたフォルダに移動してください。
cd next-metamask-template次にnpm run devコマンドを実行します。このコマンドはNext.jsアプリケーションを開発モードで起動し、Webブラウザでhttp://localhost:3000にアクセスすることでアプリケーションを確認できます。
アプリにコンポーネントライブラリを追加します。ShadcnUIをインストールしましょう。
npx shadcn-ui@latest initcomponents.jsonを設定するための以下のプロンプトが表示されます:
ShadcnUIコンポーネントライブラリから、このチュートリアルではButtonとPopoverの2つのコンポーネントを使用します。
また、@metamask/sdk-reactも使用します。詳細はMetaMaskドキュメントでご確認いただけます。
SDKをインストールしましょう:
npm i @metamask/sdk-reactNavBar.tsxという新しいコンポーネントを作成し、「Connect Wallet」ボタンとSDKを追加します。最初のコンポーネントは以下のようになります:
ここで行った内容を確認しましょう:
1. useSDKフック:まず、MetaMask SDKの機能にアクセスするためのuseSDKフックに注目します。このフックは、MetaMaskと対話するためのSDKオブジェクト、ウォレットの接続状態を確認するconnectedブール値、接続状態をチェックするconnectingブール値、そしてユーザーのアカウントアドレスにアクセスするためのaccountを提供します。
2. 接続・切断関数:connectとdisconnectという2つの重要な関数が含まれています。connect関数は、SDKを使用してMetaMaskウォレットとの接続を確立しようとする非同期処理です。接続が成功すると、useSDKフックのconnectedとaccountの値が更新されます。一方、disconnect関数はsdk.terminate()を呼び出してウォレットを切断するために使用されます。
3. UI要素:ButtonとPopoverの2つのUI要素を実装しています。コンポーネントのレンダリングは接続状態に応じて変化します。接続中の場合は、フォーマットされたアカウントアドレスと切断オプションを表示するPopoverコンポーネントが表示されます。未接続の場合は「Connect Wallet」ボタンが表示され、接続処理中は無効化されます。
次にNavBarのコードを追加しましょう:
ここで行った内容を確認しましょう:
host変数:この変数は、SDKオプションで使用するために現在のウィンドウのホストアドレスを取得します。ブラウザ環境で実行されているかどうかを確認する条件チェックが含まれています。
SDKオプション:MetaMask SDKの設定オプションで、ログやインストールチェックの設定、およびdappに関するメタデータを含みます。
NavBarコンポーネント:NavBarはホームページへのリンクを含み、ConnectWalletButtonコンポーネントを組み込んでいます。MetaMask SDKから必要なコンテキストを提供するため、@metamask/sdk-reactからインポートしたMetaMaskProviderコンポーネントでConnectWalletButtonをラップしています。
ウォレットアイコン:ウォレットアイコンの取得には、SVG画像をReactコンポーネントに変換するツールであるSVGRを使用しました。
NavBarにウォレットの完全なアドレスが表示されすぎないよう、libフォルダ内のutils.tsファイルを調整します。これにより、アドレスがより簡潔な形式で表示されます。
以下の行を追加してください:
上記のformatBalance、formatChainAsNum、formatAddressという関数は、dApp全体でインポートして使用することで、ブロックチェーンデータを一貫した形式でユーザーに表示するために設計されています。
NavBarコンポーネントでは、以下のようにインポートします:
import { formatAddress } from "../lib/utils";そして、ボタンでは以下のように使用します:
あとはNavBar.tsxをlayout.tsxコンポーネントにインポートするだけです。
開発サーバーを起動すると、アプリに加えた変更が確認できます。
MetaMask SDKは、DAppを構築する上で非常に便利であり、まさにゲームチェンジャーと言えます。ユーザーがMetaMaskブラウザ拡張機能やMetaMask Mobileに簡単に接続できるようにします。
これはMetaMask SDKを使い始めるための入門でしたが、このSDKではさらに多くのことが可能であり、フルスタックアプリケーションでも活用できます。このプロジェクトのコードはこちらのリポジトリで確認できます。
以下のリソースもあわせてご確認されることをお勧めします:
MetaMask Docs: https://docs.metamask.io/wallet/how-to/connect/set-up-sdk/javascript/react/
EventSea:MetaMask SDKを使用したフルスタックイベントDapp: https://github.com/Consensys/eventsea
Happy Building. 🚀
AIによる翻訳です。エラーが含まれている可能性があります。常に情報を確認してください。