* Hardhat TypeScript環境構築手順 - 共同管理自動台帳開発を始めよう [#te122832]

** はじめに [#k6f75ff9]

この記事では、'''Hardhat'''を使って'''共同管理自動台帳'''(イーサリアム)上で動く'''条件即座実行'''(スマートコントラクト)の開発環境を構築する手順を解説します。
(※イーサリアムだと意味不明なので共同管理自動台帳と表現していきたいと思います。)

従来のWebサーバーと違い、共同管理自動台帳では''一度デプロイすれば永久に動き続ける''という革命的な特徴があります。月額サーバー代も不要で、長期的には圧倒的にコスト効率が良い開発方法です。

** 今回のゴール [#k815e2b6]

- Hardhatプロジェクトの作成
- TypeScript環境の構築
- WindsurfでのAI開発環境準備
- 基本的なプロジェクト構造の理解

** 前提条件 [#f49413fc]

*** 必要な環境 [#n863321a]
- Node.js がインストール済み
- Windsurf(VSCodeベース)エディタ
- 基本的なターミナル操作の知識

*** Node.jsの確認 [#ubcd28df]

まず、Node.jsがインストールされているか確認します。

#code(bash){{{
node --version
}}}

バージョンが表示されればOKです。インストールされていない場合は、[Node.js公式サイト](https://nodejs.org/)からダウンロードしてインストールしてください。

** Step 1: プロジェクトフォルダの作成 [#dfc44c76]

新しいプロジェクト用のフォルダを作成し、移動します。

 mkdir my-first-hardhat
 cd my-first-hardhat

> '''ポイント''': フォルダ名は英数字とハイフンで構成するのがベストプラクティスです。

** Step 2: Hardhatのインストールと初期化 [#od869a8b]

*** Hardhatをインストール [#v96efaa4]

 npm install --save-dev hardhat

*** プロジェクトの初期化 [#u1fa4710]
 npx hardhat init

*** 設定の選択 [#m7c6fbda]

初期化時に以下の選択肢が表示されます:

- Create a JavaScript project
- '''Create a TypeScript project''' ← '''これを選択'''
- Create an empty hardhat.config.js

'''TypeScriptを選択する理由''':
- 型安全性によりエラーを早期発見
- IDEの補完機能が強力
- WindsurfのAIがより正確に理解
- Solidityとの親和性が高い

その後の質問は全て '''Yes''' で進めます。

** Step 3: 生成されたプロジェクト構造 [#y8a64c8a]

初期化が完了すると、以下のファイル構造が生成されます:

 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           # プロジェクト説明

*** 各フォルダの役割 [#nc8069be]

|フォルダ名|役割|ファイル形式|
|contracts|条件即座実行のコードを格納|.sol(Solidity)|
|scripts|デプロイやその他の実行スクリプト|.ts(TypeScript)|
|test|テストコードを格納|.ts(TypeScript)|

** Step 4: Windsurfで開く [#yf7d9c91]

プロジェクトフォルダをWindsurfで開きます。

 # Windsurfがインストールされている場合
 windsurf .
 
 # または手動でWindsurfを開いてフォルダを選択

** WindsurfとHardhatの相性の良さ [#v21d9801]

*** なぜWindsurfが最適なのか [#x630ff57]

- '''VSCodeベース''': HardhatはVSCodeとの相性が抜群
- '''AIサポート''': プロジェクト全体を理解してコード生成
- '''コンテキスト認識''': ファイル間の関係を把握した提案
- '''リアルタイム支援''': 開発中の即座なサポート

*** 開発体験の向上 [#r006061b]

従来の開発フローと比較すると:

|従来の開発|Windsurf + Hardhat|
|ドキュメントを読んで理解|「○○したい」と伝えるだけ|
|コードを手動で書く|AI がプロジェクト全体を考慮してコード生成|
|エラーをググって解決|エラーが出たら即座に解決案を提示|
|テストを別途作成|テスト・設定・ドキュメントも一緒に生成|

** 次のステップ [#t14e35b6]

環境構築が完了したら、以下の順序で学習を進めることをお勧めします:

- サンプルコード(Lock.sol)の解読
- 基本的なコンパイルとテストの実行
- 簡単な条件即座実行の作成
- ローカル環境でのテスト
- テストネットへのデプロイ

** まとめ [#c0322804]

Hardhat + TypeScript + Windsurfの組み合わせにより、強力な開発環境が構築できました。

'''主なメリット''':
- '''永久稼働''': 一度デプロイすれば維持費不要
- '''型安全性''': TypeScriptによる開発品質向上
- '''AI支援''': Windsurfによる効率的な開発
- '''Git管理''': 通常のプロジェクトと同様にバージョン管理可能


** HardhatのWindsurfのプラグイン [#i831bf74]
Solidity


* Hardhat開発者のための Solidity拡張機能ガイド [#ad492156]

** はじめに [#db613ded]

'''Solidity by Nomic Foundation''' は、Hardhatプロジェクトでの条件即座実行(スマートコントラクト)開発を強力にサポートするVSCode拡張機能です。

Windsurfユーザーにとって、この拡張機能は '''AI開発サポート''' と '''専門的なSolidity機能''' を組み合わせた最強の開発環境を提供します。

** この拡張機能でできること [#e5c40c68]

*** 基本的な開発支援 [#i34fd746]
- '''コード補完''': 関数名、変数名を自動補完
- '''エラー検出''': タイプミスやコンパイルエラーをリアルタイム表示
- '''コードフォーマット''': 見やすいコードに自動整形
- '''ナビゲーション''': 関数の定義場所にジャンプ

*** Hardhat特有の機能 [#pb40b873]
- '''設定ファイル連携''': hardhat.config.ts の設定を自動認識
- '''コンパイル統合''': VSCode内で直接コンパイル実行
- '''テスト実行''': ワンクリックでテスト実行
- '''デプロイ支援''': スクリプト実行をGUIから操作

** インストールと設定 [#p818db79]

*** Step 1: 拡張機能のインストール [#r636a76c]

VSCode マーケットプレイスから '''Solidity by Nomic Foundation''' をインストールします。

*** Step 2: Hardhatプロジェクトを開く [#f61ed1c1]

 # Windsurfでプロジェクトフォルダを開く
 windsurf my-hardhat-project

拡張機能が '''hardhat.config.ts''' ファイルを自動検出し、Hardhatモードで動作開始します。

*** Step 3: デフォルトフォーマッター設定 [#cf0cb86b]

Solidityファイル(.sol)のフォーマッターをこの拡張機能に設定:

1. .solファイルを開く
2. 右クリック → '''Format Document With...'''
3. '''Configure Default Formatter...'''
4. '''Solidity''' を選択

** 実際の開発での使い方 [#q7ab510b]

*** コード編集時 [#rbd93919]

**** 自動補完機能 [#r07a81b6]
 contract MyToken {
     // 「fun」と入力すると「function」が補完される
     // 関数名や変数名も自動提案

**** リアルタイムエラー検出 [#y01be246]
エラーや警告が '''赤い波線''' や '''黄色い波線''' で即座に表示されます。

**** ホバーヘルプ [#gc39cdd3]
変数や関数の上にマウスを置くと、詳細情報がポップアップ表示されます。

*** クイックフィックス(自動修正) [#l61c4080]

エラーが出た行に '''💡電球アイコン''' が表示され、クリックすると修正案が提示されます。

**** よくある修正例 [#e8a4ae1e]

'''関数の可視性エラー'''
 // エラー: 可視性が指定されていない
 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 {
 
 // 💡クリック → 必要な関数を自動生成

** Hardhat専用コマンド [#u58be4c1]

拡張機能により、以下のコマンドがコマンドパレット(Ctrl+Shift+P)から実行できます:

*** Hardhat: Compile project [#y607329a]
 # 以下と同じ動作
 npx hardhat compile

プロジェクト全体をコンパイルし、エラーがあれば表示します。

*** Hardhat: Clear cache and artifacts [#d56674e4]
 # 以下と同じ動作  
 npx hardhat clean

キャッシュとビルド結果をクリアします。

*** Hardhat: Flatten this file and its dependencies [#e45a0d9c]
開いているSolidityファイルとその依存関係を1つのファイルにまとめます。

** タスク統合 [#xbb743c2]

VSCodeのタスクランナーと統合されており、以下が利用できます:

*** ビルドタスク(Ctrl+Shift+P → Tasks: Run Build Task) [#lc04ec96]
 hardhat compile

*** テストタスク(Ctrl+Shift+P → Tasks: Run Test Task) [#o4c88d27]
 hardhat test

** 開発ワークフロー例 [#mf5ff6ed]

*** 日常的な開発手順 [#l526929b]

1. '''Windsurfでプロジェクトを開く'''

2. '''contracts/'''フォルダでSolidityファイルを編集

3. '''リアルタイムでエラーチェック'''(自動)

4. '''💡クイックフィックス'''でエラー修正

5. '''Ctrl+Shift+P''' → '''Hardhat: Compile project'''

6. '''test/'''フォルダでテストコード編集

7. '''Ctrl+Shift+P''' → '''Tasks: Run Test Task'''

*** デバッグ時の手順 [#w5860297]

1. '''エラー行の💡アイコンをクリック'''

2. 修正案を確認・適用

3. '''F12キー'''で関数定義にジャンプ

4. '''Shift+F12'''で参照箇所を一覧表示

** 設定とカスタマイズ [#a6068af5]

*** フォーマット設定 [#d0ec523c]

プロジェクトルートに'''.prettierrc.json'''を作成:

 {
   "overrides": [
     {
       "files": "*.sol",
       "options": {
         "printWidth": 100,
         "tabWidth": 2,
         "useTabs": false,
         "singleQuote": false,
         "bracketSpacing": false
       }
     }
   ]
 }

*** 推奨設定 [#u3a765c9]

VSCodeの設定(settings.json)に追加:

 {
   "solidity.defaultCompiler": "localHardhat",
   "solidity.packageDefaultDependenciesContractsDirectory": "contracts",
   "editor.formatOnSave": true,
   "[solidity]": {
     "editor.defaultFormatter": "NomicFoundation.hardhat-solidity"
   }
 }

** WindsurfとAI開発での活用 [#n98ecc24]

*** AI + 拡張機能の相乗効果 [#v30a055b]

'''Windsurf AI'''
- コード生成・提案
- プロジェクト全体の理解

'''Solidity拡張機能'''  
- リアルタイムエラーチェック
- 自動修正提案
- Hardhat統合

この組み合わせにより、'''AI生成コード''' → '''即座にエラーチェック''' → '''自動修正''' という高速開発サイクルが実現します。

*** 実践的な使い方 [#a7076dba]

1. WindsurfのAIに「ERC20トークンを作って」

2. 生成されたコードに拡張機能がエラー表示

3. 💡クイックフィックスで瞬時に修正

4. Hardhatコマンドで即座にテスト

** トラブルシューティング [#p77d4ad9]

*** よくある問題と解決法 [#mcacf179]

'''拡張機能が動作しない'''
- hardhat.config.ts が存在するか確認
- プロジェクトをワークスペースとして開いているか確認

'''コンパイルエラーが消えない'''
- '''Hardhat: Clear cache and artifacts''' を実行
- VSCodeを再起動

'''フォーマットが効かない'''
- デフォルトフォーマッターがSolidityに設定されているか確認

** まとめ [#tb34d31e]

Hardhat開発では、この拡張機能は '''必須ツール''' です。

'''メリット'''
- 開発効率が5倍向上
- エラーの早期発見
- 品質の高いコード作成
- Windsurfとの完璧な連携

'''推奨ワークフロー'''
1. Windsurfでプロジェクトを開く

2. Solidity拡張機能で品質チェック

3. AIサポートで高速開発

4. 統合コマンドで簡単テスト・デプロイ

これで、プロフェッショナルレベルのHardhat開発環境の完成です!

** 参考リンク [#le84e83a]

- [[https://hardhat.org/|Hardhat公式サイト]]
- [[https://marketplace.visualstudio.com/items?itemName=NomicFoundation.hardhat-solidity|拡張機能ページ]]
- [[https://hardhat.org/discord|Hardhatサポート Discord]]


共同管理自動台帳の世界へようこそ!次回はサンプルコードの解読から始めましょう。

** 参考リンク [#a74c7d99]

- [Hardhat公式ドキュメント](https://hardhat.org/)
- [Solidity公式ドキュメント](https://soliditylang.org/)
- [TypeScript公式サイト](https://www.typescriptlang.org/)

''この記事が役に立ったら、ぜひシェアしてください!''
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS