見出し画像

なで肩野良エンジニア記 vol.2

「持ってるNFTの中で一番好きなNFTは?」と聞かれたら悩む。

どれも好きだから買ってきたものだし。「あとで値上がりするかもしれないから買っとこうか」と投機的に買ったNFTもあるけど、結局値下がりして今もウォレットの奥にしまっていたりする。そんなのも全部引っくるめてお気に入りだ。

一番好きなNFTの話はまた今度書こう。

「なで肩野良エンジニア記」vol.2の今回は、初めてコードを書いてNFTを作った体験を書く。

前回のnoteはこちら

クリプトゾンビ(プログラミング言語のsolidityの学習サイト)をクリアした僕は「よし、早速自分でコード書いてNFTを作ってやるぞ!」と意気込んだ。しかし、意気込んだところでコードが頭に自動で浮かんでくるわけではない。作りたいNFTのアイデアが浮かぶわけでもない。

実はそれまでもNFT自体は作った経験があった。ただ、コードを自分で書いて作ったものではなくThirdwebというサービスを使用して作ったものだったりOpenSeaのNFTクリエイト機能を使用して作ったNFTだった。

Thirdweb:https://thirdweb.com
web3関連のツールを提供しているサービス
OpenSea:https://opensea.io
NFTの売買プラットフォーム、NFT作成サービスもある

Monuments Of Record(Thirdweb製)

NFT自体はとても気に入っているし作ってよかったと感じている。
ただ、コードを自分で書いてみたい”エンジニア憧れ”の僕には物足りなかった。

悶々としていた。
ちゃんとコードを書いてみたいな、作ってみたいな、でもどうやればいいのか、と悶々としていた。

そんな気持ちでDiscordをうろついていた時にふと思い出した。中田さん(この「なで肩野良エンジニア記」初回にも登場)がNFTのサンプルコードをDiscordに投稿してくれていたことを。

そのサンプルコードはSBTのコードだった。SBT(SoulBoundTokenのことでその頭文字をとってSBT)とは転送、売買ができないNFTのことである。

SoulBoundTokenとは
転送や売買ができない=詐欺で盗まれない、というメリットがある。移動できないことのデメリットももちろんあるが、2022年当時はSBTのその特徴から様々な使い方が試されていた。

僕は早速、そのサンプルコードを自分のmacのメモ帳アプリにコピペして保管した(まだコードエディタのvs codeも入れてなかった)
保管したものの「これどうやって使うんだろう」と思った。

使い方がわからないのだ。
”プログラムのコード”があってもそれをどうやって使えばいいのか分からないのである。

ちんぷんかんぷんという言葉があるけど、ちんぷんかんぷんとはまさしくこの時のことだと思っている。

そのコードを「どこに書いて、どうやってブロックチェーンにのせて、どうやってみんなに使ってもらうのか」何もかもがわからない。

何もかもわからない状態、それがちんぷんかんぷんだ。

あまりに何もかもわからないから投げ出しそうになった。それでも、投げ出せばそこで終わるということはかろうじて分かっていたので、そのもどかしさを投げずに済んだ。

今になって思えば、きっとほとんどのエンジニアは”ちんぷんかんぷん出身者”なんじゃないかと思える。その経験があるから通じ合える。

僕は調べた。自分に今できることは調べることだけだった。
Googleの検索窓に「コード 使い方」などと打ち込んだ。出てくるのはプログラミング学習サイトの勧誘ばかりではあったが、ごくまれに自分が望んでいる内容が出てきた。

そしてたどり着いた情報からRemixというものを知った。
これがあればコードをあれこれしてブロックチェーンに乗せられるらしい。やった!

Remix IDEとはブラウザ上で実行できるスマートコントラクトのIDE環境です。 スマートコントラクトをコーディングし、Ethereumブロックチェーンにデプロイできます。

https://hackmd.io/@FrhkqzjtRGukBAKGvdZqlg
これがRemixだ!

Remixの画面を見るとわかるが英語だらけ、ABCDまみれである。
そうだ、プログラミングの世界は英語の世界なのだ。僕はDeepL翻訳を駆使し、ことあるごとに翻訳しまくった。DeepL翻訳があってよかった。

そんな感じでなんとかデプロイ(プログラムをネットにアップロードさせるようなこと)までできた。
右往左往しながらもデプロイまで辿り着けたことがすごく嬉しかったことを覚えている。

その時につくったNFT(初めての手書きコード)

わからないことだらけでも、何も知らなくても、頭を抱えながらでも、出来たのだ。出来た。
その「出来た」という事実が当時の僕を励ました。

