ジェネラティブデータの生成
目次 [hide]
前パートまでで、NFTの基本情報の設定とレイヤー画像の準備について解説してきました。
最後に、画像とメタデータファイルの生成手順を説明していきます。
前提知識 〜NFTのデータ構成について〜
「NFT」は画像データのことを指すようなイメージが強いですが、実際のコレクションではブロックチェーン上に刻まれているのはURLだけという場合が多いです。
じゃあ画像はどこにあるの…?と思われるかもしれませんが、チェーンに刻まれたtokenURI
というURLから順番にたどっていく必要が出てきます。
まずtokenURI
の先にはNFTの名前・説明書き・プロパティなどが書かれたメタデータというファイルが置かれています。このデータを元に、例えばOpenSeaの詳細画面の表示に必要な情報を取ってくることができます。
そしてそして、このメタデータの中のimage
に書かれたURLの先にようやく本体の画像データが存在している、といった構成になっています。

細かい内容はなんとなくの理解で大丈夫ですが、本記事で生成されるデータは
- メタデータと画像データの2種類があり
- それぞれ別の場所に置いておく
ということだけ覚えておいていただければOKです!
ファイル生成コマンド
それではVSCodeを開いて、ターミナルビューを開いてみましょう。消してしまった場合は、ツールバーから「Terminal」>「New Terminal」を選択すれば表示されます。
ターミナルにて以下のコマンドを実行してみると、すぐに画像とメタデータファイルの生成が始まります。
$ node index.js
ログには画像のNoと、組み合わせのパターンを示すDNAという文字列が表示されていき、表示が止まったら無事終了です!
Created edition: 1, with DNA: 33f9c0add9a15304d43d16af3804204b34422565
Created edition: 2, with DNA: d7859f15cae5090dc565d63542d63fae8b1170b8
Created edition: 3, with DNA: 0de3c8add53f3a8fd2c6a653dad9f3a646255121
Created edition: 4, with DNA: d3b85aab84a8810e2d0caf38dd1cdfc5e3ea11d8
Created edition: 5, with DNA: 1386d3ebaca3cfdbb8a5af4a740b469f8ec4b95b
コマンド実行後はbuild/image
フォルダに画像ファイルが、build/json
フォルダにメタデータファイルが保存されます。

コマンドを実行するたびにこれらのフォルダの中身は入れ替えられるので、実行するたびにファイルを消す必要はないのですが、逆に確定したファイルを誤って削除しないようご注意ください!
よくあるエラー
You need more layers or elements to grow your edition to XXX artworks!
- 原因:レイヤー画像に対して、生成したい画像数が多すぎる
同じ画像の組み合わせが抽選された場合DNA exists!
と表示され、再度組み換えを行ってくれます。
ただし、あまりにも同じ組み合わせが何度も現れる場合、以下のようなエラーが表示され、途中で画像生成が中止されてしまいます。
Created edition: 323, with DNA: a18835e84d2a2b875903c3e8c0486c5c76b54762
DNA exists!
DNA exists!
DNA exists!
DNA exists!
DNA exists!
DNA exists!
DNA exists!
DNA exists!
You need more layers or elements to grow your edition to 1000 artworks!
その場合はレイヤー画像を増やす、growEditionSizeTo
の数を少なくする、といった対応をしてエラーを回避するようにしましょう。
Created edition: undefined
- 原因:growEditionSizeToの数値がおかしい
明確なエラーとして表示されないのですが、実行中にCreated edition: undefined
のような文言が出てきたら要注意です!
$ node index.js
Created edition: 1, with DNA: c77d171fc534c6ddb55015200470b19703145122
Created edition: 2, with DNA: 8894598ad4e2c53c243c67f84975e85c477f48ca
Created edition: 3, with DNA: 39ebaeb2eb9a4a3f899e9a70840ad4c753eac961
Created edition: undefined, with DNA: 57725ce10269f8ea35d58f4e08f9c14be6a07665
Created edition: undefined, with DNA: 0de3c8add53f3a8fd2c6a653dad9f3a646255121
例えばlayerConfigurations
で2つの組み合わせを設定していて、後半のgrowEditionSizeTo
の数字が極端に少ないときに発生します。
src/config.js (誤った例)
const layerConfigurations = [
{
growEditionSizeTo: 5,
layersOrder: [
{ name: "Background" },
{ name: "Eyeball" },
{ name: "Eye color" },
{ name: "Iris" },
{ name: "Shine" },
{ name: "Bottom lid" },
{ name: "Top lid" },
],
},
{
growEditionSizeTo: 3, // ← この数字がおかしい!
layersOrder: [
{ name: "Background" },
{ name: "Eyeball" },
{ name: "Eye color" },
{ name: "Iris" },
{ name: "Shine" },
{ name: "Bottom lid" },
{ name: "Top lid" },
],
},
];
何度も書いていますが、2つ目以降のgrowEditionSizeTo
は必ず1つ前よりも大きい数字を設定するよう、頭に入れておきましょう!
他にもあれば追記します〜〜
TIPS
ちなみに、ターミナルで「↑」キーを押すと直前に実行したコマンドが現れるため、画像や設定ファイルを調整して繰り返し確認したいときに重宝します。「↑」キーで呼び出し「Enter」キーで実行、というやり方を覚えておきましょう!
設定や画像を調整して、お好みのファイルセットが出来上がったら次の章へ進みましょう!
(※執筆中)