toriR blog

健忘症のAIとコードを書く:仕様書にすがり、嘘を見破りながら進む日々

嘘をつく、忘れる、仕様を壊す――それでもAIにコードを書かせたい。健忘症のAIとリファクタに挑んだ実録、ここに記す。
coding_with_amnesia-AI

AIの使いこなし:リファクタリングを通して学んだこと

2025年の夏、私は音声ファイルをスペクトログラムとして可視化し、アノテーション結果を表に格納するアプリ「spectroView」の開発に取り組んでいました。生成AIの助けを借りて、Vueベースでこのアプリを短期間で構築できたのは確かに驚異的な体験でした。しかし、その一方で2000行に及ぶコードの保守性の低さが問題となり、リファクタリングの必要性が浮き彫りになりました。

第1フェーズ:AIとともにコードを書く(そして壊れる)

生成AIによって、たった1週間で初期バージョンは完成。しかし、構造の整理がなされておらず、手を加えようにも全体の見通しが悪く、ちょっとした変更で壊れてしまう状態でした。ここで、AIによる「リファクタリング支援」に期待して作業を進めたのですが、結果は2週間を費やして失敗。

このとき明らかになったAIの構造的な弱点を、私は8つの特性として整理しました。

  1. 意図や設計構造を理解せず、局所的な修正に終始する(森を見ない)
  2. 段階的・履歴的な変更を保持できず、文脈が続かない
  3. 命名・責務の一貫性を維持できない(スタイルがぶれる)
  4. 副作用・テスト整合性を無視して壊すことがある
  5. 人間が補助者として使うべきところ、AIに任せすぎてしまう
  6. 存在しないAPIや構文(幻影)を自信満々に創造する(ハルシネーション)
  7. ルールに従うと言いながら守らない(ルール遵守の錯覚)
  8. 上位仕様書(神の設計)を無視して整合性が壊れる(マスター仕様の蒸発)

第2フェーズ:ゼロスクラッチと設計の再構築

そこで私は方向転換を決意。アプリの設計思想から練り直し、Vue/Piniaのストア構造を中核としたリアクティブなデータモデルに刷新しました。マスター仕様書を中心に、以下の文書群を整備し、AIとの作業に明確な基盤を与えました。

  • README.md
  • ARCHITECTURE.md
  • MIGRATION_GUIDE.md
  • data-structure.md

第3フェーズ:ステップ分解とコミット単位の成功管理

さらに、開発を以下の4つのステップに分割し、それぞれをAIと協働して取り組む方針としました。

  1. スペクトログラムの表示と制御
  2. データテーブルの表示と制御
  3. 両者の統合
  4. リファクタリング

step1とstep2では、やはりAIの健忘症や仕様逸脱が顕著に現れたため、毎回AIに仕様書を読ませ、何をするのかを自ら説明させ、成功したときはGitのコミットIDを発行してロールバック可能にする体制を整えました。これにより、step3の統合は一度の修正で成功。

step4のリファクタリングでは、再び過去の失敗が再現。AIは仕様を忘れ、存在しないAPIを使い、整合性を壊し、反省のような言葉を述べながらも前の失敗を繰り返しました。

学んだこと:AIとの共進化的開発スタイル

この経験から私が学んだ本質的な教訓は以下の5つです。

1. AIは“忘れる存在”であるという前提に立つこと

生成AIは状態や履歴を保持しません。だからこそ、何度も言わせてもよい。重要なのは、一貫性の担保はAIではなく人間の責任だという認識です。

2. 仕様書は“記憶の代替”であり、“AI自身へのルール”でもある

マスター仕様書とそれに従った下位仕様書が整合しているかを、AIに毎回確認させることで、「自らルールを守っている」という感覚をAIに強制的に持たせることができます。

3. リファクタリングは「自己検閲プロセス」を疑似的に構築

「この修正は本当に正しいか?」「破壊していないか?」を、AIに過去仕様を参照させながら検証させる。これはAIに“自分が嘘をついていないか”を自己検閲させるフェーズです。

4. ステップ分解がAIの“健忘症”への特効薬に

1つの目的を明確に与え、それを仕様とともに分解・定義・説明・実行・検証することで、AIの短期記憶的な性質を逆に活かすことができました。

5. AIはパートナーではあるが、“構造的な癖”を持った存在である

忘れる、嘘をつく、仕様を壊す。これらは生成AIの限界ではなく、特性です。つまり、それに合わせた“お作法”が必要なのです。

まとめ:AI時代の人間の役割

今回の経験を通じて、私はこう確信しました。

AI時代の人間の役割は、「仕様書を書くこと」ではなく、「設計意図と検証構造を編むこと」である。

100% AIコーディングを目指すなら、プロンプトの工夫では足りません。 設計の形式化、整合性の持続、分解とスナップショットによるフェーズ管理——それらを人間が担うことで、生成AIははじめて信頼可能なパートナーとなるのです。

以上です。

Article Info

created: 2025-07-17 22:07:47
modified: 2025-07-17 22:28:15
views: 17
keywords: スペクトログラム リファクタリング 生成AI アノテーション

Articles