おすすめしたい講座
私が制作した講座ですが、紹介させてください m(__)m
おすすめしたい理由
Pythonライクなツールを活用した、数少ない日本語のDApp開発の学習コンテンツとして有用。
執筆時点では、DApp学習コンテンツの多くがJavaScript系ツール(HardhatやReactなど)を多用。JavaScriptが得意ではない方にとって、ハードルが高い。
DApp開発にPythonライクなツール(VyperやBrownieなど)も利用できがる、執筆時点では日本語での解説ドキュメントが少ない。
そもそもDAppとは
DAppとは、ブロックチェーン上で実行されるアプリケーションのこと。
「Decentralized Applications」の略。
色々な書き方や読み方があり、例えば以下は、すべて同じDappを指す。
- Dapps(ダップス)
- DApps(ダップス)
- dapps(ダップス)
- Dapp(ダップ)
- DApp(ダップ)
- dapp(ダップ)
なお、ethereum.orgでは、複数形の意味のニュアンスで"dapps"、単数形のニュアンスで"dapp"、文頭の大文字表記で"Dapps"、強調するニュアンスで"DAPPS"と表記されている。※2023/12執筆時点
有名なDAppって、例えば何がある?
Uniswap:暗号資産をスワップ(交換)できる取引所
参考:https://app.uniswap.org/swap
Gods Unchained:戦略的カードゲーム。プレイでカードを獲得し、実生活で売れる
OpenSea:NFTを売買するプラットフォーム
基本的なDAppのシステム構成
特徴①:スマートコントラクトをブロックチェーンにデプロイ
DAppの文脈において、スマートコントラクトとは、DAppが持つ機能をコード化したもの。このスマートコントラクトを、ブロックチェーンネットワーク上にデプロイしている。
特徴②:フロントエンドをWebサーバにデプロイ
HTML, CSS, Javascript, Swift, Kotlin等のフロントエンドのソースコードを、Webサーバにデプロイしている。DAppの利用ユーザーがフロントエンドにアクセスし、フロントエンドからブロックチェーン上のスマートコントラクトにアクセス。
これは、通常のWebアプリにおけるAPIサーバとフロントエンドの関係性に似ている。
DApp開発の学習コンテンツではJS系ツールがよく使われ、Pythonデベロッパーにはハードルが高い
DApp開発の学習コンテンツでは、上述のシステム構成を、次のツールで解説するケースが多い。
ツール名 | 概要 |
---|---|
Solidity | スマートコントラクトを記述する言語。構文は、JavaScriptやC++に似ている。 |
Hardhat | スマートコントラクト開発のためのフレームワーク(JavaScriptベース) |
ethers.js | ブロックチェーンとやり取りするためのJavaScriptライブラリ |
web3.js | 同上 |
React | フロントエンド開発でよく利用されるJavaScriptライブラリ |
JavaScript系ツールを多用している。
JavaScriptがあまり得意でない方にとって、学習ハードルは高い。
DApp開発で活用できるPythonライクなツールもある
実は、DApp開発で活用できるPythonライクなツールもある。
ツール名 | 概要 |
---|---|
Vyper | スマートコントラクトを記述する言語。構文は、Pythonに似ている。 |
Brownie | スマートコントラクト開発のためのフレームワーク(Pythonベース) |
web3.py | ブロックチェーンとやり取りするためのPythonライブラリ |
PythonライクなDApp開発ツールを勉強するには英語力も必要
DApp開発で活用できるPythonライクなツールもありますが、公式サイトは英語表記です(2023/12執筆時点)。簡単に学習が可能であるとはいえません。日本語で解説しているサイトも、2023/12執筆時点であまり多くありません。
Vyper
参考:https://docs.vyperlang.org/
Brownie
参考:https://eth-brownie.readthedocs.io/
web3.py
参考:https://web3py.readthedocs.io/
学習ハードルを下げるためにUdemyコースを制作
コースの特徴
VyperとBrownieの導入により、Pythonの基礎知識を活かして、DApp開発をスムーズにスタート
ツールのインストール、スマートコントラクトの作成、ブロックチェーンへのデプロイ、フロントエンドとの連携までの一連の流れを習得
実際に機能するDAppが1つ完成。Ethereumブロックチェーンのテストネットワーク”Sepolia” へデプロイ、VercelでDApp公開。
注意点
DApp開発で活用できるPythonライクなツールもあるが、DAppに実装したい機能によっては、JavaScriptも必要となる。おすすめしているコースでも、フロントエンド開発でJavaScriptを利用している。以下、JavaScriptが必要になるケース例。
-
MetaMaskログイン機能を実装する場合
MetaMaskは、フロントエンドで機能するアプリです。MetaMaskの機能をDAppに組み込むには、JavaScriptが必要です。 -
JSでフロントエンド開発に動きをつけたい場合
当然ですが、Webアプリのフロントエンド開発に動きをつけたい場合も、JavaScriptを使うのが合理的です。 -
ユーザーがトランザクションを実行する場合
ユーザーがトランザクションを実行するには、ユーザーアドレスに対応する秘密鍵が必要です。秘密鍵は、漏洩を防ぐためフロントエンド内部で、トランザクション実行処理を行う必要があります。Webアプリの場合、このフロントエンド内部処理の記述に、JavaScriptが必要です。
こんなDAppを作ります(Youtube動画)
さいごに
初めてDApp開発を勉強する時、JavaScriptや英語が苦手な私は苦労しました。Python派の技術者にとって、すこしでもスムーズに勉強できればと思い、講座を作りました。Vyperでスマートコントラクトを記述するところまで無料公開しています。もしご興味あれば、ぜひご視聴ください😊