機能
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作成 · プラグイン付き · 取得 · 更新
- インストール:
npm install @metaplex-foundation/mpl-core @metaplex-foundation/umi - コレクションメタデータJSONをアップロードしてURIを取得
createCollection(umi, { collection, name, uri })を呼び出す- 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
| ネットワーク | アドレス |
|---|---|
| Mainnet | CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d |
| Devnet | CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d |
最小コード
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 Authority | Collectionのメタデータとプラグインを変更できるアカウント |
| numMinted | Collection内でこれまでに作成されたAssetの総数を追跡するカウンター |
| currentSize | 現在Collection内にあるAssetの数 |
| Collectionプラグイン | Collectionに添付されたプラグイン(例:Royalties) |
| URI | Collectionのオフチェーンメタデータを指すURL |
