環境構築をしよう
🧞♂️ 環境構築しよう
ではプロジェクトを作成するにあたって環境構築をしていきましょう!
まず、node
/ yarn
を取得する必要があります。お持ちでない場合は、こちらにアクセスしてください。
node v16
をインストールすることを推奨しています。
🌚 バックエンドの環境構築
まずはスマートコントラクトを作成するための環境を整えていきましょう!
では下のコマンドをターミナルで実行してrustを使用できるようにしていきます。(Windows OSの場合はhttps://rust.sh/
からインストール用のinit.exeをダウンロードし実行しましょう。)
curl --proto '=https' --tlsv1.2 -sSf `https://sh.rustup.rs` | sh
下のようなメッセージが帰ってくるはずです。
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>
処理が終わったら下のコマンドを実行して環境変数を設定します。
source "$HOME/.cargo/env"
次にrustの特定のバージョンを下のコマンドをターミナルで実行することでインストールします。
rustup install 1.68.0
その後指定したバージョンがインストールされているか、下のコマンドをターミナルで実行することで確認します。
rustup toolchain list
すると下のような結果が出てきます。
赤字で囲っているところがインストールしたrustのコンパイラーのバージョンを示すものです。こちらをコピーしましょう。
では下のコマンドをターミナルで実行することでrustのコンパイラーとして1.68.0のものを使用できるようにしましょう。
rustup component add rust-src --toolchain
に続く部分は先ほどコピーしたものと入れ替えてください。筆者はmacを使用しているので1.68.0-aarch64-apple-darwin
となっています。
rustup override set 1.68.0
rustup component add rust-src --toolchain 1.68.0-aarch64-apple-darwin
ここで注意点です。Astar-SocialFiで使用しているパッケージの中には、開発環境によってはエラーで動かなくなるものが含まれています。なのでもしどこかでどうしてもエラーが発生して進まないということがあればここから説明するコマンドを使用してrustのコンパイラーのバージョンをnightlyに変更してみてください。
nightlyとは、rustのコンパイラーのバージョンの種類の1つです。毎日rustのコンパイラーは更新されており、それが毎日反映されているのがnightly
です。
stableバージョンには安定的に動作すると認められたものしか入れられていません。
ではAstar-SocialFiが動く(教材更新日:2023/6/14時点)nightlyのバージョンに切り替えるコマンドを以下に示します。
rustup toolchain install nightly-2023-01-01
rustup target add wasm32-unknown-unknown --toolchain nightly-2023-01-01
rustup component add rust-src --toolchain nightly-2023-01-01
これでコンパイラーのバージョンは変更できました。このバージョンのコンパイラーを用いるにはcargo
コマンドの次に+nightly-2023-01-01
という文字列を入れる必要があります。注意してください。
次にcargo-contracts CLI
を使用できるようにするための準備をします。下のコマンドを順番にターミナルで実行してください。
その前にmacで開発をされる方はこちらを参考にHomebrew
をインストールしてください。こちらはパッケージをインストールするのに使用します。
rustup component add rust-src
(Macの場合のみ)brew install openssl
cargo install cargo-dylint dylint-link
cargo install --force --locked cargo-contract
これでコントラクトをデプロイする準備が完了しました!
それでは本プロジェクトで使用するフォルダーを作成してきましょう。作業を始めるディレクトリに移動したら、次のコマンドを実行します。
mkdir ASTAR-SocialFi
cd ASTAR-SocialFi
yarn init --private -y
ASTAR-SocialFiディレクトリ内に、package.jsonファイルが生成されます。
ASTAR-SocialFi
└── package.json
それでは、package.json
ファイルを以下のように更新してください。
{
"name": "ASTAR-SocialFi",
"version": "1.0.0",
"description": "ASTAR SNS dApp",
"private": true,
"workspaces": {
"packages": ["packages/*"]
},
"scripts": {
"contract": "yarn workspace contract",
"client": "yarn workspace client",
"test": "yarn workspace contract test"
}
}
package.json
ファイルの内容を確認してみましょう。
モノレポを作成するにあたり、パッケージマネージャーの機能であるWorkspacesを利用しています。
この機能により、yarn installを一度だけ実行すれば、すべてのパッケージ(今回はコントラクトのパッケージとクライアントのパッケージ)を一度にインストールできるようになります。
workspacesの定義をしている部分は以下になります。
"workspaces": {
"packages": [
"packages/*"
]
},
また、ワークスペース内の各パッケージにアクセスするためのコマンドを以下の部分で定義しています。
"scripts": {
"contract": "yarn workspace contract",
"client": "yarn workspace client",
"test": "yarn workspace contract test"
}
これにより、各パッケージのディレクトリへ階層を移動しなくてもプロジェクトのルート直下から以下のようにコマンドを実行することが可能となります(ただし、各パッケージ内にpackage.json
ファイルが存在し、その中にコマンドが定義されていないと実行できません。そのため、現在は実行してもエラーとなります。ファイルは後ほど作成します)。
yarn <パッケージ名> <実行したいコマンド>
次に、ASTAR-SocialFiディレクトリ下に.gitignore
ファイルを作成して以下の内容を書き込みます。
**/yarn-error.log*
# dependencies
**/node_modules
# misc
**/.DS_Store
最後にpackagesフォルダーを作成しましょう。
最終的に以下のようなフォルダー構成となっていることを確認してください。
ASTAR-SocialFi
├── .gitignore
├── package.json
└── packages/
これでモノレポの雛形が完成しました!