Web3 プログラミング入門: 初心者向け Solidity 学習4選
May 22, 2022この記事はこんな人におすすめです。
- スマートコントラクト開発を始める人
- Solidity の本を買ったけど、次に何をしたら良いかわからない人
- 開発環境の構築でつまずいた人
- Web3/Dapps 開発に興味がある人
この記事で紹介するサイトやツールの一覧
- CryptoZombies (クリプトゾンビ)
- Solidity by Example
- Remix
- Hardhat
- イーサリアム navi
- Ethernaut
プログラミング初心者が挫折しないために
プログラミングを始めたばかりの人は、プログラムを実行する環境の問題が原因で挫折してしまう人がたくさんいます。
たとえば、サンプルコードをそのままコピーして動かない場合は、ほとんど環境側に問題があります。 なぜなら、サンプルコード自体は本来間違っていないからです。
実行環境の問題を解決するためには、プログラミングの文法以外に多くの前提知識が必要になることがあります。
せっかくプログラミング言語を覚えたいのに、プログラミングとは関係ない部分で時間とやる気を浪費して挫折してしまいます。
もし、環境構築が不要なら覚えることはプログラミングだけに集中できます。
そこ最初におすすめするのは定番の CryptoZombies です。
CryptoZombies
ゲーム感覚で1つずつ課題をクリアしながら Solidity を学んでいきます。
CryptoZombies の良いところ
- 日本語に対応している
- ゲーム感覚で面白い
- プログラムをブラウザ上で実行できる
- 多くの Solidity エンジニアがここから入っている
CryptoZombies のイマイチなところ
- 内容が更新されておらず Solidity のバージョンが古い
ブラウザさえあれば、ほかに何も必要ないので初心者でもすぐに始められます。日本語に対応しているのも良いですね!
しかし、CrypboZombies は体系的に学習を進めていくので、自分に必要ないことも学習しなければなりません。 ボリュームが多い上に、自分に必要かどうかもわからないことを理解しなければ先に進めなかったりするので段々とモチベーションが下がります。
プログラミング学習においては、必ずしも体系的な学習がベストではないとぼくは考えます。 簡単なプログラムを実行できるようになったら、なるべく実際にプログラムを動かしてみることをおすすめします。
そこで、次はいろんなコードサンプルから自分が気になるものを選んで実際に動かしてみましょう。
Solidity by Example
https://solidity-by-example.org/
Solidty をある程度学んだら、次にやるべきことは自分でコンパイルして動かしてみることです。
サンプルコードをコンパイルして、テストネットにデプロイしたり実行してみましょう。 Solidity by Example のうち、いつくかのサンプルコードを当サイトでも解説しています。
- はじめてのイーサリアム Dapps 開発
- NFT プログラミング (ERC721)
- オラクルの基本的な使い方(Chainlink Data Feeds)
- Merkle Proof(マークルツリーと Keccak256))
- 定義したイベントを発行してブロックチェーンに記録
実際にビルドしたり、デプロイすればいろんなエラーに必ずぶつかります。 しかし、プログラマにとって大事なことは言語の文法を知っていることではなく問題を解決する力です。
エラーがおきたとき、はじめのうちは原因を切り分けるのが大変です。 サンプルコードならコード自体はだいたい正しいと言えるのでエラーの原因を絞り込むことができます。
テスト環境にデプロイするための 2 つの方法をご紹介します。 そのときの自分に合っている方法を試してください。
- Remix
- Hardhat
Remix
Remix はブラウザでコードを編集したり、Metamask ウォレットを使ってテストネットやメインネットに スマートコントラクトをデプロイできる無料サービスです。
Remix の使い方はこちらのページにまとめてあります。(画像多め)
Remix の使い方: Metamask でスマートコントラクトをデプロイ
Hardhat
Hardhat はローカル PC に仮想のスマートコントラクト実行環境を作ることができます。 2022 年現在、Solidity エンジニアがメインネットのデプロイにもよく使っています。
Hardhat を使ったデプロイ方法はこちら
Hardhat の使い方: 初心者向けのスマートコントラクト開発 Hardhat の使い方: Ethereum のテストネットにデプロイしよう!
自分の気になるサンプルコードを選んだり、エラーにぶつかったり、その解決方法を検索したりして進めてください。 そうした小さな成功体験の積み重ねこそがかならずエンジニアとして成長に繋がります。
進んでいくうちに、自分だけで解決できない問題にぶつかるかもしれません。
そんなときは相談できる相手や、一緒に学習を進める仲間が欲しくなります。
つぎに紹介するイーサリアム navi はそんな人たちが集まるコミュニティです。
イーサリアム navi
でりおてんちょーさんというエンジニア(NFT リサーチャー)が、運営されているサイトと無料の Discord コミュニティです。
でりおてんちょーさん自身が Solidity を学習しながら、みんなで一緒に成長しているぬくもりのあるコミュニティです笑
不定期で勉強会なども開催しているので、Discord に参加したり、Twitter をフォローしましょう。
日本の Solidity エンジニアはまだ数が少ないので、結構すごい人が勉強会に参加することもあるかも?
Ethernaut
https://ethernaut.openzeppelin.com/
Ethernaut は中上級者向けで、Chrome の Developer Tools の Console を使って、ゲーム感覚で Solidity を学ぶことができます。
Ethernaut の良いところ
- テストネットのスマートコントラクトを実際に操作している
- ゲーム感覚で学ぶことができる
- プログラムの脆弱性の問題を理解できる
はじめに Metamask を使って Ethereum のテストネットに繋ぎます。
ブロックチェーンのテストネットにあるスマートコントラクトを実際に操作しながら進むので、ブロックチェーンを実際に使いながら理解できます。
スマートコントラクトの実行には Web3.js を使うので JavaScript の知識が多少必要になるかもしれません。
このサイトがほかと違うのは、問題の内容がスマートコントラクトの脆弱性、つまりバグを見つけるようになっているからです。
ぼく自身も、まだ少ししかやっておりませんが、プログラムのバグを見つけるという課題は、高度なプログラミング知識を求められるので、この課題をマスターしたら、開発における高度かつ実践的なスキルが身につきます。