AIツールのトークン上限で作業が止まるとき:長いゲームコードの扱い方
遊びをつくる執筆にClaudeを使用しています。

ゲームのコードをAIに渡して修正や追加をお願いしていたら、突然「コンテキストが長すぎます」「これ以上処理できません」というエラーが出た経験はないでしょうか。あるいは、出力が途中で切れてしまい、続きを求めると返答がちぐはぐになっていくというケースもよくあります。 これはAIツールに備わる「トークン上限(コンテキストウィンドウ)」という制約によるものです。トークンとは、AIがテキストを扱うときの最小単位で、日本語では1文字がほぼ1〜2トークン、英語のコードは単語や記号の区切りで数えます。会話履歴・指示文・コード全体がすべてこの枠に収まらなければ、AIは正確に処理できません。ゲームのコードはロジックが増えるほど急速に長くなるので、この問題にぶつかるのは早い段階からです。 この記事では、トークン上限で作業が止まったときに何をすべきか、そもそも止まらないようにコードをどう渡すか、段階ごとの判断基準と手順を整理します。
この記事の目次
なぜゲームコードはトークンを食いやすいのか
ゲームのコードには、他の用途のプログラムと比べてトークンを増やしやすい構造的な特徴があります。
一つ目は「状態管理が一箇所に集まりやすい」点です。スコア・ライフ・ステージ番号・敵の位置・アイテムの有無といったすべての変数が同じファイルに並ぶことが多く、コードが縦に長くなります。二つ目は「ゲームループ」の存在です。update()やdraw()のような関数は、ゲームの種類によっては数百行に及ぶことがあり、その全体をAIに見せないと文脈が伝わらない場面が出てきます。三つ目は「コメントと定数の多さ」です。可読性のために書いたコメントや、マジックナンバーを避けるための定数定義は大切ですが、トークンとしては重みがあります。
ブラウザゲームを単一のHTMLファイルで作る場合、HTML・CSS・JavaScriptがすべて一つのファイルに入るので、500行を超えるあたりから「全文を貼り付けてレビューしてもらう」運用が難しくなり始めます。
作業が止まったときに最初にやること
エラーが出た、あるいは返答がおかしくなったと気づいた瞬間に試すべきことを順番に示します。
- 会話をリセットして新しいセッションを始める。 長い会話履歴そのものがトークンを消費しています。前の経緯を全部引き継ぐ必要がない場合は、新しいチャットを開くだけで解決することがあります。
- 渡すコードを問題のある箇所だけに絞る。 「このゲーム全体を直して」ではなく「このファイルの100〜140行目の衝突判定だけを修正してほしい」と伝えると、AIに渡すテキスト量を大幅に減らせます。
- コードを貼る前にコメントを一時的に削除する。 コメントはAIとの作業中は外し、完成後に戻す運用も有効です。
これで大半の詰まりは解消されます。それでも難しい場合は、次のコードの分割という設計上の対策に進みます。
コードを分割してAIと協力しやすくする
トークン問題の根本的な対策は、コードを「AIに一度に見せても大丈夫な単位」に分けることです。これはゲームの保守性も上がるので、一石二鳥です。
具体的には、機能のかたまりごとにファイルを分けます。
- 入力処理:キーやタッチのイベント受け取りだけをまとめた部分
- ゲームロジック:衝突・スコア計算・状態遷移など
- 描画処理:canvasへの描画命令をまとめた部分
- データ定義:敵の種類・ステージ構成・定数などを並べた部分
ブラウザゲームでZIPファイルとして複数ファイルを管理する場合、この分割が自然にできます。AIへの質問も「logic.jsの敵のスポーン関数だけ見てほしい」という形になり、毎回ゲーム全体を貼る必要がなくなります。
分割の目安として、1ファイルあたり150〜250行程度に収めると、コード全体とやり取りの文脈を足してもトークン上限に当たりにくくなります。ただし上限はAIツールによって異なるため、使用ツールの公式サイトで最新の仕様を確認してください。
AIへの渡し方を工夫する:「差分」と「抜粋」の使い分け
コードを分割しても、1ファイルが長くなることはあります。そのときはAIへの渡し方自体を変えます。
差分を渡す方法は、変更前と変更後の部分だけを抜き出して示す方法です。「元のコードのここをこう変えたい」と書いてから変更対象の関数だけを貼ると、AIは残りのコードを知らなくても判断できる場合があります。たとえば「スコア計算の関数を以下のように変えた結果、ボーナスが正しく加算されない。この関数だけ確認してほしい」と伝えれば十分なことが多いです。
抜粋と仕様説明を組み合わせる方法は、コードの代わりに「このゲームにはplayer・enemies・bulletsという配列があり、毎フレームupdateを呼ぶ構造です」と仕様をテキストで説明してから、問題のある関数だけ貼るやり方です。コードを読まずに仕様から補完できるので、AIが必要とするトークンが減ります。
失敗しやすいのは「とにかく全部貼れば伝わる」という思い込みです。長いコードを丸ごと渡すと、AIが何を重点的に見ればよいか判断できず、関係のない部分の修正を提案したり、問題箇所を見落としたりすることがあります。長ければ丁寧というわけではなく、問いを絞ることが精度を上げる近道です。
AIツールごとの特性と選び方の考え方
トークン上限の大きさはツールによって差があります。一般的に、上限が大きいツールはより長いコードを一度に処理できますが、1回あたりのコストや速度の違いが生じることもあります。
判断の軸として次の点を確認するとよいでしょう。
- コンテキストウィンドウのサイズ:公式ドキュメントに「Kトークン」「Mトークン」という形で記載されています。ゲームコードが長くなりそうな場合は大きいほうが作業しやすいです。
- 出力の最大トークン数:入力だけでなく出力も上限があります。コードを生成してもらうとき、途中で切れるのは出力側の制限が原因の場合があります。
- ファイルアップロードへの対応:テキストとして貼る代わりにファイルを渡せるツールは、コードを整理した状態で渡しやすいという利点があります。
料金プランによって使えるモデルや上限が変わることが多いので、現在使っているプランで何ができるかは、各ツールの公式サイトで確認してください。
次の行動
まず手元のゲームコードを開き、全体の行数を確認してください。150行を超えているなら、機能のかたまりごとにファイルを分けるか、次にAIへ質問するときは問題の関数だけを抜き出して渡す練習をしてみてください。分割したファイルをZIP形式にまとめてアソバースへ投稿する流れと、コード管理を整える作業は同時に進めやすいので、仕上がりを意識しながら構造を整えるとよいでしょう。
参考資料
- 各AIツール(Claude・ChatGPT・Geminiなど)の公式ドキュメント「Context window」または「Token limits」の項目
- MDN Web Docs「JavaScript modules」

