ローカル環境でイーサリアムネットワークを立ち上げよう
🗂 環境構築をしよう
まず、node / yarnを取得する必要があります。お持ちでない場合は、下記のリンクにアクセスをしてインストールしてください。
node v16をインストールすることを推奨しています。
🍽 Git リポジトリをあなたの GitHub にフォークする
まだGitHubのアカウントをお持ちでない方は、こちら の手順に沿ってアカウントを作成してください。
GitHubのアカウントをお持ちの方は、下記の手順に沿ってプロジェクトの基盤となるリポジトリをあなたのGitHubにフォークしましょう。
1. こちらからunchain-tech/ETH-NFT-Collectionリポジトリにアクセスをして、ページ右上のForkボタンをクリックします。

2. Create a new forkページが開くので、「Copy the main branch only」という項目にチェックが入っていることを確認します。

設定が完了したらCreate forkボタンをクリックします。あなたのGitHubアカウントにETH-NFT-Collectionリポジトリのフォークが作成されたことを確認してください。
それでは、フォークしたリポジトリをローカル環境にクローンしましょう。
まず、下図のように、CodeボタンをクリックしてSSHを選択し、Gitリンクをコピーしましょう。

ターミナル上で作業を行う任意のディレクトリに移動し、先ほどコピーしたリンクを用いて下記を実行してください。
git clone コピーした_github_リンク
無事に複製されたらローカル開発環境の準備は完了です。
🔍 フォルダ構成を確認する
実装に入る前に、フォルダ構成を確認しておきましょう。クローンしたスタータープロジェクトは下記のようになっているはずです。
ETH-NFT-Collection
├── .git/
├── .gitignore
├── LICENSE
├── README.md
├── package.json
├── packages/
│ ├── client/
│ └── contract/
└── yarn.lock
スタータープロジェクトは、モノレポ構成となっています。モノレポとは、コントラクトとクライアント(またはその他構成要素)の全コードをまとめて1つのリポジトリで管理する方法です。
packagesディレクトリの中には、clientとcontractという2つのディレクトリがあります。
package.jsonファイルの内容を確認してみましょう。
モノレポを作成するにあたり、パッケージマネージャーの機能であるWorkspacesを利用しています。
workspacesの定義をしている部分は以下になります。
// package.json
"workspaces": {
"packages": [
"packages/*"
]
},
この機能により、yarn installを一度だけ実行すれば、すべてのパッケージ(今回はコントラクトのパッケージとクライアントのパッケージ)を一度にインストールできるようになります。
ターミナル上でETH-NFT-Collectionディレクトリ直下に移動して下記を実行してみましょう。
yarn install
packagesディレクトリ下のcontract/とclient/がそれぞれ保有するpackage.jsonに定義されている依存関係がインストールされます。
また、ワークスペース内の各パッケージにアクセスするためのコマンドを以下の部分で定義しています。
// package.json
"scripts": {
"contract": "yarn workspace contract",
"client": "yarn workspace client",
"test": "yarn workspace contract test"
}
これにより、各パッケージのディレクトリへ階層を移動しなくてもプロジェクトのルート直下から以下のようにコマンドを実行することが可能となります(ただし、各パッケージ内にpackage.jsonファイルが存在し、その中にコマンドが定義されていないと実行できません)。
yarn <パッケージ名> <実行したいコマンド>
👏 サンプルプロジェクトを開始する
ここからは、コントラクトの構築を行います。packages/contractディレクトリ下を編集していきます。
スマートコントラクトをすばやくコンパイルし、ローカル環境にてテストを行うために、Hardhat というツールを使用します。
-
Hardhatにより、ローカル環境でイーサリアムネットワークを簡単に起動し、テストネットでイーサリアムを利用できます。
-
「サーバー」がブロックチェーンであることを除けば、Hardhatはローカルサーバーと同じです。
それでは、Hardhatを使用して、サンプルプロジェクトを作成しましょう。
packages/contractディレクトリに移動し、次のコマンドを実行します。
npx hardhat init
hardhatがターミナル上で立ち上がったら、それぞれの質問を以下のように答えていきます。
・What do you want to do? →「Create a JavaScript project」を選択
・Hardhat project root: →「'Enter'