lesson-2_環境構築をしよう
🏭 環境構築をしよう
このプロジェクトは上級者向けということで、GitHubからある程度出来上がったプロジェクトをcloneするのではなく1 からプロジェクトを作成
していきます!
スマートコントラクトの作成に使う言語はSolidity
です。
フロントエンドではDart
という言語を用いたFlutter
というフレームワークで開発していきます。Flutterを用いることによる最大の利点はios,android,webアプリを全て同じコード(一部変える必要有り)で記述できるという特徴があります。
なじみのない方も多いかもしれませんが、現在Flutterは使用者数が急増しておりライブラリの数も豊富で自由度の高いUIを作成することできることが魅力です。
では早速環境構築をしていきましょう!
Flutter の開発環境構築
Windows版の方はこちらを、Macの方はこちらを参照して環境構築を行なってください。
ここからはエミュレータを用意するための説明が記述されています。しかし、flutterを使うことでデスクトップ版のwebアプリとしても動作するアプリを開発することができます! これがflutterのすごいところです。なので無理にエミュレータを用意する必要はありません。モバイル上でアプリをデバッグしたい方はここからの説明に従ってエミュレータの用意をしてみてください。
Androidのデバイスがない方は、デバッグで使うエミュレータのセットアップをこちらで行ってください。
上記までが完了したら、次にGoogle Play Storeでmetamaskをインストールした後に、metamaskをセットアップをしましょう。エミュレータの方もエミュレータ内のGoogle Play Storeでmetamaskのインストール+セットアップ
エミュレータの方はmetamaskをインストールできないエラーにあうかもしれません。その時はこちらの動画を参考にしてみてください。
エミュレータはこのようになります!
metamaskのセットアップではアカウントを2つ(受信用・送金用)作成して、Aurora Testnetを追加しましょう。こちらを参考にするとスムーズにAurora Testnetを追加できます! 追加できたらこのようになります。
Flutterの環境構築はそれぞれのPCによって予期しないエラーが出ることがよくある(筆者の経験)ので何か問題があれば気軽にdiscordで質問してみてください!
次に、コントラクトとやり取りする仲介役をしてくれるInfura
でアカウントを作って、Aurora Testnet用のhttp keyをこちらで取得しましょう。
手順は下の通りです。
- アカウントを作成(作成済みの人は2から)
- アカウントを作成したら右上の
Create New Key
ボタンを押す - web3 API(Formerly Ethereum)を選択して、プロジェクトの名前を記入して
Create
ボタンを押す - dashboardの
Manage Key
ボタンを押して下の画面が出てきたら成功!
下にスクロールしてAurora
用のhttp keyがあります。
drop down buttonを押すとテストネット用のものがあります。これは後で使います!
最後に、web3ウォレットとdAppsを連携してくれるWalletConnectのSDKを使用するために必要なProject IDを取得しましょう。こちらにアクセスをしてください。 手順は下の通りです。
- アカウントを作成
- アカウントを作成したら右上の
+ New Project
ボタンを押す - 任意のプロジェクト名を入力して
Create
ボタンを押す - プロジェクトが作成されたら完了!
Project IDは、後ほどフロントエンドを構築する際に必要となります。
ここからは実際にファイルを作成していきます。まずはNode.js
を取得する必要があります。お持ちでない場合は、こちらにアクセスしてください。このプロジェクトで推奨するバージョンはv20です。
インストールが完了したら、ターミナルで以下のコマンドを実行し、バージョンを確認してください。
$ node -v
v20.5.0
それでは本プロジェクトで使用するフォルダーを作成してきましょう。作業を始めるディレクトリに移動したら、次のコマンドを実行します。
mkdir NEAR-MulPay
cd NEAR-MulPay
yarn init -w
⚠️ command not found: yarn
が発生した場合は、以下のコマンドを実行後、再度yarn init -w
を実行してください(参照)。
corepack enable
NEAR-MulPayディレクトリ内の構成を確認してみましょう。
NEAR-MulPay/
├── .git/
├── .gitignore
├── README.md
├── package.json
├── packages/
└ ── yarn.lock
package.json
ファイルの内容を確認してみましょう。
モノレポを作成するにあたり、パッケージマネージャーの機能であるWorkspacesを利用しています。
この機能により、yarn installを一度だけ実行すれば、すべてのパッケージ(今回はコントラクトのパッケージとクライアントのパッケージ)を一度にインストールできるようになります。
workspacesの定義をしている部分は以下になります。
"workspaces": [
"packages/*"
],
それでは、package.json
ファイルにワークスペース内の各パッケージにアクセスするためのコマンドを記述しましょう。下記のように"scripts"
を追加してください。
{
"name": "NEAR-MulPay",
"version": "1.0.0",
"description": "Token swap dapp",
"private": true,
"workspaces": ["packages/*"],
"scripts": {
"contract": "yarn workspace contract",
"client": "yarn workspace client",
"test": "yarn workspace contract test"
}
}
これにより、各パッケージのディレクトリへ階層を移動しなくてもプロジェクトのルート直下から以下のようにコマンドを実行することが可能となります(ただし、各パッケージ内にpackage.json
ファイルが存在し、その中にコマンドが定義されていないと実行できません。そのため、現在は実行してもエラーとなります。ファイルは後ほど作成します)。
yarn <パッケージ名> <実行したいコマンド>
次に、Nodeパッケージのインストール方法を定義しましょう。プロジェクトのルートに.yarnrc.yml
ファイルを作成し、以下の内容を記述してください。
nodeLinker: node-modules
最後に、.gitignore
ファイルを下記の内容に更新しましょう。
# yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
# dependencies
**/node_modules
# misc
**/.DS_Store
最終的に以下のようなフォルダー構成となっていることを確認してください。
NEAR-MulPay
├── .git/
├── .gitignore
├── .yarnrc.yml
├── README.md
├── package.json
├── packages/
└── yarn.lock