ChatGPTとの開発でコードがおかしくなる?原因と対策をAI自身に聞いてみた
最近、ChatGPTを使って開発を進めている中で、ちょっと困った現象に遭遇しました。最初は問題なく動いていたコードが、機能追加や修正をチャットで繰り返し依頼していくうちに、なぜかおかしなコードを提案してくるようになったのです。普段は賢いChatGPTがなぜ?
この疑問を直接ChatGPTにぶつけてみたところ、非常に興味深く、そして納得のいく回答が得られました。今回は、そのChatGPT自身による原因分析と対策を、皆さんと共有したいと思います。AIとの開発で同じような経験をしたことがある方、これからAIを活用しようと考えている方の参考になれば幸いです。
きっかけ:長引くチャット、積み重なる「ズレ」
私が経験したのは、一つのチャットセッションで様々な機能追加や仕様変更をChatGPTに依頼し続けた結果、当初の意図とは異なるパラメータ名を使ったり、古い仕様に基づいたコードを生成したりする、といったミスが目立つようになったことです。
例えば、「最初は csvText という名前でデータを送る想定だったけれど、後から raw_data に変更した」といった場合、ChatGPTが古い csvText を使ったコードを再び提案してくるような状況です。
ChatGPTが分析する「ミスが起こる2つの原因」
この現象について尋ねると、ChatGPTは「人間でもAIでも起こりうる典型的なパターン」とした上で、主な原因を2つ挙げてくれました。
-
プロンプト文脈の「ノイズ累積」
- ChatGPTは、会話の文脈(それまでの指示、コード、仕様など)を記憶し、それを基に推論します。しかし、チャットが長くなり、機能追加や変更が繰り返されると、古い情報や変更前の仕様が「ノイズ」として文脈に残り続けてしまうことがあります。
- AIは過去のやり取り全体を参照しようとするため、意図せず古い情報を参照してしまい、結果として「仕様ズレ」や「呼び出し名のズレ」を含んだコードを生成してしまうのです。チャットが長くなるほど、この「文脈ノイズ」が蓄積しやすくなります。
-
修正サイクル不足による「局所最適化ミス」
- チャットで対話的に修正を重ねていると、どうしても「今指摘された部分だけ」を修正して次に進みがちです。例えば、API(バックエンド)側のパラメータ名を修正しても、それを呼び出す側(フロントエンド)のコードは古いまま、といった「部分修正ミス」が発生しやすくなります。
- これはソフトウェア開発でよく言われる「局所最適化の罠」に似ています。システム全体を見渡して整合性を確認せずに部分的な修正を繰り返すと、徐々に全体のズレが大きくなってしまうのです。
ChatGPTが提案する「3つの対策」
原因がわかれば、次に対策です。ChatGPTは、これらの問題を回避・軽減するための具体的な方法も提案してくれました。
-
適切なタイミングでチャットをリセットする
- 最も効果的な対策の一つが、チャット履歴のリセットです。特に、機能の区切りが良いタイミングや、重要な変数名・パラメータ名、APIの仕様などが変更されたタイミングでチャットを一度終了し、新しいチャットセッションを開始します。
- これにより、古い「ノイズ」が蓄積されるのを防ぎ、「新しい前提」でAIに指示を出すことができます。(今回、私がチャットを切り替えた判断は正しかったようです!)
-
小機能を作ったら必ず全体整合チェックをする
- 部分的な修正で終わらせず、関連する部分全体の整合性を確認する習慣をつけることが重要です。
- 例えば、「新しいAPIを追加したら、そのAPIを呼び出す側のコードも必ず確認する」「データの送信側と受信側で使うパラメータ名を一覧表にまとめて確認する」といった一手間が、後の大きなズレを防ぎます。ChatGPTが例として示してくれたような、フロントエンドとバックエンドのパラメータ対応表を作るのも有効でしょう。
-
コード生成時に重要部分を明示的に指示する
- AIにコード生成を依頼する際に、特に重要な箇所(変数名、パラメータ名、キー名、期待するデータ形式など)をプロンプトで具体的に、かつ明確に指定します。
- 例えば、「リクエストパラメータは
raw_data,fileFormat,target_userの3つに合わせてください」「サーバー側ではこのキー名{ 'user_id': ..., 'data': ... }を受け取る前提でコードを生成してください」のように、曖昧さを排除する指示を心がけることで、AIはより正確なコードを生成しやすくなります。
まとめ:AIとの上手な付き合い方
ChatGPTが教えてくれた原因と対策をまとめると、以下のようになります。
ChatGPTも最後に述べていましたが、これらの問題はAI特有のものではなく、実は人間のエンジニア同士の開発プロジェクトでもよく起こりうることです。「ミスが起きたからAIはダメだ」と考えるのではなく、なぜミスが起きたのかを理解し、適切な対策を講じることが大切です。
今回の経験を通して、AIとの対話においても、人間とのコミュニケーションと同様に、前提条件の確認、明確な指示、そして定期的な全体の見直しが重要であることを再認識しました。
この記事が、皆さんがAIとより効果的に協働するためのヒントになれば幸いです。
※この記事はGeminiにまとめてもらいました。





