Zero Code NFTやthirdWebといったNFT作成サービスを利用すれば、プログラムに詳しくない人でも簡単に独自コントラクトのNFTを作れます。

しかし、これらのサービスを利用する場合でも、画像などのコンテンツデータとともにメタデータを用意する必要があります。

メタデータはプログラムコードのような形式で書くファイルなので、敬遠している方も多いでしょう。

この記事では、メタデータファイルの形式や構造、作り方を解説します。

この記事のザックリ要約!

✅NFTのデータはメタデータに書かれている

✅メタデータのファイル形式はJSON

✅メタデータを作る方法には、手入力とツール使用の2通りがある

NFTを作成するためにメタデータが必要な方は、この記事を参考にしてみてください。

なお、この記事で取り上げているのは、OpenSeaで表示することを想定したERC-721またはERC-1155形式のメタデータです。

メタデータとは

OpenSea|Metadata Standards

NFTの画像や名前、属性などの情報はメタデータに保存されています。

NFTのデータはすべてブロックチェーン上にあると思われがちですが、画像のような大きいファイルをチェーン上に置く際には膨大なガス代がかかってしまいます。

そのため、ほとんどのNFTコレクションは画像データをブロックチェーン外に保管し、NFTは画像を参照している形になっています。

NFTコレクションが画像を参照するときに利用され、NFTコレクションと画像の橋渡し的な存在となっているのが、メタデータです。

NFTに関するデータはメタデータに書かれているため、見方によってはメタデータがNFTの本体であるといえるでしょう

マーケットプレイスなどで表示される

メタデータに書かれている情報は、マーケットプレイスなどでNFTの詳細として表示されます。

たとえば、OpenSeaでNFTの詳細ページを見てみましょう。

詳細ページに表示されているNFTの名前や説明文などは、メタデータに書かれているものが反映されています。

また、「プロパティ」の項目に書かれている属性名や特徴、パラメータなども、すべてメタデータから取得した情報です。

画像に関してはメタデータにURLが書かれており、URLの場所から取得した画像がページ上に表示されます。

独自コントラクトを作るときに必要

独自コントラクトのNFTコレクションを作成するときに、メタデータが必要になります。

自分でコントラクトから作成せずにNFT作成プラットフォームを利用する場合でも、サービスによってはメタデータのアップロードを求められます。

自分のNFTコレクションを作成したいと考えているのであれば、メタデータの作り方や構造を覚えておくとよいでしょう。

なお、OpenSeaなどで共有コントラクトのNFTコレクションを作成するのであれば、メタデータを用意しなくてもNFTを作成できるプラットフォームもあります。

独自コントラクトと共有コントラクトの違いについては、別記事を参照してください。

メタデータの作り方

メタデータの作り方は、大きく分けて2つあります。

1. ファイルを作成して手入力する

2. ツールを使って自動生成する

メタデータのファイルを手入力する方法は、1つのNFTに時間をかけたり、数が少なかったりするNFTコレクションに向いています。

ジェネラティブNFTのように数千〜数万単位でNFTを作成するNFTコレクションであれば、ツールを使った方法を利用するとよいでしょう。

方法1.メタデータのファイルを手入力する

ここでは、OpenSeaが対応しているERC-721またはERC-1155形式のNFTコレクションで使われているメタデータの作り方を解説します

イーサリアムやポリゴンで標準的に使われている形式なので、これらのブロックチェーンで作成するのであれば問題ないでしょう。

Solanaのような別のブロックチェーンでは、メタデータの書式や項目が異なる場合があります。

JSONファイルを作れるエディタを用意する

メタデータはJSONファイルとして作成するので、JSONファイルを編集できるテキストエディタを用意します。

テキストエディタとは、テキストファイルを編集できるツールです。

PCやスマートフォンに標準搭載されているメモ帳アプリでも、JSONファイルを作成できます。

JSONMateJSON EditorのようなJSONファイル作成に特化したツールも存在するので、使いやすいエディタを探してみてください。

データ構造に従って記述する

JSONファイルを記述するときは、下記のデータ構造に従って入力する必要があります。

{
"項目名1":"パラメータ1",
"項目名2":"パラメータ2",


"項目名n":"パラメータn"
}

項目の数だけ項目名とパラメータ(データ内容)を記述しましょう。

全体を囲む中括弧を最初と最後に書く点と、最後の項目には末尾のコンマがいらない点に注意してください。

また、1つの項目のなかに複数の項目とパラメータを書くこともできます。

