序文#
この記事では、一般的な Solidity 開発環境について説明し、最適な開発環境を推奨し、必要なコンテンツをインストールする方法を紹介します。
環境の紹介#
現在、Solidity の開発環境は大まかに 2 つのカテゴリに分かれています。
-
オンラインタイプ:ブラウザに依存する統合開発環境で、デバッグ、アカウントの残高管理、環境の設定などが簡単に行えます。
-
オフラインタイプ:ローカル開発に適した環境です。
オンラインタイプ#
オンラインタイプの主な製品は Remix です https://remix.ethereum.org/
Remix は ETH 公式のオンライン開発環境であり、非常に強力なクラウド統合環境の開発 IDE です。ファイル管理、オンラインコンパイル、静的解析、デプロイ、トランザクションの実行、テストなどの機能を提供します。また、強力なプラグインシステムも組み込まれています。
Remix はあらゆる面で非常に強力であり、ローカルファイルの直接変更も可能です。唯一の欠点は、複数のバージョンのコンパイラをサポートしていないことです。簡単な開発や一時的なチェーン上の分析やデータ呼び出しには非常に適しています。
オフラインタイプ#
Truffle Suite#
ウェブサイト:https://trufflesuite.com/
Truffle Suite は、truffle、ganache、drizzle などのツールを含むスイートの名前です。
Truffle:EVM 向けの開発環境で、テストなどのツールスイートを含んでいます。
Ganache:開発テスト用の EVM ローカルノードで、契約のデプロイなどの機能が利用できます。
Drizzle:Redux ベースのフロントエンドコンポーネントで、フロントエンドでのインタラクションを容易にします。
Hardhat#
ウェブサイト:https://hardhat.org/
以前は Builder と呼ばれていた Hardhat は、ほぼすべての Solidity 開発に必要な機能を網羅した非常に機能豊富な Solidity 開発フレームワークです。スマートコントラクトのテスト、コンパイル、ローカルノードを備えた高度に統合された開発フレームワークであり、強力なプラグインシステムも備えています。
Foundry#
ウェブサイト:https://getfoundry.sh/
Rust で開発された Solidity 開発フレームワークで、速度を重視しています。開発、テスト、ローカルノードの機能も備えています。ただし、Hardhat とは異なり、foundry のテストコードは Solidity で記述されていますが、vm cheat code と組み合わせることでローカル環境との対話も可能です。ただし、Hardhat と比較していくつかの機能が不足しています。
Python で開発されたフレームワークもいくつかありますが、この記事では詳しく説明しません。興味がある方は自分で検索してください。
Hardhat の環境構築#
3 つの主要な開発環境の中で、Hardhat
はその強力な機能から開発フレームワークの基準となっており、もし誰かがあなたに開発フレームワークとしてtruffle
を推奨しているなら、自信を持って Hardhat を取り出して Hardhat の大家族に参加させてください。
もちろん、これは Hardhat に欠点がないことを意味するわけではありません。ただし、利点と欠点を比較しても微々たるものです。もちろん、Foundry も非常に強力なフレームワークですが、Hardhat ほど包括的な機能はありません。ただし、Hardhat と Foundry を組み合わせて使用すると、予想外の効果が得られるかもしれません。
ただし、現時点ではそれらのことは行わないことにしましょう。なぜなら、Hardhat は現在ほとんどの状況に対応できるからです。
それでは、さっそく次のステップに進みましょう。
プロジェクトの作成と Hardhat のインストール#
お好きなディレクトリを見つけて、フォルダを作成し、VSCode でそのフォルダを開きます。または、ターミナルを使用して、code \\path\\to\\your\\project
と入力して、VSCode でプロジェクトディレクトリを開くこともできます。
VSCode を開いたら、Command+J
キーを押して、VSCode のターミナルパネルを開きます。ここで Hardhat をインストールします。
npx hardhat
と入力し、プロンプトが表示されるのを待ちます。しばらくお待ちください(遅い場合は VPN を使用してください)。
ここで下向きキーを押して、Create a TypeScript project
を選択します。もちろん、Create a Javascript project
を選択することもできますが、あまりおすすめしません。なぜなら、TypeScript は JavaScript よりも多くの利点があり、複数人での協力に適しているからです。
指示に従って初期設定を完了してください。ただし、Do you want to install this sample project's dependencies with npm
でn
を入力することに注意してください。なぜなら、依存関係を管理するためにYarn
を使用する必要があるからです。
次に、以下のコマンドを入力して依存関係をインストールします。
yarn add "hardhat@^2.11.1" @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
注意⚠️#
このエラーが表示された場合は心配しないでください。これは JavaScript の世界では非常に一般的な問題ですし、将来さまざまな問題に直面することもあります。たとえば、Python のコンパイル環境の不足、アーキテクチャの不一致などです。
この問題は、現在の Node のバージョンが要件を満たしていないために発生する可能性があります。要件としては、Node のバージョンが ^14、^16、^18 であることがわかります。したがって、ここでは要件を満たすバージョンの Node を再インストールする必要があります。この問題は、インストールした Node のバージョンが正しくないか、brew install nvm
を使用した場合に発生する可能性があります。後者の場合は、brew uninstall nvm
と入力してアンインストールし、次のコマンドを使用してインストールします:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
。その後、ターミナルを再起動します。
インストールの完了#
インストールが完了すると、ディレクトリ構造は次のようになります。
その他の必要な依存関係のインストール#
もちろん、私たちのチュートリアルはエンタープライズレベルの開発を目指しているため、Hardhat だけをインストールしても十分ではありません。なぜなら、これにはプロジェクトの持続的なアップグレード機能が不足しているからです。
TypeScript#
TypeScript プロジェクトを作成したので、TypeScript の依存関係をインストールする必要があります。
yarn add ts-node typescript chai @types/node @types/mocha @types/chai
Hardhat deploy#
これは Hardhat のプロジェクト化に必要なプラグインであり、コードのデプロイを管理するのに役立ちます。コード内で名前に基づいてデプロイした契約のアドレスを簡単に取得したり、コンテキストに基づいてどの契約をデプロイするかを決定したりすることができます。また、テストには、特定のタグを持つ契約のみをデプロイするための便利な関数も提供されています。
Hardhat deploy
をインストールするには、次のコマンドを入力します。
yarn add hardhat-deploy @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers
そして、hardhat.config.ts
ファイルにimport "hardhat-deploy"
を追加します。
これで、deploy のインストールが完了しました。ルートディレクトリにdeploy
フォルダを作成し、以降のデプロイファイルはすべてこのフォルダに配置されます。
Dotenv#
dotenv は、.env
ファイルをシステム環境変数にインポートしてプログラムで使用できるようにする JavaScript パッケージです。このパッケージは非常に便利であり、エンタープライズ開発コードを開発する際には、git や他のバージョン管理ツールを使用することになるでしょう。プライベートプロジェクトの場合、いくつかの機密変数をバージョン管理リポジトリにアップロードしても問題ありませんが、パブリックプロジェクトの場合は、いくつかのセキュリティ上の問題が生じる可能性があります。したがって、一部の変数をバージョン管理されないファイルに配置する必要があります。
次のコマンドを入力して dotenv をインストールします。
yarn add dotenv
次に、hardhat.config.ts
を編集し、最上部にimport 'dotenv/config'
を追加します。
これで、必要なプロジェクトパッケージのインストールが完了しました。このパッケージをテンプレートとして保存しておいて、将来使用することができます。
テストコマンドを実行して、統合パッケージが正常に動作するか確認しましょう。
yarn hardhat test
上記の内容が表示されたら、おめでとうございます。エンタープライズ基準に合致した環境が構築されました。
VSCode の拡張機能(オプション)#
もちろん、VSCode にいくつかの拡張機能を追加すると、開発がより効果的になります。いくつかのおすすめの拡張機能を紹介します。
-
Hardhat Solidity - Hardhat チームが開発した Solidity の拡張機能で、非常に便利です。
-
Copilot - GitHub のスマートなコード補完プラグインで、非常に便利です。
-
Material Theme Icons - 美化プラグイン
-
Material Theme - もう 1 つの美化プラグイン
最終的なインストール結果は以下のようになります。
もちろん、美しさには個人の定義がありますので、見た目が気に入らない場合は自由に変更してください。
まとめ#
この章では、Hardhat のプロジェクト環境のインストール方法について説明しました。次のチュートリアルでは、Uniswap とのインタラクションを実現するプログラムの実装を通じて、さらに進んだ内容を取り上げます。