ts-sdk-client について
Aptos アプリを開発する TypeScript 開発者向けに、`@aptos-labs/ts-sdk` のクライアント設定を案内するスキルです。ネットワーク選択、エンドポイント指定、インスタンスの再利用を扱います。
主な機能
- 01AptosConfig のネットワーク設定
- 02Aptos クライアントの単一インスタンス化
- 03カスタムサービスエンドポイントの指定
- 04Bun 向け HTTP 設定
- 05アカウント・トランザクション API の利用
活用シーン
- 01Aptos dApp クライアントの設定
- 02テストネットまたはメインネットの選択
- 03カスタム fullnode・indexer URL の設定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aptos-labs/ aptos-agent-skills --skill ts-sdk-clientインストール後、Claude Code で/ts-sdk-clientを入力して読み込まれたか確認します。
詳細
TypeScript SDK:Aptos クライアント
目的
@aptos-labs/ts-sdk で Aptos クライアントと AptosConfig を作成および設定する方法を説明します。すべての読み取り/書き込み API とアカウント/トランザクション API で、同じクライアントインスタンスを使用します。
必ず行うこと
- アプリごとに Aptos インスタンスを 1 つ作成し(シングルトン)、再利用します。同じネットワークに対して
new Aptos(config)を複数回呼び出さないでください。 AptosConfigでネットワークを設定します。Network.TESTNETまたはNetwork.MAINNET(またはカスタムエンドポイント)を使用します。- 本番環境ではネットワーク/URL に環境変数を使用します。例:
process.env.APTOS_NETWORKまたはimport.meta.env.VITE_APP_NETWORK。 - 開発環境では
Network.TESTNETをデフォルトとして使用します。devnet は頻繁にリセットされます。
決して行わないこと
- リクエストごとに新しい Aptos クライアントを作成しないでください。シングルトンを再利用します。
- パブリックネットワークを使用するとき、ソースコードに fullnode/indexer の URL を直接記述しないでください。
Network列挙型を使用します。 - カスタムエンドポイントを使用するときに
networkを省略しないでください。v5.2 以降では、カスタム URL とともにNetwork.CUSTOMを使用します。
基本設定
import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
const config = new AptosConfig({ network: Network.TESTNET });
const aptos = new Aptos(config);
ネットワークのオプション
// Predefined networks
const devnet = new AptosConfig({ network: Network.DEVNET });
const testnet = new AptosConfig({ network: Network.TESTNET });
const mainnet = new AptosConfig({ network: Network.MAINNET });
// Custom endpoints (network is REQUIRED in v5.2+)
const custom = new AptosConfig({
network: Network.CUSTOM,
fullnode: "https://your-fullnode.example.com/v1",
indexer: "https://your-indexer.example.com/v1/graphql",
faucet: "https://your-faucet.example.com"
});
シングルトンパターン(推奨)
// lib/aptos.ts or similar
import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
function getNetwork(): Network {
const raw = typeof process !== "undefined" ? process.env.APTOS_NETWORK : import.meta.env?.VITE_APP_NETWORK;
switch (raw) {
case "mainnet":
return Network.MAINNET;
case "devnet":
return Network.DEVNET;
default:
return Network.TESTNET;
}
}
const config = new AptosConfig({ network: getNetwork() });
export const aptos = new Aptos(config);
オプションのエンドポイント(サービスごとに上書き)
const config = new AptosConfig({
network: Network.TESTNET,
fullnode: "https://fullnode.testnet.aptoslabs.com/v1", // override default
indexer: "https://indexer.testnet.aptoslabs.com/v1/graphql",
faucet: "https://faucet.testnet.aptoslabs.com",
pepper: "https://...", // keyless pepper service
prover: "https://..." // keyless prover
});
const aptos = new Aptos(config);
クライアント設定(HTTP、タイムアウト、Bun)
// Disable HTTP/2 when using Bun (recommended)
const config = new AptosConfig({
network: Network.TESTNET,
clientConfig: { http2: false }
});
const aptos = new Aptos(config);
クライアントの使用
作成後は、次の用途で同じ aptos インスタンスを使用します。
- アカウント/残高:
aptos.getAccountInfo()、aptos.getBalance()、aptos.getAccountResources()など。 - トランザクション:
aptos.transaction.build.simple()、aptos.signAndSubmitTransaction()、aptos.waitForTransaction()。 - ビュー:
aptos.view()。 - フォーセット:
aptos.fundAccount()(devnet/testnet)。 - コイン/トークン/オブジェクト/ANS/ステーキング:
aptos.coin.*、aptos.digitalAsset.*、aptos.fungibleAsset.*、aptos.object.*、aptos.ans.*、aptos.staking.*。
よくある間違い
| 間違い | 正しい方法 |
|---|---|
| 関数ごとに Aptos を作成する | シングルトンを 1 つ作成し、aptos を渡すか、共有モジュールからインポートします |
| 永続的な開発環境に devnet を使う | testnet を優先します。devnet はリセットされます |
Network.CUSTOM を使わずにカスタム URL を指定する | fullnode/indexer/faucet を指定するときは network: Network.CUSTOM を設定します |
Bun で http2: false を設定し忘れる | Bun では clientConfig: { http2: false } を設定します |
参考資料
- SDK:
src/api/aptos.ts、src/api/aptosConfig.ts - パターン:TYPESCRIPT_SDK.md
- 関連:ts-sdk-account、ts-sdk-transactions、 ts-sdk-wallet-adapter、use-ts-sdk
コメント
Markdown 対応