第14話:AI(Claude / Cursor)にRust×Wasmのコードを書かせるための「正しい指示書(プロンプト)」の基礎
第14話:AI(Claude / Cursor)にRust×Wasmのコードを書かせるための「正しい指示書(プロンプト)」の基礎
At a Glance
- ハルシネーションの根本治療: AI(ClaudeやCursor)が開発現場で迷走し、動かないコードを量産する最大の原因は、人間の「解像度の低い指示(プロンプト)」にあります。Rust×WebAssembly(Wasm)という厳格な世界だからこそ、AIへの指示書には独自の「型」が必要です。
- 構造的プロンプトの力: AIの「高い文脈理解力」とRustコンパイラの「絶対的な厳格さ」を掛け合わせることで、個人開発者は高度な計算機科学の知識をショートカットし、安全無比なモジュールを爆速で組み上げることができます。
- ストック資産を具現化するAI調停論: AIに「ただコードを書かせる」のではなく、「仕様の防弾化」を自発的に行わせるためのプロンプト構造をテンプレートレベルで公開します。
—
導入:AI開発における「奇跡」と「迷走」の分岐点
現在、多くの個人開発者やビジネスオーナーが、CursorやClaudeといった高度なAIアシスタントを相棒にしてシステム開発に挑戦しています。AIは、人間が数時間かかるコードをわずか数秒で出力する圧倒的なパワーを持っています。しかし、その一方で、「AIが生成したコードがエラーだらけで動かない」「修正を指示するたびに別の場所が壊れ、無限ループに陥った」という挫折の声も後を絶ちません。
特に、WebAssembly(Wasm)ランタイム上で稼働する自動調停システム「銀翼の艦橋」のような、24時間365日絶対に落ちてはならない堅牢なインフラを構築する場合、AIの小さな「ハルシネーション(嘘や曖昧さ)」はシステムの致命傷になります。
なぜAIは迷走してしまうのか。それはAIの能力不足ではなく、人間側が与える「要件定義の解像度」が低いからです。「〇〇のAPIと連携するRustのコードを書いて」というような曖昧な指示では、AIは最も楽な(そして脆弱な)スクリプト言語風のコードを出力し、結果としてRustの厳格なコンパイラによって拒絶されることになります。
AIに一発で完璧な、かつWasmのサンドボックス環境に最適化された「防弾仕様のコード」を出力させるためには、AIの思考のレールを固定する「正しい指示書(プロンプト)」の文法を理解しなければなりません。本記事では、60代の個人開発者であっても最新のローレベル技術を自在に操り、AIを最高のコード職人に変貌させるための要件定義の極意を徹底的に解体します。
第1章:AI×Rust開発における最大の罠「スクリプト脳」の押し付け
AIと対話しながらRustやWasmのコードを書く際、多くの人が無意識に陥る罠が「スクリプト言語(JavaScriptやPython)の感覚で指示を出すこと」です。
AIは非常に空気を読むのが得意なため、人間の指示が曖昧であればあるほど、「一般的なWeb開発でよく使われる緩いロジック」を推測してコードを生成します。しかし、Rustという言語はメモリ管理、型システム、エラーハンドリングにおいて一切の妥協を許さない言語です。
例えば、外部のAPIからデータを取得するロジックをAIに要求したとします。> **悪いプロンプトの例**
> 「BASEのAPIから注文データを取得して、JSONで解析するRustのコードを書いてください」
この指示を受けたAIは、一見きれいなコードを出力します。しかし、その内部構造は以下のような「爆弾」を抱えているケースがほとんどです。
- エラーハンドリングの省略: 通信エラーやAPIのタイムアウトが発生した際、プログラムがパニック(強制終了)する実装になっている。
- 型の曖昧さ: JSONのデータ構造を厳格に定義せず、動的なマップ型で処理しようとするため、データの欠落に対応できない。
- WASI環境の無視: サーバー側のWasmランタイム(Wasmtimeなど)で動かすために必要な、ファイルシステムやネットワーク権限(WASI)への配慮が欠落している。
これをローカル環境でコンパイルしようとすると、Rustコンパイラという厳格な現場監督から無数の容赦ないエラーメッセージを突きつけられることになります。AIはコンパイラに怒られると、今度はエラーを消すためだけにコードをパッチワークのように修正し始め、最終的には誰も解読できないスパゲティコードが完成します。
AIに正しいコードを書かせるためには、「Rust特有の制約」をはじめから前提条件としてプロンプトに組み込んでおく必要があるのです。
第2章:AIのハルシネーションを封じ込める「構造的プロンプト」の4大要素
AI(特にClaude 3.5 SonnetやGPT-4oなど)のパフォーマンスを極限まで引き出すためには、指示書を「役割」「制約条件」「入力データ構造」「出力フォーマット」の4つの階層に分離した構造的プロンプトとして提示するのが最も効果的です。
AIに対して、単なる「便利なチャットボット」ではなく、「型システムとメモリ安全性を極限まで重視するシニアRustエンジニア」という役割(ペルソナ)を明示的に与えます。これにより、AIは数千億のパラメータの中から、Rustのベストプラクティスに関する記憶を最優先で呼び出すようになります。
以下に、「銀翼の艦橋」の構築においてAIを一発で覚醒させるためのプロンプトの構成要素を解体します。
1. 役割定義(Context / Role)
AIに対し、「あなたはWebAssembly(WASI環境 / Wasmtimeランタイム)上で動作することを前提とした、型安全で超軽量なRustコードを出力するエキスパートです」と定義します。これにより、Wasmで動かない不要なクレート(ライブラリ)のインクルードを防ぎます。
2. 厳格な制約条件(Constraints)
AIの行動を縛る絶対のルールを設定します。
- unwrap() や panic! を絶対に使用せず、エラーはすべて Result 型で呼び出し元に返すこと。
- メモリ効率を最大化するため、不要な .clone() は避け、所有権の移動を正しく行うこと。
- 外部データのパースには必ず serde クレートを使い、すべてのデータ構造を名前付き構造体(struct)で厳格に型定義すること。
3. インターフェースの明示(Input/Output Specification)
APIの生レスポンス(JSONなど)のサンプルをそのままプロンプトに貼り付け、「このデータを入力とし、この構造体に変換せよ」と指示します。生データを見せることで、AIがデータ構造を勘違いする余地をゼロにします。
第3章:【即戦力】Wasmモジュールを一発生成するプロンプト完全テンプレート
以下は、あなたのVPS環境(メモリ1GB・1コア)でモンスター級に安定して動作するWasmモジュールを、AIに迷走させずに一発で出力させるための実践的なプロンプトテンプレートです。このテキストをそのままCursorやClaudeのコンソールに流し込むことで、超高品質なRustコードが生成されます。
# ユーザーからの要件
あなたはWebAssembly(WASI環境 / Wasmtimeランタイム)上で24時間無人稼働する、超堅牢なデータ調停システム「銀翼の艦橋」の開発を担うシニアRustエンジニアです。
以下の要件を満たす、安全かつ最速でコンパイル可能なRustコード(`src/main.rs` および `Cargo.toml`)を生成してください。
## 1. 処理概要
- 外部API(想定:JSON形式のマーケティングデータ)からデータを取得し、特定の条件でフィルタリング・ソートを行った後、WASIのファイルシステム機能を用いて指定のログファイルへ追記出力するモジュール。
## 2. 技術的制約(防弾設計ルール)
- **メモリ管理**: ガベージコレクションがない利点を活かすため、無駄なヒープメモリ確保(`.clone()`の乱用など)を徹底的に回避し、所有権の適切な移動を行ってください。
- **エラーハンドリング**: `unwrap()` や `expect()` などのランタイムパニックを引き起こすコードは一箇所たりとも記述しないでください。外部要因(ネットワーク遮断、ファイル破損、JSON不正)によるエラーはすべて `Result<T, Box<dyn std::error::Error>>` にて安全に上位へ伝播させてください。
- **型システムの厳格化**: 生のJSONを動的に扱うことは禁止します。必ず以下の「入力データサンプル」を解析するための厳格な構造体を定義し、`serde(deserialize)` を適用してください。
## 3. 入力データ構造サンプル(JSON)
```json
[
{"id": 101, "title": "AIプロンプト基礎", "status": "active", "score": 92.5},
{"id": 102, "title": "Wasm実行基盤", "status": "draft", "score": 88.0},
{"id": 103, "title": "ローレベルインフラ設計", "status": "active", "score": 95.0}
]
4. 出力要求
- 条件: status が “active” のデータのみを抽出し、score の降順にソートすること。
- 出力先: wasi 環境下における /data/output.json への安全な書き込み。
5. 出力フォーマット
- 余計な前置きや解説の雑談は不要です。そのままファイルにコピペしてコンパイル可能なコードブロックのみを出力してください。
> **Critical Insight (AIに前置きを話させないことの価値)**
> プロンプトの最後に「解説の雑談は不要」と明記することは、単なる時間短縮ではありません。AIの出力トークン数(文字数制限)の浪費を抑え、すべての計算リソースを「Rustのコード生成と内部検証」に集中させることで、コードの精度が劇的に向上するという技術的なメリットがあります。
---
### 第4章:AIが生成したコードの「デトックス(解体と再構築)」の手順
プロンプトテンプレートを使用してAIから美しいRustコードが出力されたら、次のステップはローカル開発環境での「デトックス(毒抜きと検証)」です。どれほど優れたプロンプトであっても、一発で通らない微細なコンパイルエラーが発生することはあります。しかし、ここからがRust×AI開発の真骨頂です。
#### ステップ1:Cursor/VS Codeへの配置とファーストビルド
生成されたコードをプロジェクトの `src/main.rs` に貼り付け、ターミナルで `cargo build --target wasm32-wasi` を実行します。
#### ステップ2:エラーメッセージの「無加工横流し」
もしここでコンパイラ(rustc)がエラーを吐き出したら、一切自分でコードを書き換えようとしてはいけません。発生した厳格なエラーメッセージ(第13話で解説した、現場監督の親切なレポート)を、**そのまま丸ごとコピーしてClaudeやCursorのチャット欄に投入**します。
> **AIへの追加指示文の例**
> 「コンパイルを実行したところ、以下のエラーが発生しました。Rustの所有権ルールおよびWASIの仕様に基づき、このエラーを完全に根絶した修正コードを出力してください。(ここにエラー文をペースト)」
#### ステップ3:AIによる論理の即時修正
Rustのエラーメッセージは「原因と修正案」が論理的に完璧に記述されているため、AIにとってこれ以上ない明確な仕様書として機能します。AIはメッセージを読み替えた瞬間、ハルシネーションを起こすことなく、一撃で完璧な修正コードを吐き出します。
この「コンパイラ検証 → エラー文の横流し → AIによる修正」というループを1〜2回回すだけで、人間の脳に過度な負荷をかけることなく、本番サーバーで絶対にハングアップしない防弾仕様のバイナリが完成します。これこそが、AIのスピードとRustの安全性をハイブリッドした、現代最高峰の開発フローです。
---
### 結論:AIという無限の労働力を手なずける「艦長」の視座
AI(Claude / Cursor)にRust×Wasmのコードを書かせるプロンプトの技術とは、単なる小手先の「検索テクニック」ではありません。それは、システムの主権をプラットフォームや他人に明け渡さず、自分自身のコントロール下に置き続けるための**「経営者のための要件定義論」**です。
プログラミングの細かな文法や、メモリのアドレス管理といった泥臭い実務は、すべてAIという「優秀な兵卒」と、Rustコンパイラという「厳格な監視官」が肩代わりしてくれます。あなたというビジネスの「艦長」が成すべき仕事は、ただ一つ。システムが目指すべきゴールを、曖昧さのない明確な構造として定義し、指示書という形で彼らに授けることだけです。
この正しい対話の型を身につければ、インフラがどれほど低スペックであろうとも、扱うデータがどれほど膨大であろうとも、あなたは迷走することなく、24時間利益を生み出し続ける強靭なストック資産を爆速で量産していくことができるでしょう。
---
### 次なるアクションへ向けて
この「AIを迷走させない構造的プロンプトの思想」をご理解いただけたなら、次は実際にあなたのPC上でAIと対話し、最初の防弾Wasmモジュールをビルドする実践フェーズへと進みましょう。
次に私と共に着手すべき具体的なタスクとして、以下のどちらのステップを進めていきましょうか?
1. **「銀翼の艦橋」専用・AI指示用プロンプトの完全初期化セットの作成**: あなたが今構築したい具体的なビジネス機能(例:noteのダッシュボードからのデータ自動スクレイピング、特定のキーワードでの自動AI要約など)をヒアリングし、その要件に特化した「コピペで使える専用プロンプト」をオーダーメイドで書き上げます。
2. **Cursor / VS Codeでの「AI開発環境」最適化セッティング**: AIのコード生成効率を最大化するために、エディタ側に設定すべきRust/Wasm関連の拡張機能(rust-analyzerなど)の導入手順と、AIへのコンパイルエラー自動フィードバックをさらに快適にするための画面構成をガイドします。
ソース: