メインコンテンツまでスキップ

オブジェクト データの取得方法

対象読者: 初めて Sui の読み取り操作を実装する開発者。 目標: Sui devnet から生のオブジェクト データを取得して検査する Node.js スクリプトを作成する。


概要

このチュートリアルでは、SuiClient を使用して読み取り操作を実行し、Sui devnet に特定の **NFT(非代替性トークン)**オブジェクトを照会して、そのオンチェーン属性を確認します。

作成するもの: ネットワークに接続し、ID 指定でオブジェクトをリクエストし、JSON レスポンスを表示する軽量な Node.js スクリプト。

前提条件

  • Node.js: v18.0.0 以降。
  • パッケージ マネージャー: npm または yarn
  • ターミナル: 基本的なコマンドライン スキル。

ステップ 1: プロジェクトのセットアップ

  1. 新しいディレクトリを作成して移動します。

    mkdir sui-data-fetcher && cd sui-data-fetcher
  2. Node プロジェクトを初期化し、ES モジュール用に構成します。

    npm init -y
    npm pkg set type="module"
  3. Sui TypeScript SDK をインストールします。

    npm install @mysten/sui

ステップ 2: クライアントの初期化

index.js という名前のファイルを作成します。まずクライアントをインポートし、devnet に接続します。

import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';

// 構成
const NETWORK = 'devnet';

// 1. クライアントを初期化する
// getFullnodeUrl は 'devnet' 正しい RPC エンドポイントを自動的に解決します
const client = new SuiClient({
url: getFullnodeUrl(NETWORK),
});

console.log(`✅ Sui ${NETWORK} に接続しました`);

ステップ 3: クエリ ロジックの記述

既知の「devnet NFT」オブジェクトを照会します。

注記

devnet では、ネットワークのワイプ(消去)中にオブジェクトが頻繁に削除されます。以下の ID で失敗する場合は、Sui Explorer で新しいオブジェクト ID を探す必要があるかもしれません。

index.js に以下のコードを追加します。

// devnet 上の既知のオブジェクト ID (NFT の例)
const TARGET_OBJECT_ID = '0x7d6539b7a423b035109b823e20c641c73defd23b8f3107b38d1d368688c2797c';

async function fetchObjectData() {
try {
console.log(`🔍 オブジェクトを照会中: ${TARGET_OBJECT_ID}...`);

// 2. 取得を実行する
const response = await client.getObject({
id: TARGET_OBJECT_ID,
// "options" はノードが返すデータの量を決定します。
// ペイロードを小さく保つため、コンテンツ(フィールド)を厳密にリクエストします。
options: {
showContent: true,
showType: true
}
});

// 3. レスポンスを処理する
if (response.error) {
throw new Error(`オブジェクトが見つかりません: ${response.error.code}`);
}

console.log('--- オブジェクト データ ---');
console.dir(response.data, { depth: null, colors: true });

} catch (err) {
console.error('❌ クエリに失敗しました:', err.message);
}
}

fetchObjectData();

ステップ 4: 実行と検証

ターミナルでスクリプトを実行します。

node index.js

出力の理解

以下のような JSON 構造が表示されるはずです。

{
"objectId": "0x7d...",
"version": "120",
"digest": "AuF...",
"type": "0x2::devnet_nft::DevNetNFT",
"content": {
"dataType": "moveObject",
"fields": {
"name": "Sui DevNet NFT",
"description": "An NFT created by the Sui DevNet",
"url": "ipfs://..."
}
}
}
  • digest: オブジェクトのバージョンを検証するハッシュ。
  • type: 特定の Move 言語タイプ定義(Package::Module::Type)。
  • content.fields: オンチェーンに保存されている実際のデータ(例:NFT の名前やアドレス)。

次のステップ

生のデータを正常に取得できましたが、コード内の options パラメーターに気付いたことでしょう。リクエストできるデータを正確に理解するには、API リファレンス ドキュメントを参照してください。