Skip to main content

原文準拠 Phase 3:DApp開発

1.1 開発環境のセットアップ

Midnight Academy Phase 3 / Unit 1 / 1.1 の原文準拠版。Node.js・Compact コンパイラ・Docker・proof server・VS Code 拡張・Lace ウォレット・テストトークンを順にそろえ、最後に全部を検証するまでを正確に。


📘 Academy原文準拠 | Phase 3 · Unit 1 · Lesson 1.1 Development Environment Setup 内容に忠実な日本語版です。原文(英語)・図・動画は公式 Academy(外部リンク・別タブで開きます)を正本に。

新しい開発環境のセットアップは、たいてい「10分」か「3時間」のどちらかで、その中間はあまりありません。差がつく原因は、はっきりした手順があるか、それともバラバラなドキュメントと Stack Overflow をさまよって自分で探すか、の違いです。

このレッスンは「10分版」を目指します。最後まで進めば、必要なものがすべてインストール・検証され、次のレッスンで最初の Compact 契約を書く準備がととのいます。

これからそろえるのは、次のものです。

道具 役割
Node.js 開発に必要なランタイム(v22 以上)
Compact コンパイラ .compact ファイルをゼロ知識回路にコンパイルする
Docker proof server を隔離されたコンテナで動かす土台
proof server トランザクションのゼロ知識証明を生成するサーバー
Compact VS Code 拡張 シンタックスハイライト(書きやすさ)
Lace ウォレット テストトークンの管理・トランザクション署名
テストトークン テストネットで契約をデプロイ・操作するための無料トークン

ひとつずつ進めていきましょう。

動画で学ぶ(公式)

🎬 開発環境セットアップの概要 YouTubeで開く ↗
🎬 セットアップのトラブルシューティングと次のステップ YouTubeで開く ↗

Node.js のインストール

そろえるツール一覧の表。Node.js(TypeScript / JavaScript コードを実行)、Compact コンパイラ(.compact コントラクトをゼロ知識回路に変換)、Docker(証明サーバーをコンテナ内で実行)、証明サーバー(トランザクションに必要なゼロ知識証明を生成)、VS Code 拡張機能(Compact コードにシンタックスハイライトを付ける)、Lace ウォレット(テストトークンの管理とトランザクション署名)の役割を示す。

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 の起動

Lace ウォレットの「Configure Midnight」設定画面。Network で Preprod が選択され、Proof server は Remote(https://lace-proof-pub.preprod.midnight.network)か Local(http://localhost:6300)を選べる。Node address に https://rpc.preprod.midnight.network、Indexer address に https://indexer.preprod.midnight.network/api/v3/graphql が表示されている。

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 ウォレットのインストール

Midnight / Preprod に接続済みで Wallet synced 状態の Lace ウォレットの Tokens 画面。トークン数は 0 で、「Welcome」と Web3 を始めるための案内が表示され、Shielded アドレス(mn_shield-addr_preprod… で始まる)と QR コード、Copy address ボタンが並んでいる。

Lace は Midnight 向けのブラウザウォレットです。テストトークンの管理や、DApp とやり取りするときのトランザクション署名に使います。

手順は次のとおりです。

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

テストトークンの取得

Preprod テストネットの各サービスと URL の対応表。RPC Node は https://rpc.preprod.midnight.network、Indexer (HTTP) は https://indexer.preprod.midnight.network/api/v3/graphql、Indexer (WebSocket) は wss://indexer.preprod.midnight.network/api/v3/graphql/ws、Faucet は https://faucet.preprod.midnight.network/、Proof Server は http://localhost:6300(local)。

契約をデプロイしたりテストネットとやり取りするには、tDUST(test DUST)が必要です。これは現実の価値を持たない、無料のテストトークンです。

手順は次のとおりです。

Lace の残高が更新されれば、資金が入って準備完了です。

すべてを検証する

よくある問題と対処方法のトラブルシューティング表。compact が見つからないときはシェル設定を読み直して PATH を通す、Docker が起動しないときは Docker Desktop が動いているか確認、証明サーバーのポート競合は 6300 番ポートの使用状況を確認、Lace ウォレットが出ないときはページ再読み込みと Chrome の使用、Faucet からトークンが来ないときは数分待って再試行、と示すトラブルシューティング表

ここまでのツールをひととおり走らせて、抜けがないか確かめましょう。

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 --versioncompactc 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点で全体を検証する。

やさしい版・公式へ

つぎに読むページ

➡️ 原文準拠コースの入口へ戻る。このコースについて(次のレッスンは順次追加します)