lesson-1_開発環境を用意しよう
🍽 フロントエンドを作成しよう
このセクションでは、スマートコントラクトと連携するフロントエンドを構築します。
今回はtypescript
+ React.js
+ Next.js
を使ってフロントエンド開発を進めていきます。
typescript
: プログラミング言語React.js
: ライブラリNext.js
:React.js
のフレームワーク
それぞれの概要についてはこちらに説明を載せていますので、初めて触れる方はご参照ください 💁
🛠️ フロントエンドのセットアップをしよう
AVAX-Subnet/packages
ディレクトリに移動し、以下のコマンドを実行して下さい。
yarn create next-app client --ts
ここではcreate-next-app
というパッケージを利用してclient
という名前のプロジェクトを作成しました。
--ts
はtypescript
を使用することを指定しています。client
ディレクトリにはNext.js
を使ったプロジェクト開発に最低限必要なものがあらかじめ作成されます。
この段階で、フォルダ構造は下記のようになっているはずです。
AVAX-Subnet
├── .gitignore
├── genesis/
├── package.json
├── packages/
+ │ ├── client/
│ └── contract/
└── tsconfig.json
clientディレクトリ内に生成されたpackage.jsonの設定を確認します。contractディレクトリのpackage.jsonと同様に、"private": true
となっていることを確認し、設定されていない場合は記述しておきます。
ここで、開発環境がきちんと動作するか確認したいと思います。clientディレクトリ内にnode_modules/
やyarn.lock
が生成されている場合は、いったん削除してください。次に、ターミナル上でAVAX-Subnet
直下に移動し下記を実行しましょう。
yarn install
yarn client dev
あなた のお使いのブラウザでhttp://localhost:3000
へアクセスするとWebサイトのフロントエンドが表示されるはずです。
⚠️ 本手順ではChromeブラウザ
を使用しておりますので、何か不具合が生じた場合はブラウザを合わせるのも1つの解決策かもしれません。
例)ローカル環境で表示されているWebサイト
ここでの create-next-app は
version 13.1.1
を使用しています(yarn create next-app --version
で確認できます)。 version の違いによりここで表示されるフロントエンドが別のものでも、この後のディレクトリ構成などに大きな違いがなければ問題ありません。
上記のような形でフロントエンドが確認できれば成功です。
これからフロントエンドの表示を確認する際は,AVAX-Subnet
上でyarn client dev
(client
ディレクトリ上ではyarn dev
)を実行します。
Webサイトの立ち上げを終了する場合は以下のコマンドが使えます ✍️
- Mac:
ctrl + c
- Windows:
ctrl + shift + w
client
ディレクトリのフォルダ構造は以下のようになっています。
※node_modules
は内部ファイルの表示を省略しています。
client
├── README.md
├── next-env.d.ts
├── next.config.js
├── node_modules
├── package-lock.json
├── package.json
├── pages
│ ├── _app.tsx
│ ├── api
│ │ └── hello.ts
│ └── index.tsx
├── public
│ ├── favicon.ico
│ └── vercel.svg
├── styles
│ ├── Home.module.css
│ └── globals.css
└── tsconfig.json
続いてclient
ディレクトリ直下で以下のコマンドを実行して必要なパッケージをインストールしてください。
yarn add ethers@^5.7.2 @metamask/providers@^10.0.0
ethers
: スマートコントラクトとの連携に使用します。@metamask/providers
: metamaskとの連携の際にオブジェクトの型を取得するために使用します。
🐊 tailwind をセットアップしよう
本プロジェクトはtailwindを使用してブラウザの見た目を構築します。
こちらを参考にtailwindをセットアップします。
まずは必要なパッケージのインストールやinitコマンドを実行します。
client
ディレクトリ直下で以下のコマンドを実行します。
yarn add --dev tailwindcss@^3.2.4 postcss@^8.4.20 autoprefixer@^10.4.13
npx tailwindcss init -p
続いて、tailwind.config.js
内に以下のコードを貼り付けてtailwindを使用するファイルへのパスを記述します。
vscodeがエラーを出す可能性もありますが、気にせず進めて問題ありません。
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
"./pages/**/*.{js,ts,jsx,tsx}",
"./components/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
};
./styles/globals.css
内を以下のコードで上書きしてください。
@tailwind base;
@tailwind components;
@tailwind utilities;
tailwindの初期設定が終了したので、挙動を確認します。
pages/index.tsx
内を以下のコードで上書きしてください。
import type { NextPage } from "next";
const Home: NextPage = () => {
return <h1 className="text-3xl font-bold underline">Hello world!</h1>;
};
export default Home;
AVAX-Subnet
ディレクトリ直下でyarn client dev
を実行し、ブラウザでhttp://localhost:3000
へアクセスします。
以下のようなフロントエンドが確認できれば成功です。
🙋♂️ 質問する
ここまでの作業で何かわからないことがある場合は、Discordの#avalanche
で質問をしてください。
ヘルプをするときのフローが円滑になるので、エラーレポートには下記の3点を記載してください ✨
1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のスクリーンショット
フロントエンドの環境構築が完了したら次のレッスンに進みましょう 🎉