📘 Academy原文準拠 | Phase 3 · Unit 1 · Lesson 1.1 Development Environment Setup 内容に忠実な日本語版です。原文(英語)・図・動画は公式 Academy(外部リンク・別タブで開きます)を正本に。
新しい開発環境のセットアップは、たいてい「10分」か「3時間」のどちらかで、その中間はあまりありません。差がつく原因は、はっきりした手順があるか、それともバラバラなドキュメントと Stack Overflow をさまよって自分で探すか、の違いです。
このレッスンは「10分版」を目指します。最後まで進めば、必要なものがすべてインストール・検証され、次のレッスンで最初の Compact 契約を書く準備がととのいます。
これからそろえるのは、次のものです。
ひとつずつ進めていきましょう。
動画で学ぶ(公式)
Node.js のインストール

Midnight の開発には Node.js v22 以上が必要です。まず今のバージョンを確認します。
v22.x.x 以上が表示されたら、この節は飛ばして大丈夫です。そうでなければ、いちばんきれいに入れる方法は nvm(外部リンク・別タブで開きます)(Node Version Manager)です。
v22.x.x のような表示になればOKです。
💡 Windows の方へ:Midnight の開発には WSL2(Windows Subsystem for Linux)が必要です。PowerShell や Command Prompt はサポートされていません。WSL2 をまだ用意していなければ、PowerShell を管理者として開いて
wsl --install -d Ubuntuを実行し、マシンを再起動してください。これ以降のコマンドはすべて、PowerShell ではなく Ubuntu のターミナル内で実行します。
Compact コンパイラのインストール
Compact は Midnight のスマートコントラクト言語です。コンパイラは、あなたの .compact ファイルを受け取り、ゼロ知識回路へと変換します。これはプライバシーを可能にする暗号の仕組みそのものです。
インストーラを実行します。
Windows / WSL の場合のみ、先に curl を入れる必要があるかもしれません。
そのうえで Compact をインストールします。
インストーラはバイナリを ~/.compact/bin に置きます。認識させるために、シェルを読み込み直す必要があることが多いです。
次に、コンパイラを最新版へ更新します。
そして動作を確認します。
compactc 0.28.0(またはそれ以降)のような表示になるはずです。もし compact: command not found と出たら、PATH が正しく設定されていません。export PATH="$HOME/.compact/bin:$PATH" を実行してから、もう一度試してください。
Docker のインストール
proof server は Docker コンテナの中で動きます。これにより、システムから隔離され、Mac でも Windows でも Linux でも、誰もが同じセットアップになります。
お使いの OS 向けの Docker Desktop(外部リンク・別タブで開きます) をダウンロードしてインストールします。
💡 Windows / WSL の方へ:Docker Desktop は(WSL の中ではなく)Windows 側にインストールします。そのあと Docker Desktop の Settings > Resources > WSL Integration を開き、お使いの Ubuntu ディストロのスイッチを ON にします。これで WSL のターミナルから docker コマンドが実行できます。WSL の中で
apt-get install docker.ioを使って Docker を入れるのはやめてください。WSL はデフォルトで systemd を持たないため、たいてい失敗します。
インストール後、Docker が実際に起動していることを確認します(インストールしただけでは不十分です。これは何度もやらかしがちなミスです)。
バージョン番号が表示されるはずです。もし「デーモンが動いていない」というエラーが出たら、Docker Desktop を開いて、完全に起動するまで待ってください。
proof server の起動

proof server は、あなたのトランザクションのゼロ知識証明を生成するものです。これが動いていないと、契約のコンパイルはできても、デプロイや操作はできません。
起動します。
初回はイメージのダウンロードに少しかかります。終わると、最後のあたりに次のようなログが出ます。
このコマンドは実行中ターミナルを占有します。バックグラウンドで動かしたい場合は、こうします。
-d フラグでデタッチ(バックグラウンド)実行になります。あとでバックグラウンドのコンテナを止めるには、こうします。
このレッスンの間は、proof server を起動したままにしておいてください。すべてが動くかを検証するのに必要です。
VS Code 拡張のインストール
Compact の VS Code 拡張は、シンタックスハイライトを提供し、契約を書く負担を大きく減らしてくれます。これが無いと、どの .compact ファイルもただのプレーンテキストに見えます。
手順は次のとおりです。
- リリースページから VSIX パッケージをダウンロードします(現行バージョン: 0.2.13)。
- VS Code で Extensions ビューを開きます(Mac は Cmd+Shift+X、Windows/Linux は Ctrl+Shift+X)。
- Extensions パネル上部の
...メニューをクリックします。 - 「Install from VSIX…」を選びます。
- ダウンロードした
.vsixファイルを選びます。
テストするには、確認用のファイルをさっと作ります。
test.compact を VS Code で開きます。右下のステータスバーに言語として「Compact」と表示されるはずです。もし「Plain Text」と出ていたら拡張が正しく入っていません。VSIX から入れ直してみてください。
Lace ウォレットのインストール

Lace は Midnight 向けのブラウザウォレットです。テストトークンの管理や、DApp とやり取りするときのトランザクション署名に使います。
手順は次のとおりです。
- Google Chrome を開きます(Lace は今のところ Chrome でしか動きません)。
- Chrome Web Store から Lace(外部リンク・別タブで開きます) をインストールします。
- 「Add to Chrome」をクリックして確定します。
- 拡張をツールバーにピン留めしておくと使いやすいです。
- Lace のアイコンをクリックし、「Create a new wallet」を選びます。
- 強いパスワードを設定します。
- シードフレーズを紙に書き写し、オフラインで保管します。テキストファイルでも、スクリーンショットでもなく、紙に、安全な場所に。これがあなたの唯一の復元手段です。
- シードフレーズを確認して、セットアップを完了します。
テストトークンの取得

契約をデプロイしたりテストネットとやり取りするには、tDUST(test DUST)が必要です。これは現実の価値を持たない、無料のテストトークンです。
手順は次のとおりです。
- Lace ウォレットで「Receive」をクリックし、ウォレットアドレスをコピーします。
- Preprod Faucet(外部リンク・別タブで開きます) を開きます。
- アドレスを貼り付け、「Request tNIGHT」をクリックします。
- 数分待ちます。即時ではありません。
Lace の残高が更新されれば、資金が入って準備完了です。
すべてを検証する

ここまでのツールをひととおり走らせて、抜けがないか確かめましょう。
proof server については、docker ps の一覧に midnightntwrk/proof-server:7.0.0 を動かしているコンテナが出ているはずです。無ければ、proof server の節に戻ってもう一度起動してください。
VS Code 拡張は、任意の .compact ファイルを開いて、プレーンテキストではなくシンタックスハイライトが効いているかで確認します。
Lace は、Chrome のウォレットアイコンをクリックして、(faucet のステップを終えていれば)tNight 残高が見えるかで確認します。
ネットワークエンドポイントの参照
DApp を作り始めると、次のような Preprod テストネットのエンドポイントに接続することになります。詳しいエンドポイント一覧は公式 Academy(外部リンク・別タブで開きます)の表と、docs.midnight.network(外部リンク・別タブで開きます)を正本にしてください(接続先は更新されることがあります)。
トラブルシューティング(Windows / WSL)
Windows で WSL2 を使っている場合、ぶつかりやすい問題は次のとおりです。
Docker が “daemon not running” / “cannot connect to the Docker daemon” と言う WSL の中で apt-get install docker.io を使って Docker を入れた可能性が高いです。これはたいてい失敗します。sudo apt-get remove docker docker-engine docker.io でアンインストールし、代わりに Windows 側に Docker Desktop を入れ、Docker Desktop の設定で WSL Integration を有効にしてください。
Docker Desktop が “You don’t have any WSL 2 distros installed” と言う PowerShell で wsl --list --verbose を実行します。バージョンが 1 なら wsl --set-version Ubuntu 2 でアップグレードします。ディストロが何も出なければ wsl --install -d Ubuntu で入れます。
コンパイル時に error opening source file... no such file or directory ファイルを Windows 側(VS Code が C:\ に接続した状態)で作ったのに、コマンドは Linux 側のルートフォルダ(~)から実行している可能性が高いです。Linux からは /mnt/c/... をたどらないと Windows のデスクトップ上のファイルは見えません。直し方:VS Code に「WSL」拡張を入れ、Ubuntu のターミナルで code . と打って WSL の中からプロジェクトを開きます。ファイルはすべてそのウィンドウの中で作ってください。
parse error: found "ledger" または unbound identifier Void 古いバージョンの Compact のコード例を、新しいコンパイラで使っています。新しい文法はトップレベル宣言を使います(contract Counter { ledger x: ... } ではなく export ledger x: ...)。また戻り型は Void ではなく [] を使います。
expected right-hand side of = to have type Uint<32> Compact は計算の安全性に厳しい言語です。x + 1 は理屈上 32 ビット整数をオーバーフローしうるため、コンパイラはそのリスクを明示的に扱うことを求めます。結果をキャストしてください:x = (x + 1) as Uint<32>;
compact: permission denied chmod +x ~/.compact/bin/compact を実行して、バイナリを実行可能にしてください。
開発者として押さえる点
- Node.js は v22 以上が必須。nvm で
nvm install 22 && nvm use 22が一番きれい。 - Compact コンパイラは
~/.compact/binに入る。入れたらcompact updateで最新化、compact --versionでcompactc 0.28.0(以降)を確認。PATH 不一致はexport PATH="$HOME/.compact/bin:$PATH"。 - proof server は Docker で起動しっぱなしにする(
midnightntwrk/proof-server:7.0.0、ポート6300:6300)。これが無いとデプロイ・操作ができない。バックグラウンドは-d。 - Windows は WSL2 必須。Docker Desktop は Windows 側に入れ、WSL Integration を ON にする。WSL 内で
apt-get install docker.ioは使わない。 - 鍵管理が最重要:Lace のシードフレーズは紙でオフライン保管。唯一の復元手段。tDUST は Preprod Faucet(外部リンク・別タブで開きます) から無料で取得。
- 仕上げに
node --version/compact --version/docker --version/docker psの4点で全体を検証する。
やさしい版・公式へ
- やさしい版:インストール手順
- 公式:Academy Courses(外部リンク・別タブで開きます)(Phase 3 / Unit 1 / 1.1)
- 公式ドキュメント:docs.midnight.network(外部リンク・別タブで開きます) / Compact リファレンス(外部リンク・別タブで開きます) / Preprod Faucet(外部リンク・別タブで開きます)
つぎに読むページ
➡️ 原文準拠コースの入口へ戻る。このコースについて(次のレッスンは順次追加します)