僕はそれからいくつものNFTを作った。
絵を描いてコードを書いてみんなに発表して、そしてブロックチェーンに記録した。いっぱい作った。それぞれに意味はなかった。ただ楽しくて作り続けてきた。

それぞれの詳細記録、読み飛ばしても問題ない部分だけど興味があればどうぞ。コントラクトアドレスも置いておくので好きに使ってください。

作ってきた NFTいろいろ

  • Curry Room
    hashlips(web3のオープンソースコミュニティ)にあるコードの雛形を使用して作った。カレーの絵を描くのが好きでそれをリリースしたところ、なぜかbotがいっぱい買ってくれた。
    0x0d068a004A7B4242b961D93e76f0c8C439ABBF08

  • Curry Room Super
    これもhashlipsコードの雛形製。Curry Roomとほぼ一緒。botがいっぱい買ってくれた経験を元に、”Super”にして再リリース。今度はbotは全然見向きもせず。狙うとダメみたい。
    0x2ca17339A9B6d74032920a5be33C50351181ACC3

  • George Animal Friends
    ERC721A規格を使って初めてつくったNFTでAI技術使用。当時流行り始めていたAI生成技術を使ってみたくて(動物の顔をAIで描いただけ)。絵柄を進化させられるEvolve機能というのを付けた。
    自分で販売用サイトを作ったのもこのNFTの時が初めてだったと思う。やれること全部やりたかったんだろう。
    0x29778919ba14b11521526854d510A2a2B4925b13

  • My Cool HEROES
    プロジェクトのエンジニア担当として参加し、ERC721Psi規格を採用した。ERC721PsiはERC721とERC721Aの良いとこ取りみたいな規格で初めて使ってみた。この規格は情報が他の規格に比べて少なかったので情報集めに苦労した。規格自体は優れていると思う。
    0xf7Ae9b393d514c9388C58b95Bc35789029D86f3F

  • Kurage Festival Mement

  • Kurage Nonfungible Memories
    コミュニティ内で発行したNFT、ERC1155規格を使っている。ERC1155は同じものを複数個発行できる規格のため厳密にはノンファンジブル(非代替)ではないけどそんな細かいことは気にしない。
    アイテムを好きな時に追加して各アイテムごとにステータス(価格や販売時期など)を設定できるように工夫した。
    0xA1F98E19d9e06b878F0202020c192c944DB24dc8
    0xabc5eC228E38233640B44750dae8873f40DED240

  • KURAGE 100
    ERC721A規格で作ったもので、このNFTで初めてERC2981(クリエイターフィーの基準をコードに書く規格)を取り入れて書いた。ERC2981のコードを書いておかないとフィーを受け取れないとかあとで困るかもとか、そんなことばかり言ってたあの頃。
    0x4A5A0f0Dd2E597Cddb0EaF11186db8525eC2aD8F

  • KANI 90
    これもERC721A規格で作った。初の試みとして「転送時に新しいNFTがエアドロップされる」という特殊ギミックを搭載した。やってみたいと頭に描いたことがコードで実現できた時はやっぱり嬉しい。
    0x37b1E2B29B040C608c1Aa96ccFA16763550aF24d

エアドロされるNFT一例(蟹の脚)

書き並べてみると、これまで様々なNFTを作ってきたものだと実感する。

NFTのコードは結構シンプルなもので、特殊なことさえしなければ毎回同じコードでも作ることができる。だけど僕は「今回は前と違う作り方を」と毎回手を変え品を変え書いてきた。

とにかく、コードそのものを書きたかったんだと思う。作ることや完成させることよりも、作っていく過程そのものが目的だったんじゃないかと今になって感じる。

あと、NFTをリリースするためのサイト(mintサイトと呼ばれている)これを作るのはとても苦労した。具体的にはReactというjavascriptを使ったフレームワークがあって、知らない技術だったから学習することになった。

最初はNFTを作るためにsolidityを学習していたけど気が付けばReactを使うためjavascriptを学習しないと前に進めなくなり、さらにはNext.jsを学習することになってtypescriptも….というプログラミングあるある(かもしれない)を辿っている。

このあたりの話については次回以降の「なで肩野良エンジニア記」にでも書いてみようと考えている。
不定期ですがまた書きます。

次回
野良魂を燃やせ!果たして野良エンジニアなで肩はjavascriptを使いこなすことができるのか!?

つづく


なで肩野良エンジニア記シリーズ

左だけなで肩サイト

いいなと思ったら応援しよう!