はじめに
「バックエンドがまだ完成していないけど、フロント側の実装を先に進めたい」
「外部APIを呼ぶ処理を書きたいけど、本番のAPIキーをまだ発行してもらってない」
「インフラ変更を本当に反映する前に、何が起きるか確認したい」
こういう場面で使われるのがドライランという考え方です。今回はこのドライランを、AI(Claude / ChatGPT等)を使って手軽に実現する方法をまとめます。
「ドライラン」とは何か、なぜAIで代用するのか
ドライラン(dry run)は、実際に処理を実行する前に「もし実行したらどうなるか」を安全に確認する行為の総称です。分野によって指す内容は少し違います。
| 分野 | ドライランの例 |
|---|---|
| インフラ(IaC) |
terraform plan(変更内容の事前確認、実際には適用しない) |
| API開発 | モックサーバーに対してリクエストを送り、レスポンス形式を確認する |
| バッチ処理 |
--dry-run オプションをつけて実行し、実際の書き込みは行わない |
共通しているのは「本物に触れずに、本物と同じような結果を先に知りたい」という動機です。
これを実現する手段として、従来は「モックサーバーを自前で構築する」「テスト用の環境を別途用意する」といったコストがかかっていました。AIを使うと、この「本物っぽい応答を用意する」部分をその場で生成できるため、準備コストが大きく下がります。
モックサーバーの概念
モックサーバーとは、本番のサーバーと同じインターフェース(URLやレスポンス形式)を持ちながら、中身は簡易的な実装や固定値を返すだけのサーバーです。
フロントエンド
↓ GET /api/users/1
モックサーバー(本物のDBには繋がっていない)
↓
{"id": 1, "name": "テストユーザー", "email": "test@example.com"}
本物のバックエンドが未完成でも、モックサーバーが「本物と同じ形」のレスポンスを返してくれれば、フロントエンド側の開発は先に進められます。
やり方3パターン
パターン1: AIにAPI仕様を渡してレスポンスをシミュレートさせる(簡易)
一番手軽な方法は、サーバーを一切立てず、AIとの対話そのものをモック代わりにすることです。
プロンプト例:
以下のAPI仕様に対して、GET /api/todos のレスポンス例をJSONで3パターン
(正常系、空配列の場合、エラーの場合)生成してください。
エンドポイント: GET /api/todos
レスポンス形式:
{
"id": number,
"title": string,
"done": boolean
}[]
AIは仕様に沿ったサンプルレスポンスをその場で生成してくれます。フロントエンドのUI実装時に「こういうデータが来たらどう表示されるか」を素早く確認したいときや、テストデータのバリエーションを増やしたいときに便利です。
ただしこの方法はあくまで「会話の中でデータをもらうだけ」なので、実際にHTTPリクエストを送って動作確認する用途には向きません。
パターン2: AIにモックサーバー用コードを書かせてローカルで動かす(実践的・おすすめ)
実際にリクエスト/レスポンスのやり取りを試したい場合は、AIにモックサーバーそのもののコードを書いてもらい、ローカルで起動するのが実践的です。
プロンプト例:
Node.js + Honoで、以下の仕様のモックサーバーを作ってください。
DBは使わず、メモリ上の配列にダミーデータを3件持たせてください。
GET /api/todos - 一覧取得
POST /api/todos - 追加(バリデーションはtitle必須)
PUT /api/todos/:id/done - 完了にする
このように依頼すると、実際に npx tsx server.ts のようなコマンドで起動できるサーバーのコードが生成されます。生成されたコードに対して curl や実際のフロントエンドから本物のHTTPリクエストを送れるため、パターン1よりも本番に近い形で確認できます。
複雑な仕様(認証、ページネーション、エラーハンドリングなど)も自然言語で指示するだけでコード化してもらえるので、ゼロから手書きするより圧倒的に速く用意できます。
パターン3: IaC(Terraform等)の plan コマンドでインフラ変更を事前確認
これは厳密には「AIを使った」ドライランではありませんが、インフラの文脈で最もよく使われる伝統的なドライランの手法です。
terraform plan
terraform apply を実行する前に plan を実行すると、「何が追加され、何が変更され、何が削除されるか」が一覧で表示されます。実際にはクラウド側に何も変更を加えません。
AIとの組み合わせ方としては、terraform plan の出力結果をAIに読ませて「この変更は意図通りか」「危険な削除が含まれていないか」をレビューしてもらう使い方が実践的です。
プロンプト例:
以下はterraform planの出力です。意図しないリソースの削除や、
本番環境に影響がありそうな変更がないかレビューしてください。
[plan の出力をここに貼り付け]
人間が長い plan の出力を読み飛ばしてしまうミスを、AIによるレビューでカバーできます。
実践例:パターン2を実際にやってみる
一番実用性の高いパターン2について、もう少し具体的に見てみます。
1. AIに依頼する
Node.js + Honoで、Todo管理APIのモックサーバーを作ってください。
要件:
- ポート3000で起動
- メモリ上の配列にダミーデータを3件(買い物、掃除、洗濯、それぞれdoneはfalse)持たせる
- GET /api/todos で一覧を返す
- POST /api/todos でtitleを受け取り追加する(titleが空なら400エラー)
- レスポンスは実際のバックエンドと同じ形式(id, title, doneを持つ)にしてください
2. 生成されたコードを保存して起動する
AIから返ってきたコードを mock-server.ts として保存し、実行する。
npx tsx mock-server.ts
3. 実際にリクエストを送って確認する
curl http://localhost:3000/api/todos
[
{"id": 1, "title": "買い物", "done": false},
{"id": 2, "title": "掃除", "done": false},
{"id": 3, "title": "洗濯", "done": false}
]
フロントエンドのコードは、このモックサーバーのURLを向いていれば、本物のバックエンドが完成していなくても動作確認ができます。バックエンドが完成した時点で接続先を本物のURLに切り替えるだけで済みます。
注意点
- あくまで開発中の確認用であり、モックサーバーのコードや応答をそのまま本番運用に使ってはいけません。認証・権限チェック・実際のデータ整合性などは一切考慮されていないことが前提です
- AIが生成するレスポンス形式は、実際のバックエンド仕様とズレることがあります。API仕様書(OpenAPIなど)が既にある場合は、それをAIにそのまま渡して「仕様通りに実装して」と指示すると精度が上がります
- モックサーバーで動作確認できたからといって、本物のサーバーに繋いだ時に同じように動く保証はありません。特にエラーハンドリングやレスポンスタイムに依存する処理は、本物のサーバーでの再確認が必要です
まとめ
| パターン | 向いている場面 |
|---|---|
| ① AIとの対話でレスポンス生成 | サンプルデータが欲しいだけ、UIの見た目確認 |
| ② AIにモックサーバーを書かせる | 実際にHTTP通信して動作確認したい、フロント開発を先行させたい |
③ IaCの plan + AIレビュー |
インフラ変更の事前確認、危険な変更の検知 |
「本物が用意できるまで待つ」のではなく、「本物っぽいものをAIにその場で作ってもらって先に進める」という発想が、AIをドライラン・モックサーバーの文脈で使う際の核心です。特にパターン2は準備コストが低く効果も大きいため、バックエンドとフロントエンドを並行開発するチームでは特に活用しやすいはずです。


