見出し画像

なで肩野良エンジニア記

野良エンジニアを名乗っている。ノラ犬とかノラ猫と同じ意味のノラで、野良エンジニア。この”野良”の部分はweb3友達のシルさんが命名してくれたもので大変気に入っている。

僕は正式なエンジニア街道を進んでこなかった、だけどエンジニアでありたい。そういう気持ちの部分をこの”野良”が代弁してくれている。

この「なで肩野良エンジニア記」は僕の普段のエンジニア活動の記録にしようと思っている。他の誰かが読んで、ちょっとでもおもしろいと感じてもらえるといいな、という思いだ(エンジニアの活動記録みたいなものってあんまり見かけないし)

僕はエンジニアを名乗っているがプログラミングのほとんどを理解できていない。プログラミングを本格的に開始したのはたかだか2年前くらい、普段の仕事もエンジニアとは程遠い仕事をしている。
それもあって僕は、正式なエンジニアの方にとっては常識的なことのほとんどをまるでわかっていない。githubの通例とか、コードの書き方とか暗黙的なルールとか、ファイル名の付け方とか、用語とか。

プロとアマチュアが存在する業界にはこういうことがよくあると思う。
プロがもっている知識をアマチュアはもっていない。当たり前だ。

そういう場面に出くわすとだいたいの人は「知らなくて恥ずかしい」と感じる。僕だってそうだ。知らない場面に出くわすと恥ずかしい。素人丸出しの自分が恥ずかしい。
だけど、恥ずかしいまま堂々と作ることを心がけている。知らなくても、恥ずかしくても、作る。堂々とやる。野良エンジニアとはそれができるエンジニアなのだと思うことにしている。

野良エンジニアについての解説が少々熱く長くなってしまった。

今回はプログラミング言語のsolidityについて書こうと思っている。僕が本格的にプログラミングを学び始めた最初の言語がsolidityだった。

solidity(ソリディティと読む)はブロックチェーンに情報を書き込むためのプログラミング言語で、NFTとか暗号資産とかそういうものに使われている

なぜsolidityが最初の言語になったかというと、二年ほど前(2022年夏)、僕には一つの夢があったからだった。

「NFTを自分の書いたコードでつくってみたい!」

今思えばなんというか小さめの目標だと感じるものの、当時の自分からするとNFTをつくるということが未知だった。未知のそれを自分で書いたコードで作るのなんか夢のまた夢、未知中の未知と感じていた。NFTのつくりかたなんかいっさい知らない状況からのスタートだった。

とにかく知らないけどやってみるぞ。鼻息荒く、当時の僕はその夢を叶えるべくエンジニアになることを誓った。

目標は決まった。
「さて何をすればいいのか?」それが一番最初に降りかかった問題だった。何をすればいいのかがわからない。多くのプログラミング初学者が抱える問題だと思う。だからこそ”プログラミング学習はむずかしい”だったりにもつながっているのだろう。

その当時、僕が入り浸っていたDiscordコミュニティには中田さんというプログラミングの達人のようなweb3友達がいた(きっと、達人どころかもっとすごい人)。その中田さんから「solidityやるならクリプトゾンビやるといい」と教えてもらった。
そのヒントは”何から手をつけたらいいかわからない暗闇トンネル”を歩いている自分にとってすごく明るい目標だった。

