はじめに
「ChatGPT、すごい!」 最初はそう感動していても、少し複雑なアプリやツールを作ろうとした瞬間、急に沼にハマることってありませんか?
PythonなりC言語なり、好きな言語でサクッとコードを書いてくれるのは最高です。 でも、小規模なスクリプトなら簡単なのに、大規模なコードやツールの作成をChatGPTに依頼する場合、やりとりが長くなると途端に怪しくなってくる……。
「あれ、さっき直したバグが復活してる?」 「コードが長すぎて途中で止まっちゃった……」
そうなると、ChatGPTの欠点も見えてくるのです。
今回は、そんな「ChatGPTでの開発あるある」を解消し、最後まで確実に作り切るためのテクニックと、私が愛用している**「魔法のプロンプト」**を紹介します。
これを知っているだけで、開発効率が劇的に変わります。
ChatGPTが「記憶喪失」になる問題を解決する
ChatGPTはたまに、どれだけ会話が進んでも最初に作成されたコードのみを基準にし続けることがあります。
どういうことかと言うと、
- コードAを作ってもらう
- バグがあったので修正して「コードB」にしてもらう
- さらに機能を追加しようとすると……
- なぜか「コードA」をベースに機能追加されて、バグが復活している!
なんてことが起こるんです。
毎回そうなるわけではありませんが、これをやられると修正の無限ループに入ってしまいます。本当に面倒ですよね。
だからこそ、「基準を更新するよう」明確に指示する必要があるんです。
「時間が足りない」で逃げられるのを防ぐ
次に多いのが、「時間切れ」問題。
ChatGPTは処理時間が足りないと、「完成していないのでコードを出せません。次のターンで仕上げます」的なことを言います。
「じゃあ続きをお願い」と頼みますよね?
しかし、ここにとんでもない罠があります。
AIはチャット履歴にコードがなければ、次のターンに引き継がないことがあるんです。
会話上は引き継いでいるように見えても、裏側では文脈を見失っていて、実際は0から作り直していたりします。これでは意味がありませんし、時間がかかって面倒です。
だから是が非でも履歴(物理的なファイル)に残したいのですが、何かと理由を付けて出そうとしないのがChatGPTです。
そこで、確実に情報を引き継がせるのに最適なのが「ダウンロードリンク」でした。
全てのコードを載せるようにさせても良いのですが、修正させる度にチャット欄に何百行ものコードを載せるのは時間が掛かりますし、スクロールして遡るのも大変です。ファイルを直接渡してもらうのが一番確実なんです。
決定版!開発効率を爆上げする「指示プロンプト」
ただ、ダウンロードリンクにも問題はあります。一長一短なので好きな方を選んでください。
ダウンロードリンクは生成された直後にクリックしても、「このファイルは利用できなくなりました」「コード インタープリターのセッションの有効期限が切れました」といったメッセージでダウンロードに失敗することがあるのです。
また、出力されたのが「フォルダへのリンク」でも失敗します。
なので、「確実にダウンロード可能なZIPファイル」になるよう指示しましょう。
圧縮ファイル(ZIP)にする理由はもう一つあります。
大規模なプログラムを作成する場合、大抵は複数ファイルに分けたり、外部ファイルが必要になります。ChatGPTもその想定で作成することが多く、ディレクトリ構造をそのままダウンロード出来るので、配置ミスなどの間違いが少なくなります。
前置きが長くなりましたが、これらを全て解決する**「魔法のプロンプト」**がこちらです。
開発の要件定義が終わったタイミングや、コード生成をお願いする段階で、以下の条件をペタッと貼ってください。
【開発用・確実なコード出力を求めるプロンプト】
なお、ここからは以下の項目を前提にしてくれ。
・こちらからの指定がない限り、コードを修正するときは毎回「前のターンで出力したコード」を新しい基準として、次の差分を出してくれ。
・コードを出すときは、全コードを含めたダウンロードリンクで出してくれ。
・ダウンロードリンクは「フォルダ参照由来の一時リンク」ではなく、確実にダウンロード可能なzipファイルリンクにしてくれ。
・時間が足らずに未完成の場合でも、ダウンロードリンクを出すか否か勝手に判断することを禁じる。100%の確率で途中成果物をダウンロードリンクで出力すること。
このプロンプトのポイントは、**「未完成でも100%出すこと」**を強制している点です。
未完成でもファイルとして手元にあれば、それを読み込ませることで確実に「続き」からスタートできますからね。
それでもAIが指示を守らない時の「最終奥義」
ここまで語っておいてなんですが、最も重要な点は別にあります。
それは、AIが指示を守らない場合があることです。
これだけ鉄壁のプロンプトで指示を出しているのに、守らないこともあります。
「ZIPで出して」と言ったのにテキストで書いてきたり、「途中ですが出します」と言いつつリンクがなかったり……。
ChatGPTに限らずですが、AIの言葉使いは「人間のように振る舞う」ためのもので「自分の発言に責任を持っている」訳ではありません。
「次の処理で必ず完成させます」とか言って「未完です」、なんてのはしょっちゅうありました。
どんなに完璧なプロンプトを作っても、これ(AIのサボりや幻覚)が起こるリスクがあります。
こういう場合の対処法は一つです。
望みどおりになるまで根気よく「もう一度試す(Regenerate)」ボタンからガチャりましょう。
これに尽きます。というか他にどうしようもありません。
AI相手にイライラして説教をしても時間の無駄です。「ハズレ引いたな」くらいの気持ちで、当たりが出るまでリトライボタンを押す。
意外とこれが、精神衛生上も開発スピード的にも一番の近道だったりします。
まとめ
ChatGPTを使った大規模開発で失敗しないためのポイントは3つです。
- 「前回のコードを基準にする」と明言し、先祖返りを防ぐ。
- 履歴を確実に残すために「未完成でもZIPで出力」させる。
- 指示を守らない時は、迷わず「再生成」ガチャを回す。
この3つを意識するだけで、今まで「もういい、自分で書く!」と投げ出していたツール作成も、驚くほどスムーズに進むようになります。


コメント