開発環境を用意しよう
✅ 環境構築を行う
このプロジェクトの全体像は次のとおりです。
1 . スマートコントラクトを作成します。
- ユーザーがメッセージをスマートコントラクト上でやり取りのするための処理方法に関するすべてのロジックを実装します。
- 開発は
Ethereum
のローカルチェーンを利用して作成します。
2 . スマートコントラクトをブロックチェーン上にデプロイします。
- スマートコントラクトを
Avalanche
のC-Chain
(のテストネット)へデプロイします。 - 世界中の誰もがあなたのスマートコントラクトにアクセスできま す。
- ブロックチェーンは、サーバーの役割を果たします。
3 . Web アプリケーション(dApp)を構築します。
- ユーザーはWebサイトを介して、ブロックチェーン上に展開されているあなたのスマートコントラクトと簡単にやりとりできます。
- スマートコントラクトの実装 + フロントエンドユーザー・インタフェースの作成 👉 dAppの完成を目指しましょう 🎉
まず、node
/ yarn
を取得する必要があります。
お持ちでない場合は、下記のリンクにアクセスをしてインストールしてください。
node v16
をインストールすることを推奨しています。
それでは本プロジェクトで使用するフォルダーを作成してきましょう。作業を始めるディレクトリに移動したら、次のコマンドを実行します。
mkdir AVAX-Messenger
cd AVAX-Messenger
yarn init --private -y
AVAX-Messengerディレクトリ内に、package.jsonファイルが生成されます。
AVAX-Messenger
└── package.json
それでは、package.json
ファイルを以下のように更新してください。
{
"name": "avax-messenger",
"version": "1.0.0",
"description": "Message dapp that allows text and tokens (AVAX) to be exchanged.",
"private": true,
"workspaces": {
"packages": ["packages/*"]
},
"scripts": {
"contract": "yarn workspace contract",
"client": "yarn workspace client",
"test": "yarn contract test"
}
}
package.json
ファイルの内容を確認してみましょう。
このプロジェクトはモノレポ構成となるようにフォルダを構成してきます。モノレポとは、コントラクトとクライアント(またはその他構成要素)の全コードをまとめて1つのリポジトリで管理する方法です。
モノレポを作成するにあたり、パッケージマネージャーの機能であるWorkspacesを利用しています。
この機能により、yarn installを一度だけ実行すれば、すべてのパッケージ(今回はコントラクトのパッケージとクライアントのパッケージ)を一度にインストールできるようになります。
workspacesの定義をしている部分は以下になります。
"workspaces": {
"packages": [
"packages/*"
]
},
また、ワークスペース内の各パッケージにアクセスするためのコマンドを以下の部分で定義しています。
"scripts": {
"contract": "yarn workspace contract",
"client": "yarn workspace client",
"test": "yarn contract test"
}
これにより、各パッケージのディレクトリへ階層を移動しなくてもプロジェクトのルート直下から以下のようにコマンドを実行することが可能となります (ただし、各パッケージ内にpackage.json
ファイルが存在し、その中にコマンドが定義されていないと実行できません。そのため、現在は実行してもエラーとなります。ファイルは後ほど作成します)。
yarn <パッケージ名> <実行したいコマンド>
次に、TypeScriptの設定ファイルtsconfig.json
を作成しましょう。今回のプロジェクトは、contractとclientどちらもTypeScriptを使用するため、それぞれのパッケージにtsconfig.jsonが存在します。そのため、ルートディレクトリにもtsconfig.jsonを配置することでパッケージ間で共通したい設定を記述することができます。
それでは、AVAX-Messengerディレクトリ直下にいることを確認し、下記のコマンドを実行しましょう。
tsc --init
tsconfig.json
ファイルが生成されたことを確認してください。設定はデフォルトのままにしておきます。
それでは、ワークスペースのパッケージを格納 するディレクトリを作成しましょう。
以下のようなフォルダー構成となるように、packages
ディレクトリとその中にcontract
ディレクトリを作成してください(client
ディレクトリは、後ほどのレッスンでフロントエンド構築の際に作成したいと思います)。
AVAX-Messenger
├── package.json
+├── packages/
+│ └── contract/
└── tsconfig.json
contract
ディレクトリには、スマートコントラクトを構築するためのファイルを作成していきます。
最後に、AVAX-Messengerディレクトリ下に.gitignore
ファイルを作成して以下の内容を書き込みます。
**/yarn-error.log*
# dependencies
**/node_modules
# misc
**/.DS_Store
最終的に以下のようなフォルダー構成となっていることを確認してください。
AVAX-Messenger
├── .gitignore
├── package.json
├── packages/
│ └── contract/
└── tsconfig.json
これでモノレポの雛形が完成しました!