最初の2週間は、面白いように進んだと思います。思いついたことを言えば形になる。夜中に機能がひとつ増える。あの感覚は、本当に良いものです。
それがある時期から変わります。「ここを直して」と頼むと、直る。でも別のところが動かなくなっている。それも直す。すると今度は最初に直したところが元に戻っている。この往復が始まったら、この記事の話です。
腕が落ちたわけではありません
先に結論を書いておくと、これはあなたの腕の問題ではありません。AIの性能の問題でもありません。仕組み上、ほぼ必ず起きます。
なぜかというと、AIは「いま聞かれたこと」に答えるのが非常に上手い一方で、「前回どう作ったか」を完全には覚えていないからです。
たとえば、消費税を計算する処理を書いてもらったとします。1週間後、別の画面で「ここにも税込価格を出して」と頼む。このときAIは、前に書いた計算処理を探して再利用する……とは限りません。多くの場合、その場で新しく書きます。そのほうが速いですし、聞かれたことには完璧に答えているので、間違ってもいません。
こうして、同じことをする処理が2つになります。3つになります。増えたこと自体は、画面上には何も現れません。両方ちゃんと動くからです。
30回目あたりで、症状が出ます
問題が表に出るのは、税率を変えるときです。
「税率を10%から変更して」と頼む。AIは1箇所を直します。あなたは商品ページを見て、直っているのを確認します。ところが領収書の画面はまだ古い税率のままです。そこにはもう1つの計算処理があるからです。
これが「直すたびに別のところが壊れる」の正体です。壊れているのではなく、最初から複数あったものが、ようやく見えただけなんです。
そしてこの段階になると、AIに全体を読ませることも難しくなっています。ファイルが増えすぎていて、一度に渡しきれない。AIは見えている範囲だけで判断するので、見えていない場所の存在に気づけません。ここから先は、頼んでも直らないというより、頼み方では解決できない領域に入ります。
本当に怖いのは、そこではありません
正直に言うと、「直すたびに壊れる」は面倒ですが、致命傷ではありません。時間さえかければ戻せます。
もっと怖いのは、この状態のまま公開しているときに、静かに起きていることのほうです。よく見かけるのは次のあたりです。
APIキーが、ブラウザ側から読める場所に置かれている。画面の裏側を開けば誰でも取り出せるので、他人にAI利用料を使われます。請求が来て初めて気づきます。
データベースが、ログインしていない人にも開いている。SupabaseやFirebaseは、設定しないと全部読み書きできる状態から始まるものがあります。動作確認のときは自分でログインしているので、この問題は絶対に表に出ません。
本番と試し用が、同じデータベースを見ている。練習のつもりの操作が、お客様のデータを書き換えます。しかもバックアップを取っていないことが多いので、戻せません。
これらに共通しているのは、動作確認では絶対に見つからないということです。画面は正常に動きます。誰かが困るまで、何も起きません。だから「動いているから大丈夫」は、この種の問題に対しては何の保証にもならないんです。
まず何をすればいいか
全部を一気に片付けようとすると挫折するので、順番があります。
最初にやるのは、コードの整理ではありません。「戻せる状態」を作ることです。具体的には、いまのコードとデータのバックアップを1つ取ること。それだけです。これがあると、以降の作業で何を壊しても致命傷になりません。逆にこれがないうちは、何を触るのも怖いままです。
次が、漏れているものの確認。APIキーがどこに書かれているか、データベースの権限設定がどうなっているか。この2つは、直すのは意外と簡単で、放っておくと一番高くつきます。
コードの重複を片付けるのは、その後で構いません。急ぐ話に見えますが、実は一番後ろでいい作業です。
私たちも、同じことをやりました
偉そうに書いていますが、自分たちのプロダクトでも同じことをしています。
同じような処理を別々の場所に書いてしまって、後からまとめ直した箇所がいくつもあります。「これは1箇所にしておくべきだった」と気づくのは、たいてい2回目に直すときです。1回目には分かりません。分かる方法がないと思っています。
もっと地味な失敗もあります。自社サイトで文字コードの指定を書く位置がずれていて、本番だけ日本語が文字化けしたことがありました。手元では再現しないので、原因にたどり着くまで時間がかかりました。こういうことは、何年やっていても起こします。
だから、AIで作ったコードを開いて「ひどいですね」と言う気には、まったくなりません。動くところまで持っていけている時点で、それは十分に難しいことをやり遂げています。
作り直す前に
この状態になると、相談した相手からはたいてい「一から作り直しましょう」と言われます。
それが正しい場合もあります。ただ、そう言うほうが楽だから言われている場合も、正直あります。他人の書いたコードを読むのはゼロから書くより面倒ですし、作り直しのほうが金額も大きくなるからです。
実際に開けてみると、危ないところが数箇所あるだけで土台は使える、ということは少なくありません。少なくとも、見てから決める価値はあると思います。
自分で確かめるのが難しければ、システム立て直し相談でその部分をお手伝いしています。整理してから送っていただく必要はありません。むしろ手を加える前のほうが、何が起きているか正確に分かります。「直さなくていいです」が結論になることもあります。