mcpField
S
search-aptos-examples

search-aptos-examples

github.com/aptos-labs開発2086 回インストール24 週間前に更新
リポジトリ

search-aptos-examples について

Aptos 上で Move を開発する人向けに、コントラクトを書く前に aptos-core と daily-move の公式例を検索する手順を示すスキルです。コントラクトの種類ごとに例を整理し、パターンの理解とセキュリティチェックの維持を重視します。

主な機能

  1. 01コントラクトの種類別の例検索
  2. 02aptos-core と daily-move の参照
  3. 03セキュリティパターンの応用ガイド
  4. 04テストとアクセス制御の確認項目

活用シーン

  1. 01NFT やトークンのコントラクトパターン検索
  2. 02DeFi、DAO、マーケットプレイスの例の調査
  3. 03Move のモジュールやオブジェクトパターンの学習
  4. 04コード応用前のセキュリティとテストの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aptos-labs/aptos-agent-skills --skill search-aptos-examples

インストール後、Claude Code で/search-aptos-examplesを入力して読み込まれたか確認します。

詳細

Aptos のサンプルを検索するスキル

概要

このスキルは、新しいコントラクトを記述する前に、Aptos の公式リポジトリで関連するサンプルを見つけるのに役立ちます。確立されたパターンに従えるよう、必ず最初にサンプルを検索してください。

リポジトリ:

  • aptos-labs/aptos-core/aptos-move/move-examples/ — ベストプラクティスを示す 53 個以上の公式 Move サンプル
  • aptos-labs/daily-move/snippets/ — デザインパターン、Move 2 の機能、コンポーザブル NFT などを扱う、厳選された 17 個の学習用サンプル

基本的なワークフロー

ステップ 1:作成するものを特定する

コントラクトを分類します。

  • NFT/トークン:NFT コレクション、デジタルアセット、コレクティブル
  • 代替可能なアセット:コイン、トークン、通貨
  • DeFi:DEX、AMM、レンディング、ステーキング
  • ガバナンス:DAO、投票、提案
  • マーケットプレイス:取引、エスクロー、オークション
  • ゲーム:アイテム、キャラクター、ゲームロジック
  • インフラストラクチャ:レジストリ、設定、ユーティリティ
ステップ 2:関連するサンプルを検索する

カテゴリ別の優先サンプル:

NFT とトークンオブジェクト
  1. token_objects/ - 最新のオブジェクトベースのトークン(V2 パターン)
  2. mint_nft/ - NFT のミントパターン
  3. nft_dao/ - NFT 保有を条件とするガバナンス
  4. collection_manager/ - コレクション管理
  5. (daily-move) composable-nfts/ - ほかの NFT を含む NFT
  6. (daily-move) modifying-nfts/ - 変更可能な NFT メタデータのパターン
  7. (daily-move) parallel-nfts/ - 並行 NFT ミント
  8. (daily-move) liquid-nfts/ - 分割所有/流動性を持つ NFT

使用する場面: NFT コレクション、デジタルコレクティブル、トークン化されたアセットを構築する場合

代替可能なアセット
  1. fungible_asset/ - 最新の代替可能トークン規格
  2. coin/ - 基本的なコインの実装
  3. managed_fungible_asset/ - 管理可能な代替可能アセット
  4. (daily-move) fa-lockup-example/ - FA のロックアップとエスクローのパターン
  5. (daily-move) fractional-token/ - トークンの分割所有
  6. (daily-move) controlled-mint/ - アクセス制御によるミント管理

使用する場面: トークン、通貨、報酬ポイントを作成する場合

DeFi と取引
  1. marketplace/ - NFT マーケットプレイスのパターン
  2. swap/ - シンプルなトークンスワップ
  3. liquidity_pool/ - AMM プールの実装
  4. staking/ - ステーキングの仕組み

使用する場面: DEX、マーケットプレイス、取引プラットフォームを構築する場合

ガバナンスと DAO
  1. dao/ - DAO ガバナンスのパターン
  2. voting/ - 投票の仕組み
  3. multisig/ - マルチシグアカウント

使用する場面: DAO、ガバナンスシステム、投票機能を構築する場合

基本的なパターン
  1. hello_blockchain/ - モジュール構造の基本
  2. message_board/ - シンプルな状態管理
  3. resource_account/ - リソースのパターン(レガシーのため、新しいコードでは避けてください)
  4. (daily-move) error-codes/ - エラーコードの規約とパターン
  5. (daily-move) private-vs-public/ - 関数の可視性とアクセス
  6. (daily-move) objects/ - オブジェクトモデルの基礎

使用する場面: Move の基本やシンプルなコントラクトを学ぶ場合