レベル別「はじめてのNFT作り」
◆OpenSeaでNFTを作る(レベル1)
スマホでも挑戦可能
ブラウザでポチポチするだけで簡単にNFTを作って販売できる
最初の登録に多少のガス代が必要だけほぼ無料
NFTの画像はOpenSeaに保存される
日本では「共有コントラクト」と呼んだりもする
必要なモノ
・NFTにする画像
・多少のガス代
・挑戦する気持ち
------------------------------
◆NFT作成サービスを使ってNFTを作る(レベル5)
Chocofactory といったサービスを使う
スマホでも挑戦可能
ブラウザでポチポチするだけで簡単にNFTを作って販売できる
NFT作成にガス代が結構かかる(数万~数十万円)
NFTの画像はIPFSに保存される(特定のサーバでは無く分散保存なので非常に良い)
日本では「独自コントラクト」と呼んだりもする
レベル1のNFTを手軽に卒業したい人に
とはいえガス代かかるから正直おすすめできない
必要なモノ
・NFTにする画像
・まあまあなガス代(数万~数十万円)
・諦めない心
------------------------------
◆NFTのプログラムを自分で書いてNFTを作る(レベル30)
スマホでは無理ですゴメンナサイ
PC必須
CryptoZombies とググって出てくる学習サイトをまずやる
プログラム言語をなにか1つ学んだ経験が無いと辛いと思う
パソコンに開発環境としてNodejs / npm / hardhat あたりを入れる
言語はsolidity
openzeppelinのERC721とか読む
ここまでくると他人の作成したNFTが読めるようになる
とにかくtestnetで練習する
画像の置き場所はIPFSかクラウドサーバかお好みで
必要なモノ
・パソコン(windows or mac)
・NFTにする画像
・まあまあなガス代(数万~数十万円)
・勉強をつづげる根性
・折れない心
------------------------------
◆フルオンチェーンのNFTを作る(レベル50)
画像そのものをNFTの中に埋め込んでweb3純度の高いNFTを作る
画像はSVGで作成して文字列としてNFTの中に埋め込む
SVG文字列の中の一部を変数にすれば色や形をランダムに変えてジェネラティブにもできる
レベル30の時よりもNFT作成時(デプロイ時)のガス代が多めにかかる
必要なモノ
・パソコン(windows or mac)
・NFTにする画像のSVG
・まあまあなガス代(数万~数十万円)
・何度倒れても立ち上がる気持ち
------------------------------
◆ジェネラティブNFTを作る(番外)
実はNFTの作成とは別の技術(なので番外)
目や口、帽子、背景などの複数のレイヤーにわけてパターンの組み合わせにより数千~数万の画像を作る手法のことをジェネラティブNFTと呼ぶことが多い
画像の組み合わせを生成する専用のツールでランダムに組み合わせて作る方法が一般的
画像を作るテクニックなのでレベル1のOpenSeaでの販売でやってみることも可能(登録が面倒だけど)
必要なモノ
・パソコン(windows or mac)
・レイヤーごとに書き分けた画像
・画像パターンを量産する根気

中田さんによる レベル別「はじめてのNFT作り」/ 2022

今でも僕は中田さんにもらったこのレベル別表を見返して振り返り、復習のきっかけに使わせてもらっている。中田さんには感謝しまくりである。ありがとうございます。

ちなみについこないだ僕は、フルオンチェーンNFT「onono slot」をリリースした。表でいうところのレベル50だ。やったぜ!!

contract address
0x6D475FeB65db0e93472A4ACC6f10513e47450Bff

話を昔に戻す。
プログラミング初学者の僕はさっそくクリプトゾンビに向かった。

ゾンビゲームを作りながら学習できる

これがめちゃくちゃ難しかった。
クリプトゾンビの学習ロードマップはいくつかのチャプターに分かれているんだけど、チャプター1とか2まではそれなりにわかりやすい。しかし、3とかそれ以降になった途端に「???」が連続する。

とにかく難しい。
チャプターごとにクイズのようなテストが準備されていて正解することで次の学習に進められる仕組みになっている。考えてもわからない場合には”答えを見るボタン”を押すと見れる。

僕は何度もボタンを押して答えを見た。そして進み、クリプトゾンビをクリアした。

白状すると僕はいまだにクリプトゾンビの後半部分を理解しきれていない。結局、通算3回くらいはクリプトゾンビの学習コースをクリアした。クリアしているが理解はできていない。
つまり、理解できなくともクリプトゾンビは何度でもクリアできるということだ。

クリプトゾンビの学習を通して僕は「考えること」の大事さを学んだと自分に言い聞かせている。考えればすべて理解できるわけではない、それでも考えれば少しは理解できることもある。そういうことを学んだ。

プログラミング言語は”言語”というだけあって、どうやったら習得できるのかの正攻法がないのだと思う。言語の習得は、慣れだったり経験だったり場数なのだろう(想像でしかないけど)。
クリプトゾンビを完全理解しようとしていたら今頃僕はいまだにクリプトゾンビをしていたと思う。

理解できなくても手を動かして書いてみる。作ってみる。で、また本を読んでみる。そういうループ全体が学習なのかもしれない。

notionで当時メモった学習記録↓

クリプトゾンビをやったあとは「よし、じゃぁ実際に何かつくってみるか!」と息巻いた。ちょっと学習サイトをやっただけ(しかも理解できずズルしてクリア)だったが、とにかく何か作りたかったのだと思う。作りたい欲が先行しまくっていた。

その時の話はまた今度書こうと思う。
「なで肩野良エンジニア記」はたまに書いて続けていきます。


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

左だけなで肩サイト


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