Web3のお勉強始めたお話

この記事は[KDDIアジャイル開発センター Engineer & Designer Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kag)の13日目の記事です。

# 概要
Web2エンジニアとして日々働いている私ですが、新しい技術に触れていかねば、ということでWeb3の勉強を始めました。
ちょうどその頃、日本国内でWeb3のハッカソンが行われるということだったので、良い機会なので参加してみました。

今回は、ハッカソンに至るまでに学習したサイトや技術情報についてお話しようと思います。

## [東京Web3ハッカソン](https://tokyo.akindo.io/)

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/ecd100e5-f61e-3e09-9613-8f86ed93dddf.png">

まず、参加したハッカソンのお話ですが、
このハッカソンは
開催期間は10/22から1/6までの2週間。
NFT、GameFi、DeFi、DAO、Securityの5つにテーマがわかれ、プロダクトおよび説明資料による審査とDEMODAYにおける最終審査によりPrizeが決定する、というものでした。

500名がエントリーし、98プロダクトが提出されたということだったので、ハッカソンとしてかなり大きい規模だったと思います。
Web3の国内での盛り上がりと、これからの可能性を感じる素晴らしい機会でした。

運営、審査員、参加者の皆さん、本当にお疲れ様でした！！
<img width='250' src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/1c102a33-a804-d36a-542b-786b6d008459.png">

結果はというと、

NFT部門　**準優勝**

いただきました。
他のプロダクトがどれも素晴らしかったので、Prizeをいただけたのは、チームメンバーと運が良かった結果だと思います。本当に感謝です。
色々と新しい技術を学ぶことができましたし、普段ご一緒することがないメンバーとプロダクト制作ができて本当に楽しかったです。
ありがとうございました！！！

これだけで十分ということはないですが、学習に際していくつかお世話になったサイトやサービスがあるのでご紹介したいと思います。
これから学習を始めようとされる方の参考に少しでもなれば幸いです。

# 学習サイト
## [CryptoZomibes](https://cryptozombies.io/)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/adf7e2de-f61c-b6a7-7f3c-a5b3dfd7f393.png">


Solidityでスマートコントラクト構築を学べるオンラインレッスンの学習サイトです。
若干、英語直訳のような表現が含まれ、用語に馴染みがない方には問題文の理解が難しい箇所はあるかもしれませんが、スマートコントラクトを実装するために必要な情報を簡単に素早く理解することができるのでオススメです。スマートコントラクトを勉強する際の必修科目といってよいような内容でした。
（Solidity初心者にオススメされている方も多いようですね）

6章以降はフロントエンドの技術となっているので、Solidityの基礎を学ぶならひとまず１〜５章までを理解できれば良いでしょう。

## [ENTERCHAIN](https://enterchain.online/)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/78c35ddf-5cd2-72a1-a07f-3e6ec68e3834.png">

ブロックチェーンの基本的な仕組みについて学ぶことができます。
学習の対象者に応じてレベル分けされており、好みのコースを選びならが学習をすすめることができます。
解説やイラストが充実していてチャプターごとにクイズで内容振り返りをしてくれて、内容もわかりやすく、かなりリッチな学習サイトになっています。本当にありがたい。。

# 開発フレームワーク
## [OpenZepplin](https://docs.openzeppelin.com/)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/c343741b-fc55-c2d3-d8cc-b3f52274a3b5.png">


OpenZepplinはEthereum上のスマートコントラクトを安全に実装するためのフレームワークです。
スマートコントラクトは非常に簡単に（たった数行で）開発が可能となっていますが、注意すべきポイントがいくつもあります。その中でも特に注意すべきなのが、書き換えが難しい点です。
一度スマートコントラクトをデプロイすると、バグ等が起きてコントラクトの更新が必要となった場合でも対処が非常に難しいです。
OpenZepplinはテスト、監視、コミュニティによるレビューが徹底的に行われたセキュアなコードパターンを提供してくれるため、安全に開発をすることができます。
以下のように継承して利用し、独自のビジネスロジックのみを実装していく形になります。

```
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";


contract ERC20_Sample is ERC20, ERC20Burnable {
    constructor() ERC20("ERC20 Sample1", "Sample 1") {
        _mint(msg.sender, 100_000_000_000 * 10**18 );
    }
}
```
ERC20は、代替可能なトークン（暗号資産など）の標準規格で、上記は代替可能なトークンとバーン（暗号資産を流通から永久に取り除く）機能を実装している例です。

## [thirdweb](https://thirdweb.com/)
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/eb85fc71-f185-8475-1f32-fde4276a1fe9.png">

ノーコードで簡単に各種ERCに準拠したスマートコントラクトが作成できるWeb3開発ツールです。
特徴は、なんと言ってもスマートコントラクトの豊富さと、作成の手軽さ（ノーコード）です。
NFT、マーケットプレイス、Drops、DAO..といった目的に応じたスマートコントラクトが用意されているので、自身がやりたいことに対してどういったどのERCを実装すればよいかを見つけるのにも非常に参考になります。
ハッカソンでは、私もこちらにお世話になりました。本当にありがたい！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415206/22a0f975-ff46-1f5d-fc34-9da359b186b7.png)


# 最後に
今回ハッカソンを通じてWeb3ビジネスの現状や技術の一端を知ることができました。
あくまで個人的な見解ですが、Web３を使ったビジネスはまだまだ投機的な側面が大きく、Web3でなければ解決できない問題は限定的な印象です。
ただ、今のWeb3の状況はクラウドが登場し始めた頃にも似ているとも言われ、近い将来Web3技術の利用が当たり前となる可能性は大いにあります。

日本語の技術情報はまだ少ない状況ですが、開発ツールや良質な学習コンテツはたくさん出てきています。

Web３、今からキャッチアップしておきたい領域ですね。