高度なパターン
  1. object_playground/ - オブジェクトモデルの探求
  2. capability/ - ケイパビリティベースのセキュリティ
  3. upgradeable/ - アップグレード可能なコントラクト
  4. (daily-move) design-patterns/ - 自律型オブジェクトなどのデザインパターン
  5. (daily-move) struct-capabilities/ - 構造体ベースのケイパビリティパターン
  6. (daily-move) move-2/ - Move 2 の言語機能とイディオム
  7. (daily-move) storage/ - ストレージレイアウトと最適化のパターン
  8. (daily-move) data-structures/ - ヒープデータ構造の実装

使用する場面: 複雑なアーキテクチャやセキュリティパターンを扱う場合

ゲーム
  1. (daily-move) lootbox/ - ランダム化されたルートボックスの仕組み

使用する場面: ゲーム、ランダムな報酬、ルートシステムを構築する場合

ステップ 3:サンプルコードを確認する

確認するポイント:

  1. モジュール構造:

    • インポートはどのように整理されていますか?
    • どのような構造体が定義されていますか?
    • エラーコードはどのような構造ですか?
  2. オブジェクトの作成:

    • オブジェクトはどのように作成されていますか?
    • どのような ref が生成されますか?
    • 所有権はどのように管理されていますか?
  3. アクセス制御:

    • 署名者の権限はどのように検証されていますか?
    • オブジェクトの所有権はどのように確認されていますか?
    • どのようなロールや権限がありますか?
  4. 操作:

    • 転送はどのように処理されていますか?
    • 更新はどのように保護されていますか?
    • どのような検証が実行されていますか?
  5. テスト:

    • どのようなテストパターンが使われていますか?
    • カバレッジはどのように確保されていますか?
ステップ 4:パターンをユースケースに合わせて調整する

そのままコピーせず、調整してください:

  1. パターンを理解する: なぜこのような構造になっているのでしょうか?
  2. 主要な概念を特定する: 重要なセキュリティチェックは何でしょうか?
  3. ニーズに合わせて調整する: 独自の要件に合わせて変更してください。
  4. セキュリティを維持する: すべてのセキュリティチェックをそのまま維持してください。
  5. 十分にテストする: 100%のカバレッジを確保してください。

サンプル検索テーブル

ビルド対象検索語ソース主要なファイル
NFT コレクションtoken_objects, mint_nftaptos-coretoken_objects/sources/token.move
代替可能トークンfungible_assetaptos-corefungible_asset/sources/fungible_asset.move
マーケットプレイスmarketplaceaptos-coremarketplace/sources/marketplace.move
DAOdao, votingaptos-coredao/sources/dao.move
トークンスワップswap, liquidity_poolaptos-coreswap/sources/swap.move
ステーキングstakingaptos-corestaking/sources/staking.move
シンプルなコントラクトhello_blockchain, message_boardaptos-corehello_blockchain/sources/hello.move
オブジェクトパターンobject_playgroundaptos-coreobject_playground/sources/playground.move
コンポーザブル NFTcomposable-nftsdaily-movesnippets/composable-nfts/
FA ロックアップ/エスクローfa-lockup-exampledaily-movesnippets/fa-lockup-example/
デザインパターンdesign-patternsdaily-movesnippets/design-patterns/
Move 2 の機能move-2daily-movesnippets/move-2/
データ構造data-structuresdaily-movesnippets/data-structures/
ストレージパターンstoragedaily-movesnippets/storage/
ルートボックスのパターンlootboxdaily-movesnippets/lootbox/

サンプルへのアクセス方法

方法 1:GitHub のウェブインターフェース
https://github.com/aptos-labs/aptos-core/tree/main/aptos-move/move-examples

オンラインで閲覧し、ソースファイルを直接読めます。

方法 2:リポジトリをクローンする(推奨)
# Clone Aptos core
git clone https://github.com/aptos-labs/aptos-core.git

# Navigate to examples
cd aptos-core/aptos-move/move-examples

# List all examples
ls -la

# View specific example
cd token_objects
cat sources/token.move
方法 3:daily-move リポジトリ

オンラインで閲覧する:

https://github.com/aptos-labs/daily-move/tree/main/snippets

ローカルにクローンする:

git clone https://github.com/aptos-labs/daily-move.git
cd daily-move/snippets
ls -la
方法 4:Aptos のドキュメントを検索する
https://aptos.dev/build/smart-contracts

多くのサンプルが解説付きでドキュメント化されています。

サンプルに見られる一般的なパターン

