near-dapp について
NEAR dApp の作成や、既存の React・非 React アプリへのウォレット接続に使うスキルです。用途に応じて、スキャフォールディング、React hooks、低レベルコネクターの手順を案内します。
主な機能
- 01create-near-app によるアプリ作成
- 02hooks を使った React のウォレット接続
- 03非 React 向けコネクター設定
- 04コントラクト状態の読み書き
活用シーン
- 01NEAR dApp の新規作成
- 02React アプリへのウォレットログイン追加
- 03バニラ JavaScript でのウォレット接続
- 04NEAR コントラクトメソッドの読み出しや呼び出し
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ near/ agent-skills --skill near-dappインストール後、Claude Code で/near-dappを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/create-near-app.mdnear-connect-hooks.mdnear-connect.md詳細
NEAR dApp
上流ドキュメント
- Web3 アプリのクイックスタート — 公式の初めての dApp ガイド
- ウォレットコネクター — ここで使用する
@hot-labs/near-connectコネクターの公式ドキュメント - ウォレットログインのチュートリアル
- create-near-app リポジトリ — スキャフォールディングツールのソース(検証済みテンプレート:
auction、auction-adv。--helpの内容が正式な情報です)
選択ガイド
次に従うパスを判断します。
パス A:新規プロジェクト
NEAR dApp をゼロから作成する場合です。
- references/create-near-app.md を読みます
- スキャフォールディングを実行します。
npx create-near-app@latest
または、引数を指定します。
npx create-near-app my-app --frontend vite-react --contract rs --install
フレームワークの選択肢: vite-react | next-app | next-page
コントラクトの選択肢: rs(Rust)| ts(TypeScript)
- スキャフォールディングしたアプリでウォレット接続が必要な場合は、パス B も実行します。
パス B:既存のプロジェクト
既存の React アプリに NEAR ウォレット接続を追加する場合です。
- React フックの API とパターンについて、references/near-connect-hooks.md を読みます
- 低レベルのウォレット API または React 以外の連携が必要な場合は、references/near-connect.md も読みます
クイックセットアップ:
npm install near-connect-hooks @hot-labs/near-connect near-api-js
// 1. Wrap app root with NearProvider
import { NearProvider } from 'near-connect-hooks';
<NearProvider config={{ network: 'mainnet' }}>
<App />
</NearProvider>
// 2. Use hook in components
import { useNearWallet } from 'near-connect-hooks';
const { signedAccountId, signIn, signOut, viewFunction, callFunction } = useNearWallet();
パス C:React 以外または Vanilla JS
React フックを使わずに、@hot-labs/near-connect を直接使用します。
npm install @hot-labs/near-connect
import { NearConnector } from "@hot-labs/near-connect";
const connector = new NearConnector({ network: "mainnet" });
connector.on("wallet:signIn", async (t) => {
const wallet = await connector.wallet();
const address = t.accounts[0].accountId;
});
await connector.connect();
主なパターン
- コントラクトの状態を読み取る(ウォレット不要):
viewFunction({ contractId, method, args }) - コントラクトに書き込む(ウォレットが必要):
callFunction({ contractId, method, args, deposit }) - NEAR を送金する:
transfer({ receiverId, amount }) - NEAR ↔ yoctoNEAR:
near-api-jsのnearToYocto()/yoctoToNear()を使用します - 1 NEAR =
"1000000000000000000000000"yoctoNEAR - デフォルトのガス量:
"30000000000000"(30 TGas)
コメント
Markdown 対応