機能

Collectionの管理

Last updated January 31, 2026

このガイドでは、Metaplex Core SDKを使用してSolanaでCore Collectionを作成・管理する方法を説明します。Collectionは関連するAssetを共有のアイデンティティとコレクションレベルのメタデータとプラグインでグループ化します。

学習内容

  • 名前、URI、オプションのプラグインを持つCollectionの作成
  • 作成時にAssetをCollectionに追加
  • Collectionメタデータの取得と更新
  • コレクションレベルのプラグイン(ロイヤリティなど)の管理

概要

Collectionは関連するAssetをグループ化するCoreアカウントです。コレクションメタデータ(名前、画像、説明)を保存し、コレクション内のすべてのAssetに適用されるプラグインを保持できます。

  • CollectionはAssetグループの「表紙」として機能します
  • Assetはcollectionフィールドを通じてCollectionを参照します
  • Collectionプラグイン(ロイヤリティなど)はすべてのメンバーAssetに適用できます
  • Collectionの作成には約0.0015 SOLかかります

スコープ外

Token Metadata Collection(mpl-token-metadataを使用)、圧縮NFTコレクション(Bubblegumを使用)、既存のコレクションのCoreへの移行。

クイックスタート

ジャンプ先: Collection作成 · プラグイン付き · 取得 · 更新

  1. インストール: npm install @metaplex-foundation/mpl-core @metaplex-foundation/umi
  2. コレクションメタデータJSONをアップロードしてURIを取得
  3. createCollection(umi, { collection, name, uri })を呼び出す
  4. Asset作成時にCollectionアドレスを渡す

前提条件

  • 署名者とRPC接続が設定されたUmi
  • トランザクション手数料用のSOL(Collectionあたり約0.002 SOL)
  • Arweave/IPFSにアップロードされたコレクション画像付きのメタデータJSON

Collectionとは?

Collectionは、同じシリーズやグループに属するAssetのグループです。Assetをグループ化するには、まずコレクション名やコレクション画像などのコレクション関連のメタデータを保存するためのCollection Assetを作成する必要があります。Collection Assetはコレクションの表紙として機能し、コレクション全体のプラグインも保存できます。 Collection Assetから保存およびアクセスできるデータは以下の通りです:

アカウント説明
keyアカウントキーの識別子
updateAuthority新しいAssetの権限者
nameコレクション名
uriコレクションのオフチェーンメタデータへのURI
num mintedコレクション内でミントされたAssetの数
current size現在コレクション内にあるAssetの数

Collectionの作成

Core Collectionを作成するには、CreateCollection命令を次のように使用できます:

シンプルなCollectionの作成

以下のスニペットは、プラグインや特別なものなしでシンプルなCollectionを作成します。

1import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
2import { createCollection } from '@metaplex-foundation/mpl-core'
3import { mplCore } from '@metaplex-foundation/mpl-core'
4import { generateSigner } from '@metaplex-foundation/umi'
5
6// Initialize UMI
7const umi = createUmi('https://api.devnet.solana.com')
8 .use(mplCore())
9
10// Generate a new keypair for the collection
11const collectionSigner = generateSigner(umi)
12
13// Create a new Collection
14await createCollection(umi, {
15 collection: collectionSigner,
16 name: 'My Collection',
17 uri: 'https://example.com/collection.json',
18}).sendAndConfirm(umi)
19
20console.log('Collection created:', collectionSigner.publicKey)

プラグイン付きCollectionの作成

以下のスニペットは、Royaltiesプラグインを添付してCollectionを作成します。こちらで説明されているように、追加のプラグインを添付できます。

プラグイン付きMPL Core Collectionの作成

import { generateSigner, publicKey } from '@metaplex-foundation/umi'
import { createCollection, ruleSet } from '@metaplex-foundation/mpl-core'
const collectionSigner = generateSigner(umi)
const creator1 = publicKey('11111111111111111111111111111111')
const creator2 = publicKey('22222222222222222222222222222222')
await createCollection(umi, {
collection: collectionSigner,
name: 'My NFT',
uri: 'https://example.com/my-nft.json',
plugins: [
{
type: 'Royalties',
basisPoints: 500,
creators: [
{
address: creator1,
percentage: 20,
},
{
address: creator2,
percentage: 80,
},
],
ruleSet: ruleSet('None'), // 互換性ルールセット
},
],
}).sendAndConfirm(umi)

Collectionの取得

Collectionを取得するには、以下の関数を使用できます:

Collectionの取得

