この記事では、Hardhatを使って共同管理自動台帳(イーサリアム)上で動く条件即座実行(スマートコントラクト)の開発環境を構築する手順を解説します。
従来のWebサーバーと違い、共同管理自動台帳では一度デプロイすれば永久に動き続けるという革命的な特徴があります。月額サーバー代も不要で、長期的には圧倒的にコスト効率が良い開発方法です。
まず、Node.jsがインストールされているか確認します。
File not found: "bash" at page "スマートコントラクト開発環境Hardhatを学ぶ";
node --version }}}
バージョンが表示されればOKです。インストールされていない場合は、[Node.js公式サイト](https://nodejs.org/)からダウンロードしてインストールしてください。
新しいプロジェクト用のフォルダを作成し、移動します。
mkdir my-first-hardhat cd my-first-hardhat
ポイント: フォルダ名は英数字とハイフンで構成するのがベストプラクティスです。
npm install --save-dev hardhat
npx hardhat init
初期化時に以下の選択肢が表示されます:
TypeScript?を選択する理由:
その後の質問は全て Yes で進めます。
初期化が完了すると、以下のファイル構造が生成されます:
my-first-hardhat/ ├── contracts/ # 条件即座実行コード(.sol) │ └── Lock.sol # サンプルコード ├── scripts/ # デプロイ用スクリプト(.ts) │ └── deploy.ts ├── test/ # テストコード(.ts) │ └── Lock.ts ├── hardhat.config.ts # Hardhat設定ファイル ├── tsconfig.json # TypeScript設定 ├── package.json # Node.js依存関係 └── README.md # プロジェクト説明
| フォルダ名 | 役割 | ファイル形式 |
| contracts | 条件即座実行のコードを格納 | .sol(Solidity) |
| scripts | デプロイやその他の実行スクリプト | .ts(TypeScript?) |
| test | テストコードを格納 | .ts(TypeScript?) |
プロジェクトフォルダをWindsurfで開きます。
# Windsurfがインストールされている場合 windsurf . # または手動でWindsurfを開いてフォルダを選択
従来の開発フローと比較すると:
| 従来の開発 | Windsurf + Hardhat |
| ドキュメントを読んで理解 | 「○○したい」と伝えるだけ |
| コードを手動で書く | AI がプロジェクト全体を考慮してコード生成 |
| エラーをググって解決 | エラーが出たら即座に解決案を提示 |
| テストを別途作成 | テスト・設定・ドキュメントも一緒に生成 |
環境構築が完了したら、以下の順序で学習を進めることをお勧めします:
Hardhat + TypeScript? + Windsurfの組み合わせにより、強力な開発環境が構築できました。
主なメリット:
Solidity
Solidity by Nomic Foundation は、Hardhatプロジェクトでの条件即座実行(スマートコントラクト)開発を強力にサポートするVSCode拡張機能です。
Windsurfユーザーにとって、この拡張機能は AI開発サポート と 専門的なSolidity機能 を組み合わせた最強の開発環境を提供します。
VSCode マーケットプレイスから Solidity by Nomic Foundation をインストールします。
# Windsurfでプロジェクトフォルダを開く windsurf my-hardhat-project
拡張機能が hardhat.config.ts ファイルを自動検出し、Hardhatモードで動作開始します。
Solidityファイル(.sol)のフォーマッターをこの拡張機能に設定:
1. .solファイルを開く 2. 右クリック → Format Document With... 3. Configure Default Formatter... 4. Solidity を選択
contract MyToken {
// 「fun」と入力すると「function」が補完される
// 関数名や変数名も自動提案
エラーや警告が 赤い波線 や 黄色い波線 で即座に表示されます。
変数や関数の上にマウスを置くと、詳細情報がポップアップ表示されます。
エラーが出た行に 💡電球アイコン が表示され、クリックすると修正案が提示されます。
関数の可視性エラー
// エラー: 可視性が指定されていない
function transfer(address to, uint256 amount) {
// 💡クリック → 自動修正
function transfer(address to, uint256 amount) public {
view/pure修飾子の追加
// 警告: 状態を変更しない関数
function getBalance() returns (uint256) {
// 💡クリック → 自動修正
function getBalance() public view returns (uint256) {
インターフェース実装
// エラー: インターフェースの関数が未実装
contract MyToken is IERC20 {
// 💡クリック → 必要な関数を自動生成
拡張機能により、以下のコマンドがコマンドパレット(Ctrl+Shift+P)から実行できます:
# 以下と同じ動作 npx hardhat compile
プロジェクト全体をコンパイルし、エラーがあれば表示します。
# 以下と同じ動作 npx hardhat clean
キャッシュとビルド結果をクリアします。
開いているSolidityファイルとその依存関係を1つのファイルにまとめます。
VSCodeのタスクランナーと統合されており、以下が利用できます:
hardhat compile
hardhat test
1. Windsurfでプロジェクトを開く
2. contracts/フォルダでSolidityファイルを編集
3. リアルタイムでエラーチェック(自動)
4. 💡クイックフィックスでエラー修正
5. Ctrl+Shift+P → Hardhat: Compile project
6. test/フォルダでテストコード編集
7. Ctrl+Shift+P → Tasks: Run Test Task
1. エラー行の💡アイコンをクリック
2. 修正案を確認・適用
3. F12キーで関数定義にジャンプ
4. Shift+F12で参照箇所を一覧表示
プロジェクトルートに.prettierrc.jsonを作成:
{
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 100,
"tabWidth": 2,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": false
}
}
]
}
VSCodeの設定(settings.json)に追加:
{
"solidity.defaultCompiler": "localHardhat",
"solidity.packageDefaultDependenciesContractsDirectory": "contracts",
"editor.formatOnSave": true,
"[solidity]": {
"editor.defaultFormatter": "NomicFoundation.hardhat-solidity"
}
}
Windsurf AI
Solidity拡張機能
この組み合わせにより、AI生成コード → 即座にエラーチェック → 自動修正 という高速開発サイクルが実現します。
1. WindsurfのAIに「ERC20トークンを作って」
2. 生成されたコードに拡張機能がエラー表示
3. 💡クイックフィックスで瞬時に修正
4. Hardhatコマンドで即座にテスト
拡張機能が動作しない
コンパイルエラーが消えない
フォーマットが効かない
Hardhat開発では、この拡張機能は 必須ツール です。
メリット
推奨ワークフロー 1. Windsurfでプロジェクトを開く
2. Solidity拡張機能で品質チェック
3. AIサポートで高速開発
4. 統合コマンドで簡単テスト・デプロイ
これで、プロフェッショナルレベルのHardhat開発環境の完成です!
共同管理自動台帳の世界へようこそ!次回はサンプルコードの解読から始めましょう。
この記事が役に立ったら、ぜひシェアしてください!