{
"項目名":[
{
"小項目A1":"パラメータA1",
"小項目A2":"パラメータA2"
}
{
"小項目B1":"パラメータB1",
"小項目B2":"パラメータB2"
}
{
"小項目C1":"パラメータC1",
"小項目C2":"パラメータC2"
}
]
}

メタデータの項目例

OpenSeaがサポートしている項目は以下のとおりです。

imageNFTの画像の場所を表すURL。httpやipfsで指定する。
external_url画像の下に表示されるリンクのURL。NFTに関連する情報を別ページで表示できるようになる。
descriptionNFTに関する説明文。マークダウン記法に対応している。
nameNFT単体の名前。
attributesNFTが持つ属性および特徴。複数の項目とともに記述する。
background_colorNFTの背景色。6文字の16進数で色を指定する。例)FF0000(赤)、008080(青緑)
animation_urlNFTのアニメーション画像の場所を表すURL。MP4などの動画ファイルや、MP3などの音楽ファイルに対応している。
youtube_urlYouTube動画のリンクURL。

attributesは複数項目の書式で記述し、要素ごとに下記の項目を設定できます。

display_typeデータの表示形式。未設定時は、プロパティ欄にデータを表示する。
※OpenSeaで利用できるパラメータ・boost_number・boost_percentage・number・date
trait_type項目の名前。
value項目の値。
max_value値の最大値。一部の表示形式で使用できる。

すべての項目を埋めていなくても問題ありません。

必要な項目をJSONファイルに列挙していきましょう。

記述例

書き方の例として、実際にNFTを作成したときのメタデータを載せておきます。

{
"name": "Your Collection #1",
"description": "Remember to replace this description",
"image": "ipfs://bafybeih………/1.png",
"dna": "6ff01f8cc7967a6034e6b56d962c1e5149455c8c",
"edition": 1,
"date": 1655096584532,
"attributes": [
{
"trait_type": "background",
"value": "red"
},
{
"trait_type": "object",
"value": "blue_circle"
},
{
"trait_type": "frame",
"value": "frame"
}
]
}

OpenSeaで表示されていない項目もありますが、余分な項目を書いていたとしてもエラーは発生しません

このメタデータを使って作成したNFTを見ると、下図のように表示されます。

方法2.ツールを使って自動生成する

メタデータを大量に作らなければいけない場合は、ツールを使ったほうが効率よく作成できます。

とくに、ジェネラティブNFTを作成するのであれば、画像を作成するのと同時にメタデータを作ることも可能です

プログラムのソースを触らないといけないのでハードルは高めになりますが、大量のNFTを作成するなら避けては通れない方法となるでしょう。

hashlips_art_engineを利用する

hashlips_art_engineを利用すれば、NFTの数だけJSONを作成できます。

このツールの使い方は、ジェネラティブNFTの画像を作る方法を解説している記事で解説しています。

インストール方法や作り方の流れについては、そちらの記事の「パーツ合成:細かい設定ができる方法」で確認してください。

プログラムを実行したあとに「build」フォルダ内にある「json」フォルダを開けば、作成されたメタデータが見つかるでしょう。

config.jsを書き換える

メタデータの内容は、プログラムを実行する前にconfig.jsファイルを書き換えることで変更できます。

「General metadata for Ethereum」と書かれている文の近くにある変数(パラメータ)の値を変えましょう。

ただし、変数の名前は変えないように気を付けてください。

namePrefixNFTの名前の前半部分。この値の後ろに通し番号を付けたものが、name項目の値になる。
descriptionNFTの説明文。そのままJSONファイルのdescription項目の値になる。
baseUriすべてのNFT画像が保管されている場所。この値の後ろに画像ファイル名を付けたものが、image項目の値になる。

JSONのattributes項目には、layersOrderで指定した名前と、画像データの名前が適用されます。

項目名を変えたいときは、画像データを入れているフォルダの名前とともにlayersOrderを変更しましょう。

上記以外の項目をメタデータに設定したい場合は、extraMetadataに項目と値を追加してください。

まとめ:構造を理解してメタデータを作ろう

書き方と項目さえわかってしまえば、JSONファイルを作るのは簡単です。

ほかのブロックチェーンでメタデータを作るとしても、項目名の違いなどに気を付ければ難しくないでしょう。

ツールを使って自動的に作成する際もパラメータを確認できるよう、メタデータのファイル構造を把握できる程度に理解しておきましょう。

Twitterでフォローしよう

おすすめの記事