import { fetchCollectionV1 } from '@metaplex-foundation/mpl-core'
import { publicKey } from '@metaplex-foundation/umi'
const collectionId = publicKey('11111111111111111111111111111111')
const collection = await fetchCollection(umi, collectionId)
console.log(collection)

Collectionの更新

Core Collectionのデータを更新するには、UpdateCollection命令を使用します。例えば、この命令を使用してCollectionの名前を変更できます。

Collectionの更新

import { publicKey } from '@metaplex-foundation/umi'
import { updateCollection } from '@metaplex-foundation/mpl-core'
const collectionAddress = publicKey('1111111111111111111111111111111')
await updateCollection(umi, {
collection: collectionAddress,
name: 'my-nft',
uri: 'https://exmaple.com/new-uri',
}).sendAndConfirm(umi)

Collectionプラグインの更新

Core Collectionに添付されているプラグインの動作を変更したい場合は、updateCollectionPlugin命令を使用できます。

Collectionプラグインの更新

import { publicKey } from '@metaplex-foundation/umi'
import { updateCollectionPlugin, ruleSet } from '@metaplex-foundation/mpl-core'
const collectionAddress = publicKey('1111111111111111111111111111111')
const newCreator = publicKey('5555555555555555555555555555555')
await updateCollectionPlugin(umi, {
collection: collectionAddress,
plugin: {
type: 'Royalties',
basisPoints: 400,
creators: [{ address: newCreator, percentage: 100 }],
ruleSet: ruleSet('None'),
},
}).sendAndConfirm(umi)

よくあるエラー

Collection account already exists

Collectionキーペアはすでに使用されています。新しい署名者を生成してください:

const collectionSigner = generateSigner(umi) // 一意である必要があります

Authority mismatch

あなたはCollectionのUpdate Authorityではありません。CollectionのupdateAuthorityフィールドが署名者と一致しているか確認してください。

Insufficient funds

支払いウォレットには約0.002 SOLが必要です。以下でファンドを追加してください:

solana airdrop 1 <WALLET_ADDRESS> --url devnet

注意事項

  • collectionパラメータは作成時に新しいキーペアである必要があります
  • Collectionプラグインは、Assetレベルでオーバーライドしない限り、Assetに継承されます
  • 作成後にCollectionの状態を確認するにはfetchCollectionを使用してください
  • numMintedカウンターは現在のサイズではなく、これまでに作成されたAssetの総数を追跡します

クイックリファレンス

プログラムID

ネットワークアドレス
MainnetCoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d
DevnetCoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d

最小コード

minimal-collection.ts
import { generateSigner } from '@metaplex-foundation/umi'
import { createCollection } from '@metaplex-foundation/mpl-core'
const collection = generateSigner(umi)
await createCollection(umi, { collection, name: 'My Collection', uri: 'https://...' }).sendAndConfirm(umi)

コスト内訳

項目コスト
Collectionアカウントのレント約0.0015 SOL
トランザクション手数料約0.000005 SOL
合計約0.002 SOL

FAQ

CollectionとAssetの違いは何ですか?

CollectionはAssetをグループ化するコンテナです。独自のメタデータ(名前、画像)を持ちますが、Assetのように所有したり転送したりすることはできません。Assetはユーザーが所有する実際のNFTです。

既存のAssetをCollectionに追加できますか?

はい、newCollectionパラメータを指定してupdate命令を使用します。AssetのUpdate AuthorityがターゲットのCollectionに追加する権限を持っている必要があります。

NFTにCollectionは必要ですか?

いいえ。AssetはCollectionなしでスタンドアロンで存在できます。ただし、Collectionを使用するとコレクションレベルのロイヤリティ、発見しやすさ、一括操作が可能になります。

CollectionからAssetを削除できますか?

はい、update命令を使用してAssetのCollectionを変更できます。AssetとCollection両方で適切な権限が必要です。

Collectionを削除するとどうなりますか?

CollectionはAssetを含んでいる間は削除できません。まずすべてのAssetを削除してから、Collectionアカウントをクローズできます。

用語集

用語定義
Collection共有メタデータの下で関連するAssetをグループ化するCoreアカウント
Update AuthorityCollectionのメタデータとプラグインを変更できるアカウント
numMintedCollection内でこれまでに作成されたAssetの総数を追跡するカウンター
currentSize現在Collection内にあるAssetの数
CollectionプラグインCollectionに添付されたプラグイン(例:Royalties)
URICollectionのオフチェーンメタデータを指すURL