Zero Code NFTやthirdWebといったNFT作成サービスを利用すれば、プログラムに詳しくない人でも簡単に独自コントラクトのNFTを作れます。
しかし、これらのサービスを利用する場合でも、画像などのコンテンツデータとともにメタデータを用意する必要があります。
メタデータはプログラムコードのような形式で書くファイルなので、敬遠している方も多いでしょう。
この記事では、メタデータファイルの形式や構造、作り方を解説します。
この記事のザックリ要約!
✅NFTのデータはメタデータに書かれている
✅メタデータのファイル形式はJSON
✅メタデータを作る方法には、手入力とツール使用の2通りがある
NFTを作成するためにメタデータが必要な方は、この記事を参考にしてみてください。
なお、この記事で取り上げているのは、OpenSeaで表示することを想定したERC-721またはERC-1155形式のメタデータです。
メタデータとは
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ファイルを作成できます。
JSONMateやJSON EditorのようなJSONファイル作成に特化したツールも存在するので、使いやすいエディタを探してみてください。
データ構造に従って記述する
JSONファイルを記述するときは、下記のデータ構造に従って入力する必要があります。
{ "項目名1":"パラメータ1", "項目名2":"パラメータ2", ・ ・ "項目名n":"パラメータn" } |
項目の数だけ項目名とパラメータ(データ内容)を記述しましょう。
全体を囲む中括弧を最初と最後に書く点と、最後の項目には末尾のコンマがいらない点に注意してください。
また、1つの項目のなかに複数の項目とパラメータを書くこともできます。
{ "項目名":[ { "小項目A1":"パラメータA1", "小項目A2":"パラメータA2" } { "小項目B1":"パラメータB1", "小項目B2":"パラメータB2" } { "小項目C1":"パラメータC1", "小項目C2":"パラメータC2" } ] } |
メタデータの項目例
OpenSeaがサポートしている項目は以下のとおりです。
image | NFTの画像の場所を表すURL。httpやipfsで指定する。 |
external_url | 画像の下に表示されるリンクのURL。NFTに関連する情報を別ページで表示できるようになる。 |
description | NFTに関する説明文。マークダウン記法に対応している。 |
name | NFT単体の名前。 |
attributes | NFTが持つ属性および特徴。複数の項目とともに記述する。 |
background_color | NFTの背景色。6文字の16進数で色を指定する。例)FF0000(赤)、008080(青緑) |
animation_url | NFTのアニメーション画像の場所を表すURL。MP4などの動画ファイルや、MP3などの音楽ファイルに対応している。 |
youtube_url | YouTube動画のリンク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」と書かれている文の近くにある変数(パラメータ)の値を変えましょう。
ただし、変数の名前は変えないように気を付けてください。
namePrefix | NFTの名前の前半部分。この値の後ろに通し番号を付けたものが、name項目の値になる。 |
description | NFTの説明文。そのままJSONファイルのdescription項目の値になる。 |
baseUri | すべてのNFT画像が保管されている場所。この値の後ろに画像ファイル名を付けたものが、image項目の値になる。 |
JSONのattributes項目には、layersOrderで指定した名前と、画像データの名前が適用されます。
項目名を変えたいときは、画像データを入れているフォルダの名前とともにlayersOrderを変更しましょう。
上記以外の項目をメタデータに設定したい場合は、extraMetadataに項目と値を追加してください。
まとめ:構造を理解してメタデータを作ろう
書き方と項目さえわかってしまえば、JSONファイルを作るのは簡単です。
ほかのブロックチェーンでメタデータを作るとしても、項目名の違いなどに気を付ければ難しくないでしょう。
ツールを使って自動的に作成する際もパラメータを確認できるよう、メタデータのファイル構造を把握できる程度に理解しておきましょう。