day28. web3.0のためのフロントエンド開発 – 開発環境のセットアップ(フロントエンド) –

このチュートリアルでは、Day27で解説した技術を利用するための開発環境をセットアップします。

このチュートリアルでは、Day27で解説した技術を利用するための開発環境をセットアップします。

TOC

セットアップ(フロントエンド開発環境)

実際のセットアップの例は次のとおりです。これらは、Solidity用のプロジェクトフォルダとは別の場所で行います(フロントエンド、スマートコントラクトはそれぞれ別のレポジトリーとして管理されます)。
1行目のコマンドでNext.jsの初期化が行われます。それに続けて、必要なモジュールの設定とprettier用の設定ファイルをコピーします。

Zsh
% npx create-next-app@13.1.6
Need to install the following packages:
  create-next-app@13.1.6
Ok to proceed? (y) y
 What is your project named?  nextjs-funding
 Would you like to use TypeScript with this project?  Yes
 Would you like to use ESLint with this project?  Yes
 Would you like to use `src/` directory with this project?  No
 Would you like to use experimental `app/` directory with this project?  No
 What import alias would you like configured?  @/*
Creating a new Next.js app in /Users/simokawa/code/token-village/nextjs-funding.

Using npm.

Installing dependencies:
...

% cd nextjs-funding
% npm install moralis react-moralis web3uikit moralis-v1 ethers
...
% npm install -D prettier tailwindcss postcss autoprefixer
...
% cp ../funding/.prettierrc .
% cp ../funding/.prettierignore .
% mkdir components
% mkdir constants

ここでは、npmまたはnpxコマンドを利用しています。これは、1行目のコマンドでNext.jsのバージョンを指定して、インストールするためです。新しいバージョンで行う場合、構造が変わっていることから、以降のガイドとは少し違う方法で設定していく必要があります。

tailwind / PostCssの設定

tailwindはCSSフレームワークの1つです。
小さな単一目的のユーティリティ(ヘルパー)クラスを提供して、それらを組み合わせることで任意のデザインやレイアウトを構築するという考え方を採用しています。PostCSSのプラグインの1つなので、PostCSSと一緒に使われます。

例えば、テキストの色を変えたい場合、Tailwind CSSではtext-red-500のようなクラスをHTML要素に追加することで赤色に変更できます。他のスタイリングも同様に、特定のユーティリティクラスを追加することで適用されます。

設定ファイルtailwind.config.jscontentに対象となるtsxファイル等の保存場所(と対象とする拡張子)を指定します。

JavaScript
// tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
    content: [ // 以下の2行を追加する
        "./pages/**/*.{js,tx,jsx,tsx}", 
        "./components/**/*.{js,ts,jsx,tsx}",
    ],
    theme: {
        extend: {},
    },
    plugins: [],
}

Next.jsでデフォルトで利用されるCSSにtailwind用の設定を入れます(次のコード例の2〜4行目まで)。

CSS
/* styles/globals.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

PostCSSは、CSSを解析し、プラグインを使って変換するためのツールです。これにより、先進的なCSS機能を現在のブラウザで利用可能な形式に変換したり、CSSを最適化・圧縮したりすることができます。

PostCssの設定ファイルは、postcss.config.jsで次のような設定となります。

JavaScript
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
}

端的に言うと、tailwindcssは、特定の目的を達するための小さいクラスが集まったフレームワークでスタイルを素早く簡潔に書くことを目的としていて、PostCssやautoprefixerは、ブラウザの互換性等を考慮しながらCSSを最適化してくれるプラグインです。

ディレクトリー構造

前項のセットアップを実行し、さらに本章のページ、コンポーネントを開発した後のディレクトリー構造を見てみましょう。次のようになります。

Zsh
.
├── .next/*             # Next.jsのビルドプロセスの結果が格納される(随時、npm run buildで生成される)
├── components/*        # Reactのコンポーネントを定義するファイル(これらのコンポーネントがpages/index.tsx等で利用される)
    ├── Fund.tsx        # 投資家の情報や投資・引き出しのアクションなどを定義した部分(index.tsxで呼び出して使う)
    └── Header.tsx      # ページのヘッダー部分を定義する(index.tsxで呼び出して使う)
├── constants/*         # 定数を格納するための場所で、コントラクトに関連するような情報を保存する
    ├── abi.json        # 操作したい対象のコントラクトのインターフェースが定義されているファイル(例えば、fund関数を呼ぶ際のインプット、アウトプットの形式などが定義されている)
    ├── contractAddress # デプロイされたコントラクトのアドレス(chain ID毎)を保持する
    └── index.ts        # 上記の2つの値を持つ変数をexportしているファイル(利用するファイルでimportして使うためのもの)
├── node_modules/*      # npmパッケージがインストールされる場所
├── out/*               # 静的サイトとしてエクスポートされた際に生成される(next.config.jsにexportの設定がされている場合、npm run buildで作成される)
├── pages/*             # このディレクトリー内のファイルは自動的にルートとして認識される
    ├── api/*           # APIルートを作成するためのディレクトリー。このディレクトリー内に定義されたファイルは、APIエンドポイントとして扱われ、サーバーサイドのロジックを実行できる場所となります
    ├── _app.tsx        # 全ページ共通のレイアウトやステートを持つ場合に利用するAppコンポーネント
    └── index.tsx       # リクエストされたパスが、"/"(ルート)だった際に表示されるページ(トップページ)
├── public/*            # 静的ファイルをこのディレクトリに配置するとルートディレクトリから直接アクセスできるようになります
├── styles/*            # スタイルシートや CSS モジュールを格納する
    └── globals.css     # グローバルスタイルを定義するためのCSSファイル。アプリケーション全体に適用したい場合。
├── .gitignore          # git(ソース管理ツール)で管理対象外のファイルを定義するファイル
├── .prettierrc         # prettierの設定ファイル
├── .prettierignore     # prettierで対象外とするファイルを定義するファイル
├── next.config.js      # Next.js のカスタム設定を行うためのファイル
├── package-lock.json   # Node.jsが依存関係に関する詳細情報として保持しているファイル
├── package.json        # プロジェクトのnpm(yarn)設定ファイル
├── postcss.config.js   # PostCssの設定ファイル
├── tailwind.config.js  # Tailwindcssの設定ファイル
└── tsconfig.json       # Typescriptのコンパイル設定を保持するファイル

ご意見をお聞かせください!

web3チュートリアルシリーズについてのご意見を是非お聞かせください。

この記事、または、web3チュートリアル全体について、是非、あなたのご意見をお聞かせください。
アンケートはこちらからご回答いただけます。

無料相談承ります

ITの専門家が無料相談を受け付けます。web3以外のテーマでもOKです。

オンラインでの無料相談を承っています。ご希望の方は、お問い合わせフォームよりご連絡ください。
ITの専門家があなたのご質問にお答えいたします。

Let's share this post !

Author of this article

After joining IBM in 2004, the author gained extensive experience in developing and maintaining distributed systems, primarily web-based, as an engineer and PM. Later, he founded his own company, designing and developing mobile applications and backend services. He is currently leading a Tech team at a venture company specializing in robo-advisory.

Comments

To comment

CAPTCHA


TOC