パターン 1:オブジェクトの作成(token_objects より)
// From: token_objects/sources/token.move
public entry fun create_token(
    creator: &signer,
    collection_name: String,
    description: String,
    name: String,
    uri: String,
) {
    let constructor_ref = token::create_named_token(
        creator,
        collection_name,
        description,
        name,
        option::none(),
        uri,
    );
    // ... additional setup
}

要点: コレクションには名前付きトークンを使用し、固有のアイテムには create_object を使用します。

パターン 2:アクセス制御(dao より)
// From: dao/sources/dao.move
public entry fun execute_proposal(
    proposer: &signer,
    proposal_id: u64
) acquires DAO, Proposal {
    let dao = borrow_global_mut<DAO>(@dao_addr);
    let proposal = vector::borrow_mut(&mut dao.proposals, proposal_id);

    // Verify proposal passed
    assert!(proposal.votes_for > proposal.votes_against, E_PROPOSAL_NOT_PASSED);

    // Execute actions
    // ...
}

要点: 重要な操作を実行する前に、状態条件を検証します。

パターン 3:転送制御(fungible_asset より)
// From: fungible_asset/sources/fungible_asset.move
public fun transfer<T: key>(
    from: &signer,
    to: address,
    amount: u64
) acquires FungibleStore {
    // Verify sender has sufficient balance
    let from_store = borrow_global_mut<FungibleStore<T>>(signer::address_of(from));
    assert!(from_store.balance >= amount, E_INSUFFICIENT_BALANCE);

    // Deduct from sender
    from_store.balance = from_store.balance - amount;

    // Add to recipient
    let to_store = borrow_global_mut<FungibleStore<T>>(to);
    to_store.balance = to_store.balance + amount;
}

要点: チェック・エフェクト・インタラクションのパターン(検証、減算、加算)。

必ず守るルール

  • ✅ 新しいコントラクトを書く前に、必ずサンプルを検索します
  • ✅ aptos-core(公式)と daily-move(学習用)の両方のリポジトリを必ず確認します
  • ✅ コピーする前に、必ずパターンを理解します
  • ✅ 必ずパターンをユースケースに合わせて調整します
  • ✅ サンプルに含まれるセキュリティチェックを必ず維持します
  • ✅ どのサンプルを参考にしたか、必ず記載します
  • ✅ 調整したコードを必ず十分にテストします

絶対にしてはいけないこと

  • ❌ 理解せずにコードをコピーしてはいけません
  • ❌ サンプルに含まれるセキュリティチェックを省略してはいけません
  • ❌ 非推奨のパターン(リソースアカウント、アドレスベース)を使用してはいけません
  • ❌ サンプルが常に最新だと思い込んではいけません(ドキュメントで確認してください)
  • ❌ V1 と V2 のパターンを混在させてはいけません
  • ❌ サンプルを調整する際に、実際の秘密鍵や認証情報を含めてはいけません — "0x..." のプレースホルダーを使用してください

検索チェックリスト

コントラクトコードを書く前に、次の項目を確認します。

  • カテゴリを特定した(NFT、DeFi、DAO など)
  • aptos-core で関連するサンプルを 2~3 件見つけた
  • daily-move のスニペットで学習用のサンプルを確認した
  • モジュールの構造を確認した
  • セキュリティパターンを特定した
  • オブジェクト作成のパターンを理解した
  • アクセス制御の仕組みを把握した
  • テストのパターンを確認した
  • ユースケースに合わせて調整する準備ができた

サンプルを調整するワークフロー

手順:NFT コレクションの構築
  1. 検索: token_objects のサンプルを見つけます

  2. 構造を確認:

    token_objects/
    ├── sources/
    │   ├── collection.move  # Collection management
    │   ├── token.move       # Token operations
    │   └── property_map.move # Metadata handling
    └── tests/
        └── token_tests.move
    
  3. 主要なパターンを特定:

    • create_collection によるコレクションの作成
    • create_named_token によるトークンの発行
    • PropertyMap を使用したメタデータの保存
    • TransferRef による転送制御
  4. ニーズに合わせて調整:

    • オブジェクト作成のパターンを維持します
    • セキュリティチェックを維持します
    • カスタムフィールドを追加します
    • ビジネスロジックを追加します
    • 網羅的なテストを書きます
  5. コード内で参照:

    // Adapted from: aptos-core/move-examples/token_objects
    module my_addr::custom_nft {
        // ... your implementation
    }
    

参考資料

公式サンプル:

関連スキル:

  • write-contracts - 検索後にパターンを適用します
  • security-audit - 調整したコードのセキュリティを検証します
  • generate-tests - 調整したパターンをテストします

覚えておきましょう: まずサンプルを検索します。パターンを理解します。安全に調整します。十分にテストします。

コメント