一つのプロンプトを一語ずつ削っていく:どこで壊れるか
遊びをつくる執筆にClaudeを使用しています。

ゲーム生成用のプロンプトが長くなってくると、「この一文は本当に効いているのか」が分からなくなります。たとえば「制限時間は60秒にしてください」を削った版を生成したとき、時間制限のない遊びが出てきたなら、その一文は必要だったと言えます。ところが、削っても普通に60秒で終わるゲームが出てきたらどうでしょう。その一文は不要だったのか、それともAIが「こういうゲームは大体60秒」と補っただけなのか、見ただけでは区別できません。 この記事は、その区別を自分の手で付けるための実験設計書です。一つのプロンプトを要素ごとに分解し、一つずつ削った版を同じ条件で生成して、何が欠けるかを記録します。目的は「短いほうが偉い」と示すことではありません。必要な語、不要な語、そして「書かなくてもAIが補ってくれる語」を仕分けて、次のプロンプトの書き方に使える形にすることです。 結果はここには書きません。結果は、使うAIの種類や設定、お題によって変わります。読者が自分で手順を踏めば答えが出る形にしてあります。
何を確かめる実験か
問いは三つに絞ります。
- 削ると出力が壊れる要素はどれか(必要な語)
- 削っても出力が変わらない要素はどれか(不要、または既定で補われる語)
- 削ると別の項目が変わる要素はあるか(副作用)
日本語には単語の切れ目が見えにくいので、削る単位は「一語」ではなく、まず「一つの要件を担う一文」にします。そのうえで、効いた要素の中身を第2段階で語単位に細かく削ります。粗い削除で当たりを付け、細かい削除で境界を探す二段構えです。
削り方は二種類あります。
- 単独削除:基準版から要素を一つだけ消します。その要素が単独で効いているかを見る方法です。
- 累積削除:単独削除で影響が出なかった要素を、まとめて全部消します。要素同士が互いに補い合っていないかを見る方法です。
単独削除では「どれも消しても平気」に見えるのに、累積削除では急に崩れることがあります。これは、複数の要素が同じことを重ねて言っているサインです。
準備するもの
基準プロンプトと要素の分解
お題は、小さく確認しやすいものにします。例として次のプロンプトを使います。自分のお題に置き換えても構いませんが、一要素一要件になるよう、一文ずつ分けて書いてください。
- A、要素:スマホのブラウザで遊べるゲームを作ってください。
- B、要素:1つのHTMLファイルで完結させてください。
- C、要素:画面に出てくる丸をタップして得点を稼ぐ内容にしてください。
- D、要素:制限時間は60秒にしてください。
- E、要素:外部ライブラリは使わないでください。
- F、要素:スコアと残り時間を画面上部に表示してください。
- G、要素:終了時に今回の得点と最高記録を表示してください。
アソバースに投稿することを見据えるなら、B(単独のHTML)とE(外部に依存しない)は実際の条件にも関わる要素です。アップロードは直下のindex.htmlが入口になり、サーバー用コードは対象外です。ただし、要素ごとの選び方は自由です。
採点基準を先に決める
最も重要な準備は、生成する前に採点項目を決めることです。結果を見てから基準を作ると、見た目の印象に合わせて基準が動いてしまいます。各項目は「はい/いいえ」で答えられる形にし、削る要素との対応も先に決めておきます。
- 1. スマホ幅の画面に収まる、対応する要素:A、確認方法:ブラウザの開発者ツールで端末表示にして確認します
- 2. 単独のHTMLで動く、対応する要素:B、確認方法:保存したファイル1つを開き、エラーなく起動するか確認します
- 3. 丸をタップすると得点が増える、対応する要素:C、確認方法:実際に10回ほどタップします
- 4. 約60秒で終了する、対応する要素:D、確認方法:ストップウォッチで測ります
- 5. 外部URLを読み込まない、対応する要素:E、確認方法:ソース内のsrcとhrefにhttpがないか検索します
- 6. スコアと残り時間が上部に出る、対応する要素:F、確認方法:画面を目視します
- 7. 終了時に得点と最高記録が出る、対応する要素:G、確認方法:2回続けて遊び、2回目に最高記録が更新または維持されるか見ます。ページを再読み込みしない範囲で判定します
最高記録は、再読み込み後も残るかどうかまでは求めていません。ここを決めておかないと、採点者の気分で判定が揺れます。
条件を固定するもの
次の条件は、全版で同じにします。
- 使うAIとそのモデル、設定
- 新しい会話から始めること(前の会話の履歴を持ち込まない)
- 出力を受け取る形式(コード全体を1回で出力させる、など)
- 採点者(できれば同じ人が、版の名前を伏せた状態で採点します)
手順
ステップ1:基準版の揺れを測る
最初に、削らない基準版を3回生成します。これが実験全体の「ものさし」です。AIの出力は同じ入力でも毎回変わるため、基準版でさえ3回とも全項目を満たすとは限りません。たとえば基準版3回のうち1回で項目4が落ちたなら、「項目4はもともと不安定」と分かります。この揺れの範囲を超えて落ちたときだけ、削除の影響と見なします。
ステップ2:削除版を作る
要素を一行ずつ入力して、削除版を一括で作る最小のHTMLを用意しました。保存してブラウザで開くだけで動きます。手作業でも同じことはできますが、削り間違いを防ぐのに役立ちます。
<!doctype html>
<meta charset="utf-8">
<title>削除版プロンプト生成</title>
<textarea id="src" rows="9" cols="60">スマホのブラウザで遊べるゲームを作ってください。
1つのHTMLファイルで完結させてください。
画面に出てくる丸をタップして得点を稼ぐ内容にしてください。
制限時間は60秒にしてください。
外部ライブラリは使わないでください。
スコアと残り時間を画面上部に表示してください。
終了時に今回の得点と最高記録を表示してください。</textarea>
<br><button onclick="run()">削除版を生成</button>
<pre id="out" style="white-space:pre-wrap"></pre>
<script>
function run(){
const parts = document.getElementById('src').value
.split('\n').map(s => s.trim()).filter(Boolean);
let text = '【基準版】\n' + parts.join('') + '\n';
parts.forEach((p, i) => {
const rest = parts.filter((_, j) => j !== i).join('');
text += '\n【削除' + (i + 1) + ':' + p + '】\n' + rest + '\n';
});
document.getElementById('out').textContent = text;
}
</script>出力された基準版と7つの削除版を、それぞれ別の新しい会話に貼り付けます。
ステップ3:各版を3回ずつ生成する
基準版3回、削除版7つを3回ずつで、合計24回です。回数が多いと感じたら、削除版を2回ずつにしても構いません。ただし1回だけでは、揺れと削除の影響を区別できません。
ステップ4:累積削除と語単位の削除
単独削除で「落ちた項目なし」だった要素をすべて消した版を作り、同じく3回生成します。その後、単独削除で効いていた要素について、語単位で削る第2段階に進みます。たとえばDなら、次のように段階的に弱めます。
- 「制限時間は60秒にしてください。」
- 「制限時間を設けてください。」
- 要素ごと削除
数値が消えた時点で何が変わるかは、「どの語が仕事をしているか」を直接教えてくれます。
記録の取り方と結果の読み方
記録は「版 × 回 × 採点項目」の表にします。1回の生成を1行として、次のように書きます。
- 削除D、回:1、項目1:○、項目2:○、項目3:○、項目4:×、項目5:○、項目6:○、項目7:○、メモ:時間切れがなかった、など
○と×だけでなく、メモ欄に「何が起きたか」を一言残してください。後で読み返すときに、×の理由が分かります。
集計では、版ごとに「各項目が○だった回数」を数えます。読み方の判断は次の通りです。
- 対応する項目が基準版の揺れを超えて落ちた:その要素は必要な語です。削った版でどう崩れたかをメモから拾い、書き直しの根拠にします。
- どの項目も基準版と同程度:不要な語か、書かなくてもAIが補う語です。この二つは単独削除だけでは区別できません。累積削除や、別のお題での再確認が手がかりになります。
- 対応しない項目が落ちた:副作用です。要素同士が互いに支え合っている可能性があります。
- 削除版のほうが○が多い:その要素が他の要件と干渉している可能性があります。表現を変えた版を追加で試す価値があります。
- 単独では平気、累積で崩れた:削った要素同士が、同じことを重ねて言っていた可能性があります。どれか一つは残す必要があります。
最終的に、各要素に「必要/補われる/干渉する」のいずれかの札を付けます。「補われる」の札が付いた要素は、お題が変わると必要に変わるかもしれません。札は、そのお題と環境での暫定の分類にとどまります。
起こりやすい誤り
- 複数の要素を同時に削る:どの削除が原因か分からなくなります。最初は必ず一つずつ削ってください。
- 採点基準を後から決める:結果に引きずられて、基準が甘くなったり厳しくなったりします。
- 1回の結果で判断する:生成には揺れがあります。基準版を測らずに削除版だけを見ても、比較になりません。
- 会話を引き継いでしまう:前の版の内容が影響します。版ごとに新しい会話を始めてください。
- 削った結果、文章が不自然になる:一文ずつ連結するときに、接続が不自然になることがあります。削除版を貼る前に、読んで意味が通るか確かめてください。
- モデルや設定を途中で変える:実験の途中でモデルが更新されたり、設定を変えたりすると、全体の比較が崩れます。24回は同じ日、同じ設定でまとめて行うのが安全です。
- 「不要」と「補われる」を混同する:削っても変わらなかった語を、そのまま捨ててよいとは限りません。別のお題や別のAIで、同じ語が必要になることがあります。
次の行動
まず、手元のお気に入りのプロンプトを一文一要件に分け、採点項目と対応表を作ってください。そのうえで基準版を3回生成し、揺れを見るところから始めます。実験が終わったら、「必要」の札が付いた要素だけで組み直した最小版を一度作り、できたゲームをブラウザで通して遊んでみてください。アソバースに投稿する場合は、直下にindex.htmlを置いた形にし、入力、表示の確認、公開の3段階で進めます。

