---
title: "Solana の Metaplex について知っておくべきこと"
description: "概要、重要性、仕組み"
---

# Solana の Metaplex について知っておくべきこと

[Metaplex](https://www.alchemy.com/dapps/metaplex)は、Solana向けのNFT標準とツールのコレクションです。Metaplexを使ったSolana NFTのミント、NFTエアドロップ、NFTストアフロントなどの使い方を学びましょう。

## **Metaplexとは？**

Metaplexは、[Solana](https://alchemy.com/solana?a=7f82338b3d)上に構築され、ブロックチェーンのNFTコミュニティを強化するコントラクトのネットワークです。このエコシステムには、Token Metadata、Token Vault、Auction、Metaplexという4つのコントラクトがあります。Metaplexという用語はコントラクトエコシステム全体を指すことが多いですが、この概要では4つのうちの1つであるMetaplexコントラクトを指すために使用します。

### **Metaplexが重要な理由**

Metaplexエコシステムは、Solana上でNFTと関わる全く新しい方法を可能にし、その結果、Solanaにおける事実上のNFTツールとなっています。Metaplexを通じて、ユーザーはNFTをミントし、プライマリー/セカンダリー販売のオークションを開催し、NFTを標準的な方法で可視化できます。

### **Metaplexスマートコントラクト**

Metaplexエコシステムは4つの別々のコントラクトのコレクションであり、それらはMetaplexコントラクトを介して連携し、Solana開発者にNFT作成に必要なツールを提供します。

#### **1. Token metadata**

「mint decorator（ミント装飾機構）」と呼ばれるこのコントラクトは、NFT作成者がミントにMetadata PDA（Program Derived Address）を紐付けることを可能にします。この関連付けられたPDAには、名前、シンボル、ロイヤリティ料金、販売ステータスなど、NFTコレクションの基本情報が含まれています。

#### **2. Token vault**

その名の通り、Token Vaultコントラクトは任意のミントから預けられたNFTを保持でき、vaultおよびそこに含まれるNFTの分割所有権を可能にします。

vaultには2つの状態があります：Activated（有効化）とCombined（結合）です。

「**Activated**」状態のとき、vault内のNFTはロックされアクセスできなくなります。vaultの所有者はvaultに対するトレジャリーシェアを発行・販売でき、これによりvault内のNFTの分割所有権が作られます。

vaultが「**Combined**」に移行できるのは、流通している分割シェアが残っていない場合、つまりvault所有者がすべてのシェアを保有している場合のみです。vault内のNFTを取り戻すには、vault所有者は市場ですべての分割シェアを買い戻す必要があり、その後vaultを「Combine」できます。

#### **3. Auction**

AuctionコントラクトはMetaplex上のオークションメカニズムとして機能し、**English Auction**および**Open Edition Auction**形式でのNFTオークションを実現します。

シンプルな入札・販売プログラムとして、AuctionはMetaplexエコシステム内のNFTや他のリソースについての知識を持たずに動作します。この分離により、障害点が大幅に減り、Auctionプログラムの柔軟性が高まります。

#### **4. Metaplex**

Metaplexコントラクトは、上記の3つの主要コントラクトを管理する**AuctionManagers**を提供します。AuctionManagerはすべてのtoken metadataとそれに対応するオークションの記録を保持し、Token Metadata、Token Vault、Auctionの各コントラクト間でのアカウントデータのスムーズな移行を可能にします。

## **Metaplexのツールと機能**

ここでは、Metaplexの最も重要な機能について、それらが何を行うか、いつ使うべきか、なぜ重要か、そしてそれらの機能での構築を始める方法を紹介します。

### **Metaplex Storefrontとは？**

Metaplex Storefrontは、Metaplexコントラクトを通じてNFTを作成・販売するためのオールインワンの[NFTマーケットプレイス](https://www.alchemy.com/dapps/best/nft-marketplaces)です。[Magic Eden](https://www.alchemy.com/dapps/magic-eden)のような[中央集権型のSolana NFTマーケットプレイス](https://www.alchemy.com/overviews/solana-nft-marketplaces)とは異なり、誰でもStorefrontをホワイトラベルソリューションとして自分で作成・ホストすることも、既存のブランド化されたStorefrontを使用することもできます。

MetaplexのStorefront機能のこの独自のセルフホスト可能な特性により、ユーザーは自分自身のNFTマーケットプレイスを作成できるため、Solanaにおける分散化の利点を十分に享受できます。

#### **Metaplexでストアフロントを作成する方法**

これはStorefrontの作成方法についての簡単な概要であり、[Metaplexの公式ドキュメント](https://docs.metaplex.com/)で詳しく解説されています。

まず、GitHub上のMetaplex Storefrontのソースコードをクローンし、起動する必要があります。

次に、http://localhost:3000/にアクセスし、SolanaネットワークをDevnetに切り替えます。

Solanaのテストネットワークに不慣れな場合は、[Solanaのdevnetの使い方の完全ガイド](https://www.alchemy.com/overviews/solana-devnet)をお読みください。

続いて、「Init Store」をクリックしてトランザクションを承認し、Storefrontを初期化します。

<ImageBlock
  src="https://media.alchemy.com/1703524810-metaplex-homepage.png"
  alt="Init Storeボタンがある Metaplex Storefront セットアップページ"
  width={1600}
  height={1046}
  caption="Metaplex ホームページ"
/>

Store構成セクションで、コードをコピーし、_js/package/web_内にある_.env_ファイルに貼り付けます。

次に、`yarn start`でウェブサイトを再起動します。

<ImageBlock
  src="https://media.alchemy.com/1703525040-metaplex-storefront.jpg"
  alt="localhost:3000 から見た Storefront"
  width={1600}
  height={1046}
  caption="localhost:3000 から見た Storefront"
/>

これで、あなたのアドレスに紐付き、あなた自身がホストするStorefrontが完成しました！

Storefrontのデフォルトのユーザーインターフェースを通じて、NFTをミントし、即時購入の「Buy Now」オプションとして、またはオークションとして出品できます。NFTを作成する際は、説明、ロイヤリティ、画像を指定できます。

MetaplexのStorefront NFTツールはオープンソースでカスタマイズ可能なため、フォークしたGitHubコードを更新して、ユーザーインターフェース（UI）を変更したり、NFTのvaultの作成やNFTのバーンといった新しい機能を追加したりできます。

### **Candy Machine v2とは？**

Candy Machine（CM）は、購入者、販売者、作成者すべてのNFT体験を効率化するために設計された[オンチェーン生成型NFT配布プログラム](https://www.alchemy.com/overviews/candy-machine-v2)です。

Candy Machine V2は、機能の改善・追加が行われた第2世代のバージョンです。CM以前は、Solana上でのNFTのミントと販売を管理する汎用的なプログラムが存在しませんでした。これにより、NFTの作成者やコレクターにとって数え切れないエラーや悪いユーザー体験が生じ、これがMetaplex開発チームにCandy Machineを開発する動機を与えました。

Candy Machineは、ユーザーとNFTとのやり取りを容易にする、NFT配布における根本的な課題を解決します：

- 正確なミント期間を定義する
- NFTがミント可能な場合にのみ購入者の資金を受け取る
- metadataの型を強制することで、プログラムが一貫性のあるNFTを作成できるよう支援する

Candy Machine v2ではさらに機能が追加されました：

- **予測不可能なミントインデックス** - v1では順番にミントされていたため特定のNFTを狙い撃ちできましたが、それを防ぐ
- **ホワイトリスト** - 特定のアドレスのみにミントを許可する
- **キャプチャ** - ボットによるミントを防止する

さらに、v2ではより大規模なコレクションのサポート、hide-and-revealドロップ、web3開発者が任意のタイミングで設定を更新できる機能、進行中のミントの一時停止機能が追加されています。

#### **Candy Machine v2の使い方**

Candy Machineは完全にオンチェーンのNFTミントプログラムであるため、すべてのやり取りはプログラムを通じて行う必要があります。一部の機能を自動化するUIも存在しますが、Candy Machineを十分に活用するにはユーザーに基本的なプログラミング経験が必要です。CM v2を始めるには、Metaplexの公式ドキュメントを参照してください。

### **Gumdropとは？**

Gumdropは、低いガスコストで[Solanaエアドロップを行う](https://docs.metaplex.com/airdrops/create-gumdrop)ための新しいベータツールです。Metaplexコミュニティによって開発されたGumdropは、ソーシャルメディアなどを通じてオフチェーンで引き換えリンクを送ることにより、多数のユーザーへのエアドロップを実現します。Metaplexと統合されたプロジェクトが安価なコストでトークンを配布するための簡単なソリューションを提供します。

トークンがユーザーの[Solanaウォレット](https://www.alchemy.com/overviews/solana-wallets)に自動的に現れる従来のエアドロップの仕組みとは異なり、Gumdropはユーザーが自らトークンを請求しなければ受け取れない「プル型」のパラダイムを採用しています。Gumdropはmerkle treeを利用してユーザーがホワイトリストに含まれているかを確認するため、チェーン上での高速な計算が可能です。

Gumdropは、Solana上で複数の種類のトークンドロップをサポートしています：

- トークンエアドロップ
- Candy Machineのプレセール
- エディションプリント

いずれの場合も、ドロップはホワイトリスト登録されたユーザーからmerkle treeを構築し、オフチェーンの方法で請求リンクを配布します。

#### **Gumdropの使い方**

Gumdropはプログラムを通じて使用することも、[ガイド付きのSolanaエアドロップUI](https://lwus.github.io/metaplex/)を使ったインタラクティブな体験として使用することもできます。プログラムを通じた手順については、公式ドキュメントを参照してください。グラフィカルユーザーインターフェース（UI）を使用するには、以下の手順に従ってください：

<ImageBlock
  src="https://media.alchemy.com/1703525166-gumdrop.jpg"
  alt="Create、Claim、Close アクションがある Gumdrop airdrop UI"
  width={1600}
  height={864}
  caption="Gumdrop"
/>

実行できるアクションは3つあります：

1. Create
1. Claim
1. Close

**Create**ページで、請求方法（エアドロップの種類）を指定します。

<ImageBlock
  src="https://media.alchemy.com/1703525251-airdrop-type.png"
  alt="Gumdrop Create ページ:airdrop の claim 方法を選択"
  width={1098}
  height={396}
  caption="Gumdrop airdrop タイプ"
/>

次に、オフチェーンでの配布方法を選択します。

<ImageBlock
  src="https://media.alchemy.com/1703525366-off-chain-distribution-method.png"
  alt="Gumdrop Create ページ:オフチェーン配布方法を選択"
  width={1114}
  height={542}
  caption="オフチェーン配布方法"
/>

選択内容に基づいて、ミントアドレスなどの追加情報を入力し、作成を完了する必要があります。

**Claim**ページでは、ユーザーがエアドロップの請求を開始でき、これはSolanaエアドロップのホワイトリストのmerkle treeによって検証されます。

<ImageBlock
  src="https://media.alchemy.com/1703525518-airdrop-claim-initiation.png"
  alt="airdrop の claim を開始するための Gumdrop Claim ページ"
  width={942}
  height={1250}
  caption="airdrop claim の開始"
/>

**Close**ページでは、作成者は秘密鍵とミントアドレスを提供することでGumdropエアドロップを削除できます。

一度閉じると、ユーザーはエアドロップのトークンを請求できなくなります。

<ImageBlock
  src="https://media.alchemy.com/1703525625-delete-airdrop.png"
  alt="既存の airdrop を削除するための Gumdrop Close ページ"
  width={1132}
  height={562}
  caption="airdrop を削除"
/>

### **AuctionHouseとは？**

AuctionHouseは、作成者やミント者がNFTのオークションと販売をシームレスに行えるようにする**オンチェーンのエスクローなしNFT販売プログラム**です。AuctionHouseは、セルフホスト型のフロントエンドStorefrontウェブサイトとは別の概念であり、SOLおよび任意のSPLトークンを受け付けるオンチェーンにデプロイされたプログラムです。AuctionHouseを使用することで、開発者は独自のNFT販売プログラムを書く際の複雑さやエラーを避けることができます。

任意のSolana NFTマーケットプレイスは、NFT出品の自動的な買い手・売り手マッチングなどの機能を活用するために、AuctionHouseプロトコルを実装できます。

購入者がNFTを「請求」する必要がある他の一般的なオークションプロセスとは異なり、販売トランザクションはすべての必要なやり取りを自動的に実行します。言い換えると、AuctionHouseは、エンドユーザーにとって直感的なアクションになるよう不要な手順をすべて削減しながら、開発者には標準化されたプログラムを提供します。

AuctionHouseには設定可能な様々なパラメータがあります。例えば、販売者はカスタマイズされた手数料とトレジャリーの送金先を指定してSolana NFTコレクションの部分販売注文を作成でき、また、すべてのトランザクションにauction houseの署名を必須にすることもできます。AuctionHouseは特定または全てのSPLトークンを受け付けることもできます。

AuctionHouseはまた、すべてのNFTトランザクションの記録（出品、入札、販売など）の履歴を保持します。

#### **AuctionHouseの使い方**

現在、AuctionHouseはTypeScriptで書かれた[CLIライブラリ](https://github.com/metaplex-foundation/metaplex/tree/master/js/packages/cli/src)のみを提供していますが、グラフィカルユーザーインターフェース（GUI）の実装も近日中に登場予定です。

まず、AuctionHouseライブラリを含むオールインワンのMetaplexをクローンします。

次に、_metaplex_フォルダ内のCLI（JS）サブフォルダで必要なパッケージをインストールします。

最後に、既存のキーペアを使用してAuctionHouseを作成できます。

トランザクションが成功すると、コマンドラインに以下のようなメッセージが表示されます。

注：あなたのauction houseキーは異なるものになります

その他のCLI手順については、公式ドキュメントを参照してください。

### **Sugarとは？**

Sugarは、Candy Machine v2のコマンドラインの代替として、より優れたパフォーマンスと開発者向けの簡略化された手順を提供します。これにより、Solana NFT開発者は、元のコマンドラインインターフェース（CLI）ほどの複雑さや手間をかけずにCandy Machine v2をインタラクティブにデプロイできます。

Sugarはそのドキュメントに記載されている通り、CM v2 CLIの使用に対して多くの利点を提供します：

- メディア/metadataファイルのアップロードのパフォーマンスの向上
- _cargo_を活用したビルド・インストール手順の簡略化
- 堅牢なエラーハンドリングと入力検証
- より分かりやすいエラーメッセージ

#### **SolanaのNFTドロップにSugarを使う方法**

まず、cargoでSugarライブラリをインストールします。

次に、Solana CLIの設定を、任意の[Solana RPCノードプロバイダー](https://www.alchemy.com/overviews/solana-rpc)とキーペアで変更します。

最後に、インタラクティブセッションを起動してCandy Machineをデプロイします。

### **Hydraとは？**

[Hydra](https://hydra-docs.glasseaters.xyz/)は、非常に多くのアドレスの集合に対して資金を分配できる、ウォレットのウォレットです。メインウォレットからウォレットが扇状に広がる様子に似ていることから、「Fanout Wallet」とも呼ばれます。Hydraは、トークン化されたロイヤリティ（つまり受け取ったロイヤリティをメンバーに分配すること）やトークンメンバーシップ（例：簡単なステーキング報酬）といった魅力的な機能を実現します。

<ImageBlock
  src="https://media.alchemy.com/1703525748-hydra.png"
  alt="Hydra fanout wallet がメンバーウォレットに資金を分配する図"
  width={441}
  height={521}
  caption="出典:Hydra Docs"
/>

Hydraウォレットのライフサイクルには3つのフェーズがあります：

1. Creation（作成）
1. Member Addition（メンバー追加）
1. Distribution（分配）

#### **1. 作成フェーズ**

作成フェーズでは、作成者（Authorityと呼ばれる）であるあなたがHydraウォレットを作成できます。メンバーシップモデル、名前、受け付けるトークン（SOLまたは任意のSPLトークン）、メンバーシップの合計シェアなど、複数の観点からカスタマイズが可能です。

その操作と要件の複雑さから、Hydraウォレットの作成には数百SOLの費用がかかります。

#### **2. メンバー追加フェーズ**

メンバー追加フェーズでは、アカウントをHydraウォレットのメンバーとして追加できます。通常のウォレット（ユーザー）、NFT、トークンを追加でき、これには資金シェアを計算するためのより高度なアプローチが必要になります。

#### **3. 分配フェーズ**

分配フェーズでは、Hydraウォレットが何度も呼び出され、各メンバーのシェアに応じてメンバーシップの資金を分配します。

各分配呼び出しには受け取り側のMemberを含める必要があり、Hydraウォレットはそのライフスパンを通じて複数回の呼び出しが行われることを想定しています。この1回の呼び出しにつき1メンバーという設計により、多数のメンバーを扱う際にも低い処理コストとメモリコストを維持できます。

#### **Hydraの使い方**

Hydraは、やり取りのために呼び出せるもう一つのオンチェーンプログラムです。

Hydraのプログラムidは以下の通りです：

- _Mainnet_: hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg
- _Devnet_: hyDQ4Nz1eYyegS6JfenyKwKzYxRsCWCriYSAjtzP4Vg

公式ドキュメントには、Hydraウォレットとやり取りし、作成するための最小限のコード例が含まれています。次のようにしてウォレットを作成できます：

同様に、わずか数行で新しいメンバー（そのアドレス）を追加できます。以下は、ウォレットアドレスをメンバーとして追加する例です。

### **Ammanとは？**

Ammanは、ローカルバリデータを実行してSolana SDKライブラリとアプリをテストするためのツールキットです。このツールキットはMetaplex Foundationによって開発され、高頻度の更新とテストを伴うプロジェクトの開発者体験を向上させます。

ガス代が低いとはいえ、複雑なSolanaプログラムをmainnetにデプロイすることはコストがかかりすぎる場合があります。したがって、アプリやSDKライブラリの迅速なデプロイとテストのために、開発者はSolanaのdevnet、testnet、またはローカルバリデータのいずれかを使用できます。

testnet/devnetは頻繁なエアドロップとデプロイ・待機の繰り返しが必要になるため、Wi-Fi不要で高速なデプロイとテストを行うにはローカルバリデータが好まれます。

さらに、ローカルバリデータを実行することで、テスト中の100%の稼働率が保証されますが、testnet/devnetはその過程でオフラインになる可能性があります。

Amman CLIには、_relay_、_validator interface_、_mock storage server_が含まれており、これらが一体となってバリデータとして機能します。

Amman Clientには、_asserts_、_address labeling_、_transaction interface_、そして_relay_へのクライアントが含まれており、これらはすべてテストやブラウザでローカルバリデータと接続する際に使用されます。

#### **Ammanの使い方**

[Amman GitHubリポジトリ](https://github.com/metaplex-foundation/amman)には、Ammanの実行方法についての優れたガイドが用意されています。Ammanを使い始めるには、このリポジトリをクローンする必要があります。

Amman CLIを実行するには、設定ファイルを作成する必要があります。例はAmman GitHubリポジトリに記載されています。

設定ファイルがあれば、以下のコマンドでローカルバリデータを起動し、後で停止できます：

Amman Clientリポジトリには、テストスクリプトやウェブブラウザで使用できる多くのTypeScriptファイルが用意されています。

### **Metabossとは？**

Metaplexの「Swiss Army Tool（スイスアーミーツール）」と称される[Metaboss](https://metaboss.rs/overview.html)は、開発者がMetaplexエコシステム内で簡単に構築できるよう、Metaplexを取り巻く多くの機能を提供します。

Metaplexは新しく急速に進化しているシステムであるため、開発者はMetaplexとやり取りするための独自の機能を実装しています。Metabossは、一貫性のある標準化された機能をエコシステムに提供することでこのプロセスを支援します。

**Metabossが提供する機能の一部：**

- トークンミントアカウントのmetadataをデコードする
- JSONファイルから新しいNFTをミントする
- 指定したCandy Machine IDまたはupdate authorityに対する現在のNFT保有者のスナップショットを取得する
- 指定したupdate authorityに対するすべてのcandy machineのstateおよびconfigアカウントのリストを取得する
- NFTのすべてのmetadata Data struct フィールドを更新する

#### **Metabossの使い方**

まず、以下を実行してMetabossをSolanaプログラムのパッケージとしてインストールします：

これでMetabossを使用する準備が整いました！

公式ドキュメントには多数の例が掲載されています。例えば、単一のコマンドラインでJSONファイルから新しいNFTをミントできます。

まず、NFT用のJSONファイル_new_nft.json_を準備します。

その後、以下のコマンドを使用して、このNFTを任意の数だけ作成できます：

## **AlchemyでMetaplexを始める方法**

Alchemyは、開発者がすぐに構築を始められる最も充実した無料プランを備えた[Solana API](https://www.alchemy.com/docs/reference/solana-api-quickstart)を提供しています。

MetaplexのNFTプロジェクトをAlchemyでデプロイしたいですか？[Alchemyの無料アカウントに登録](https://alchemy.com/solana?a=7f82338b3d)して、構築を始めましょう！
