見出し画像

【1-3】「上書きをやめてました」— AIにプロンプトを書き換えられてから

【この章について】 この連載は、プログラミング経験ゼロの私が、有料の音声入力アプリTypelessの「自分専用版」を作っていく記録です。第1章(全5回)は、Claude Codeと出会うの約3ヶ月の話。別のAIと組んで、動くものは確かにできたのに、だんだん使わなくなっていった日々です。当時の道具が発話ログを382件残していて、この章の引用はすべてその実物から取っています。うまくいった話ではありません。でも、第2章から始まる3週間は、この3ヶ月の上に建っています。

著者の自己紹介

前回記事

目次



今も残っているファイル

私のサーバーには、いまもこれが並んでいる。

app.py       app_r2.py    app_r3.py    app_r4.py    app_r6.py    app_r7.py
mobile_api.py   mobile_api_r2.py ... mobile_api_r5.py

同じプログラムに番号を振ったコピーが、11個。

心当たりのある人は多いと思う。そして、たいていこう思われる。「ちゃんとバージョン管理を使えばいいのに」と。

私もそう思っていた。でも、こうなった理由がある。今日はその話をしたい。

増え続けてた手動バージョンアップの記録

発端は、小さな違和感だった

ある日、返ってきたコードを眺めていて、私は妙なものを見つけた。

プロンプトを入れる部分に違和感があります。これまでは添付のようなプロンプトでしたが、なぜ今回は以下のように""のみになっているのですか?

prompt = f"(中略:先ほどの最強の指示書を入れてください)\n{raw_text}"

AIへの指示文が、丸ごと「(中略)」に置き換わっていた。

悪気があったわけではないと思う。長い部分を省略して短く返しただけだろう。だが私は、そのコードをそのまま動かすつもりでいた。気づかなければ、指示文が空のまま動いていた。

私はその直後、こう書いている。

念のため↑のコードはapp_r3.pyとして保存しました

「念のため」。

ここが始まりだった。

対策を、素人なりに考えた

次に私が取った手は、これである。

修正しましたが、逆にエラーになってしまいます。修正箇所を提示するのではなく、コピーできるように、スクリプトの全文を出力してください。

部分の修正を受け取るのをやめて、毎回まるごともらうことにした。

差分だけ渡されると、どこを直せばいいのか分からない。分からないまま貼ると壊れる。なら全文をくれ、と。

これは正しい判断だった。だが同時に、「毎回、新しい全文が来る」ということでもあった。上書きすれば、前のものは消える。

「おい!!プロンプト変えたな!?」

そして、また起きた。

おい!!プロンプト変えたな!?

我ながらひどい口調だが、当時の気分はこれである。直してくれと頼んだ場所とは別の場所が、黙って変わっている。

そして次のメッセージで、私は自分の首を絞めていたことに気づく。

他にも変えたところないよね? なぜかというと修正版が出る毎にapp_r3.pyを削除してるから、前のスクリプトが残ってないので

前回、前々回からSQL対応以外を変えてないか再度チェックしてください

前のものが、無い。

だから「何が変わったか」を、私は自分で確かめられない。変わっていないかどうかを、変えた本人に聞くしかない。

だから、コピーを取り始めた

この日から、私は上書きをやめた。

`app_r2.py`。`app_r3.py`。`app_r4.py`。新しい全文が来るたびに、番号を1つ進めて別名で保存する。前のものは消さない。

洗練された方法ではない。それでも、これは合理的な行動だった。

  • 前のものが残っていれば、戻せる

  • 2つ並べれば、何が変わったか自分で見られる

  • 「変えてないよね?」と聞かなくて済む

バージョン管理を知らなかったのではない。知らないなりに、自分で発明していた。とても効率の悪い形で。

(余談だが、`app_r5.py` だけ存在しない。5だけどこかへ消えている。何があったのか、私も覚えていない。)

2ヶ月後、また同じことが起きた

これで解決したかというと、していない。2ヶ月近く経った6月、私はまた同じものを見つけている。

あれ?コードを見て気づいたのですが、文字整形用のプロンプトがなくなってませんか?

そして、こう続けた。

こんなことがあるから上書きをやめてました。こんなことばかり続けていると信用なくしますよ? 本当にそれ以外の変更はない、と誓えますか?

「誓えますか」。相手はAIである。誓えるわけがない。

いま読み返すと、これは怒りというより疲れだと思う。同じ形の裏切りに2ヶ月ぶりに遭って、また全部確かめ直さないといけないと分かった瞬間の。

この習慣の、本当の値段

コピーを取る方式は、動いた。だが値段があった。

どれが現行版なのか、だんだん分からなくなる。

11個並んだファイルの中で、いま本当に動いているのはどれか。`app_r7.py` か、それとも `app_r6.py` に戻したままか。作った本人にしか分からない。そして正直に言えば、本人でも怪しい。

この状態のまま、私は3ヶ月を過ごした。

そして、8月3日

前置きが長くなったが、ここからが本題である。

この3ヶ月後、私は別のAI——Claudeさんに、このプロジェクトを引き継ぐことになる。その最初のやり取りで、こう言われた。

gitリポジトリが無い

それどころか、`git` というコマンド自体が入っていなかった。そして、こう続いた。

`app.py app_r2.py app_r3.py app_r4.py app_r6.py app_r7.py`
手動バージョニングの痕跡が見える

痕跡。

3ヶ月ぶんの自衛策が、外から見ると「痕跡」と呼ばれるものだった。そしてそれは、正確な呼び方だった。

この回で書いておきたいこと

バージョン管理は、几帳面な人のための道具ではない。

私がずっとそう思っていたから書いておきたい。あれは一度裏切られた人のための道具である。「前の状態に戻せる」「何が変わったか自分で見られる」——私が `_r2` `_r3` と番号を振りながら欲しがっていたのは、まさにそれだった。

道具の名前を知らなかっただけで、必要としていたものは正しかった。

諦めた経験のある人に、これは伝えたい。あなたが不器用にやっていたことには、たいてい名前がついている。そして名前がついているということは、同じところで困った人が大勢いたということでもある。

この後2章以降で、この道具が家族に広がる話を書きたい。ある日、妻が「私も使いたい」と言い出す。

次回記事


いいなと思ったら応援しよう!