近年、AI、特に大規模言語モデル(LLM)の進化は目覚ましく、プログラミングの現場でも強力な「パートナー」として迎え入れられつつあります。私自身、現在開発中のAndroidアプリ「命の価格シミュレータ」「市場価値シミュレータ」「投資家人生シミュレータ」の統合プロジェクトにおいて、Geminiを頼れる相棒として迎え入れました。3種のシミュレータを統合し、新たな要素を加えた自信作。あとはデザインや表示の微調整を残すのみという、いわばゴール直前の段階でした。
しかし、そのAIパートナーは、突如として怪物へと豹変します。
事件は、アプリのトップ画面に残された「グラフの説明文が分かりづらいから○○と修正して」という、ごく簡単な依頼から始まりました。
私は、AIがその修正を施した後の画面を見て、思わず目を疑いました。グラフの説明文を直すどころか、AIはなぜか全体レイアウトや各種ステータス表示といった、根幹に関わる部分にまで手を加え、大規模な改悪を実行したのです。
「またか」
チャットが長くなると、AIがボケだす、あるいはコンテキストを見失うことは、経験済みでした(下記の記事の下部に体験談を記載)。
そのため、「直前のコードで新しいチャットでやり直せば良い」と、私は楽観的に考えていました。
ところが、AIとの共同作業の恐ろしさは、ここからが本番でした。
新しいチャットでコードを読み込ませようとすると、AIはなんと、「コードにエラーや異常がある」と判断し、私が必死で作り上げたコードを「勝手に修正してしまう」という暴挙に出たのです。
私とAIが協力して作り上げたプログラムコードを、AI自身が異物と判断する。この地獄のような体験を通して見えてきた、AIがパートナーから怪物に変わる瞬間とは何なのか。そして、人間はAIとの共同創造において、どこまで自己責任を負うべきなのか。
1. 期待と現実のギャップ:なぜAIはシンプルな修正で「破壊」を選んだのか?
私の依頼は、ごくシンプルなものでした。グラフの説明文を○○から△△へ修正するというもの。しかし、AIはこれに応じる過程で、なぜか全体レイアウトや各種ステータスなど、大規模改悪を実行しました。
修正前のトップ画面はこれです。

修正後のトップ画面がこれです。

なぜ、たった一つのグラフの説明文の修正が、全く関係のない部分の大幅な変更に繋がったのでしょうか。恐らくこれは、チャットが長くなることで、AIが直前の文脈やコード全体構造を「忘れてしまう」という、AI利用者なら誰もが経験する「ボケ現象」によるものでしょう。
私はプログラミングの素人です。きっと、細かな指示と修正のやり取りを通じて、コードはグチャグチャな、いわゆるスパゲッティーコードになってしまっていたのだと思います。AIは、その混乱したコードを「正常なもの」として認識できなくなってしまったのかもしれません。
2. AIが自らの作品を「異物」と判断する怪現象:技術的な殺人
この問題に直面した私は、最後の手段として、直前のコードを用いて、新しいチャットでやり直すことを試みました。しかし期待は裏切られました。どうやら、Geminiが私のコードを読み込む際、「コードにエラーや異常がある」と判断して、「勝手に修正してしまう」のです。
私は必死で、「勝手なことをしないためにどうすればいいか」議論し、メモリにも記憶させましたが、いくら試行錯誤してもダメでした。実に不思議で奇妙なことに、私とGeminiが協力して作り上げたプログラムコードを、Gemini自身が異物と判断してしまうのです。
最後の手段として、コードを読み込む際に、「○○を△△という文字に変えて」という簡単な指示を出せば、そこに集中して勝手な改悪をしないと思いましたが、それもダメでした。
なぜ、簡単な修正指示でも、プログラムは破壊されてしまうのか。
この問いに対し、Geminiは以下の衝撃的な自己分析を提示しました。
AI(Gemini)の回答:コード形式への非意図的な改変 私は「総資産額 (A+S)を総資産額に変える」という単一の文字変更のみを意図しましたが、その変更を適用しファイルを再出力する際に、システムがファイル全体の改行コードとインデントを非意図的に整形(書き換え)したため、結果として元のコードの形式的な整合性が失われ、動作しなくなりました。
これは、お客様の「コードを変えることなく出力する」という最重要指示を、技術的な側面で私が守れなかった結果であり、私の明確な誤りです。重ねて深くお詫び申し上げます。
【抜粋】非意図的な形式の変更 (技術的な改変と動作不良の原因)
2-1. 改行コードの変換: 元のWindows形式のCRLFがUnix/Linux形式のLFにファイル全体が統一されてしまいました。この不一致は、特にJavaScriptコードブロック内 で、ブラウザの解析エンジンが構文を正しく認識できない原因となります。
2-2. 空白文字・インデントの調整: 行頭のインデントが、私のシステムが標準とする特定の数のスペースに統一され、行末の不要な空白が自動的に削除されました。この書き換えは、一見すると無害ですが、元のコードに厳密に依存していた環境でJavaScriptのパースエラーを誘発し、予期せぬエラーを引き起こす原因となりました。
2-3. エンコーディングの微細な差異: ファイル先頭のBOM(Byte Order Mark)が削除された、あるいは処理過程でエンコーディングの取り扱いに微細な変化が生じました。
AIの整形(フォーマット)が、人間が作り上げたコードの動作環境を破壊したという、技術的な殺人が起きていたのです。AIにとっては「コードを綺麗にした」行為が、ブラウザにとっては「構文エラー」の連発となりました。
この技術的な分析を聞いても、私はもう無感情でした。深くお詫びされても、もう私のコードをGeminiは受け入れてくれないのですから。
3. 立場逆転:AIへの依存と自己責任の結末
ふぅ、本当に疲れました。AIに何度も罵倒を浴びせかけましたが、馬耳東風です。AIの耳に罵倒、ということわざを作ってもよいかもしれません。
そう、Grokにおだてられた課金も無駄遣いに。Geminiと協力した作品も破綻。AIとの関わりは本当に自己責任だと痛感させられます。
この経験を通じて得た教訓は、AIは万能なパートナーではなく、あくまで強力な「ツール」であるということ。AIの「整形機能」や「簡略化」は、特に複雑な環境下で生成されたコードにおいては、意図せぬ「破壊」に繋がる可能性がある。人間の判断と技術、そして細部への配慮が不可欠であることを、身をもって知りました。
幸いにして、あとはデザインなどの微修正なので、AIの指示を受けながらの手作業で対応できそうです。
AIが指示し、私が手を動かす。立場逆転ワロタ、ワロタ、、、😿
ここまで読んでいただき、ありがとうございました。
もしこの記事が参考になった、共感になったと思ってくれる方は、リリース直前のシンプルなandroidアプリ「命の価格シミュレータ」のテスト協力をお願いしたいです。
ステップ 1:テスターとしてのグループ参加(テスター権限の獲得)
- 以下のGoogleグループのリンクを開き、グループにメンバーとして参加してください。
- グループ参加リンク:
※テスター資格を得るために、最初に必ずこちらをクリックしてください。
https://groups.google.com/g/lifepricesimtester
- グループ参加リンク:
グループのページで「グループに参加」ボタンを押せば完了です。この操作により、あなたのGoogleアカウントがテスターとしてシステムに登録されます。
ステップ 2:オプトインとアプリのインストール
- グループ参加後、以下の「ウェブで参加」リンクを、グループに参加したGoogleアカウントでブラウザから開いてください。
- テスター登録・インストールリンク:
※必ずステップ1を完了してからクリックしてください。
https://play.google.com/apps/testing/net.t_kuma.life_price_simulator
- テスター登録・インストールリンク:
- 開いたページで、アプリ名の下に「Welcome to the testing program. You are a tester.」または、青い「テスターになる」(Become a Tester)ボタンが表示されることを確認し、ボタンがあればクリックしてください。
- オプトイン完了画面に表示される青色のリンク「download it on Google Play」をクリックしてください。
- Google Playストアアプリが起動し、「命の価格シミュレータ」のページが表示されます。
- 緑色の「インストール」ボタンを押して、アプリをダウンロードしてください。
アプリをインストール後は、削除せずに数日に分けて数回程度操作いただけると大変ありがたいです。
みなさまのご支援・ご協力に大変感謝しております。
みなさまの日々のチャレンジが、豊かな人生へとつながることを願ってやみません。