前回のテトリスを真っ向から否定する記事です。
はじめに
休日の午後、キッチンに立ちました。
冷蔵庫を覗きながら
「材料? 結構あるよ」「調味料? あれもない、これもない」と、
スマホのGeminiに何度も写真を送ってアドバイスをもらい、
ワイワイ作っていったハンバーグ。
完成した後でふと思ったのです。
これ、最初の1プロンプトで全部頼めたらどうなったんだろう?
逆算して書いてみたのが下のプロンプトです。
想定プロンプト(コピペ用)
これからハンバーグを作るので、買い置き材料を全部使い切って2〜3食分まとめて
作るための「全工程レシピ」を一発で組み立ててください。
以下の前提・制約・要望を全部踏まえて、買い足しゼロで成立する手順にしてください。
# 使う材料(量は実測)
- 牛豚の合い挽き肉(粗挽き) 約580g
- 鶏むね挽き肉 約300g
- 普通の玉ねぎ 中1個(直径8〜9cm)
- 新玉ねぎ 大1個(直径8〜9cm)
- マッシュルーム 1パック(6〜8個)
- フレッシュトマト 1個
- カットトマト缶 1缶
- 雑穀パン(ハード系) 食パン1.5〜2枚分相当
- 卵 2個
- 牛乳、塩、コショウ、サラダ油、赤ワイン、ケチャップ、コンソメ
- バジル系の乾燥スパイス、花椒(ホアジャオ)パウダー、七味
# 使えない・足りないもの(ここ重要)
- パン粉なし → 雑穀パンで代用したい
- ナツメグなし → 手持ちのスパイスで代用したい
- 大きな鍋なし。ソースを煮込むのは深めのフライパン or 中サイズ片手鍋
# 仕上がりの希望
- ボリュームがあるので「今夜食べる煮込みハンバーグ」と
「焼いて冷凍/冷蔵する保存用」の2系統に分けたい
- 煮込みは赤ワイン+トマト+マッシュルーム+ケチャップのレストラン風ソース
- 鶏むね肉が入ってもパサつかせたくない
- 保存用は別日にソースを変えて食べ回したい(ポン酢、照り焼き等への展開も)
# 出力に含めてほしいこと
1. 各材料の最終的な分量(g・mlまで明記)
2. 工程を時系列で番号付き、並行作業はそう書く
3. 「ここで失敗しがちなポイント」を各工程の末尾に1行で
4. 鶏むね肉と合い挽き肉の混ぜる順番の根拠(なぜ別こねが必要か)
5. ナツメグ代用の具体的な配合(g/振り数)と、入れすぎ注意のスパイス
6. 玉ねぎ・マッシュルームの加熱方法と「冷ます理由」
7. パンを牛乳でペースト化する具体手順(牛乳の量含む)
8. 焼き時に肉汁がフライパンに大量に出た場合のリカバリー方法
9. 保存用の保存期間と、解凍後の食べ方バリエーション3つ
10. 盛り付け(深皿で、ソースたっぷり想定)
長くなって構いません。買い足し不要、判断ポイントを残さない完成版でお願いします。
…これを書ける人はもう料理が完成している
書いてみて気づきました。
このプロンプトを書ける時点で、もうレシピの大半は頭の中にある
ということ。
- 「ナツメグなし」と書くには、ナツメグが必要だと知っていないといけない
- 「冷ますタイミング」を要望に入れるには、冷まさないと失敗することを知っていないといけない
- 「肉汁が大量に出た場合」を先回りで書くには、それが起きると予測できていないといけない
つまり、
「最初の一発で完璧」を実現する前提条件は、自分が完璧であること。
これが成立する人は、そもそもAIを使う必要があまりない。
実際の対話で起きたこと(対比)
実際は、最初は「ハンバーグの作り方教えて」の一言から始まりました。
冷蔵庫を覗きながら、行き当たりばったりで進めていきます。
- 冷蔵庫を開けて初めて「肉900g近くある」と気づく
- 棚を見て初めて「あ、ナツメグない」と気づく
- 焼き始めて初めて「フライパンが小さい」と気づく
- 蒸し焼きにして初めて「肉汁こんなに出るの?」と驚く
これらは作り始めて初めて見えることで、
最初のプロンプトには絶対に書けない情報でした。
これ、コードを書くときも同じだよね
書きながら、これってプログラミングでまったく同じ構図だな、と思いました。
「このアプリ作って」と一発のプロンプトで完璧な要件定義を渡せたら、
AIは完璧なコードを返してくれる。
理屈の上では。
でも実際は——
- 最初の画面ができて初めて「あ、ここUIおかしいな」と気づく
- データを流して初めて「想定してた形式と違うじゃん」と気づく
- 動かして初めて「このAPIってこんなクセあるんだ」と知る
- ユーザーが触って初めて「こういう操作されるとは思わなかった」と分かる
要件は書き出した瞬間から古くなるし、走らせて初めて見える落とし穴は事前に書けない。
だから完璧な仕様書を書こうとして1週間溶かすより、
雑なプロンプトで動くものを出して、
ログとエラーと画面を見せながら「ここおかしくない?」「これ意図と違う」とキャッチボールを始める方が、
結果として早く・確実に正解にたどり着きます。
ハンバーグでフライパンを写真に撮って「ひっついた!」と相談したのと、
スタックトレースを貼って「これ動かない」と相談するのは、
まったく同じ行為です。
作りながら見えてくるものを、その都度AIと相談する。
これ、料理でもコードでも、たぶん「AIと一緒に何かを作る」ときの一番大事なコツです。
なぜ前回のテトリスは一言で通じたのか
ここで気になるのが、前回のテトリス記事との矛盾です。
前回は「Reactでテトリスを作って」の一言で完璧なものが出てきたと書いた。
今回は「一言で完璧なんて嘘」と書いている。
——どっちが本当?
両方本当でした。違いは、AIがその"単語"をどれだけ知っているかです。
仕様が決まっている「単語」は、基本的なものなら一言で通じる
「テトリス」「ハンバーグ」「TODOアプリ」「カルボナーラ」。
こういう世の中に仕様が定着している単語は、AIの中にすでに何百万件もの実装例・レシピが
入っています。だから一言で頼んでも、誰が見ても「ああ、テトリスだね」「ハンバーグだね」と
うなずくものが返ってきます。
前回のテトリスはこのパターン。「Reactでテトリスを」のたった一文で十分だったのは、
私が優秀だったわけではなく、テトリスという単語が優秀だっただけです。
でも、これから作ろうとしている新しいものはAIは知らない
一方で、世の中にまだ存在しないもの——自社の業務システム、独自仕様のゲーム、
あなたが頭の中で温めている新サービス——これらはAIの学習データに入っていません。
だから「うちの業務に合わせた在庫管理アプリを作って」と一言頼んでも、
AIは"一般的な在庫管理アプリ"を返してくることしかできない。
それはあなたの会社の在庫管理ではない。
AIが知っていることでも、少しアレンジしようとしたら細かく伝える必要がある
そして一番落とし穴なのがこれ。
「ハンバーグ」はAIが知っている。でも今回のハンバーグは——
- 鶏むね肉と合い挽き肉のミックス
- パン粉ではなく雑穀パン
- ナツメグなしで花椒入り
- フライパン2つに分けて煮込みと焼きの2系統
- 大量の肉汁を活かす追い肉汁作戦
ここまでアレンジが入ると、もう"普通のハンバーグ"ではない。
AIが知っている「ハンバーグ」という単語に乗っかれる部分はごく一部で、残りは
全部こちらから状況を伝えてキャッチボールするしかありません。
コードでも同じ。「ログイン画面を作って」なら一発で出る。でも
「うちの認証基盤に合わせて、SAMLでこのIdPと、しかも初回のみパスワードリセット強制で…」
となった瞬間、AIは知らない領域に踏み込みます。
結論:対話の往復こそが完成形を作る
整理するとこうです。
| 何を作るか | 一言で通じる? |
|---|---|
| 仕様が世の中に定着しているもの(テトリス・標準的なTODOアプリ) | ○ 通じる |
| 知ってる単語+少しのアレンジ | △ 細かく伝える必要あり |
| あなたの状況・組織・冷蔵庫に固有のもの | × まず通じない |
仕事で本当に作りたいものは、ほぼ全部、下の2行のどちらかです。
だから現実には、対話の往復こそが完成形を作る。
完璧なプロンプトを書こうとして悩むより、
雑な一言で始めて状況を見せながら相談する方が、
実は早く・確実に・自分の状況に合った答えへとたどり着く。
「一言で完璧」は、AIが既に知っているものに限った話。
でも「対話で完璧」はどんなものでも可能でした。
Geminiとワイワイ作ったハンバーグも、職場で書くコードも、たぶん同じです。