「不明事象」との戦い — AI駆動開発のデバッグ戦略

設計書に書かれていない74件の壁 — 番号管理と根本原因追跡の記録

設計書に書かれていない現実

前回の記事で、Playwright MCPを使った結合試験の自動化についてお伝えしました。51項目、272期待結果、100%合格。数字だけ見れば順調そのものです。

しかし、この「100%合格」に至るまでの道のりは、決して平坦ではありませんでした。設計書通りに実装し、試験を実行すると、設計書には記載されていない事象が次々と見つかるのです。

当社はこれを「不明事象」と呼び、通し番号を振って管理しました。MVP_01期間(42日間)で発見・解決した不明事象は、74件に上ります。

不明事象の管理方法

不明事象の管理は、シンプルなルールで運用しました。

  • 発見したら即座に番号を振る: 「不明事象-001」「不明事象-002」…と連番管理
  • 調査結果を記録する: 発見日時、再現手順、原因分析、解決策をMarkdownで記録
  • 解決したら設計書に反映する: 設計書の不備が原因であれば、設計書を改定する
  • Cipher MCP(メモリ永続化ツール)に記録する: 次のセッションで再利用するため

特に重要なのは3番目のルールです。不明事象の解決は「バグを直して終わり」ではなく、「設計書を正しい状態に更新する」ことまでが1セット。この「設計書フィードバックループ」が、プロジェクト全体の品質を底上げしました。

会話API冪等性保証 — 不明事象-059

74件の中で最も印象的だった不明事象を紹介します。

不明事象-059: 会話APIの冪等性保証

結合試験IT-API-CONV-001を実行中、同じメッセージを短時間に2回送信すると、会話履歴に重複メッセージが記録される現象を発見しました。

原因は、会話APIにリクエストの冪等性(同じリクエストを複数回送っても結果が変わらない性質)を保証する仕組みがなかったことです。設計書には「メッセージを送信する」とだけ記載されており、重複送信への対応は想定されていませんでした。

解決策として、フロントエンド側での送信ボタンの二重クリック防止と、バックエンド側でのリクエストIDによる重複チェックを実装しました。そして、この対策を詳細設計書と内部設計書の両方に反映しました。

AIが設計書を生成する際、このような「ユーザーの予期しない操作」への対策は見落とされがちです。実際に試験を通してこそ発見できる問題であり、だからこそ結合試験の自動化が重要なのです。

設計書フィードバックループの確立

不明事象を74件解決する中で、自然と確立されたのが設計書フィードバックループです。

  1. 実装: 設計書に基づいてコードを書く
  2. 試験: 結合試験を自動実行する
  3. 不明事象発見: 設計書にない問題を発見する
  4. 設計書改定: 設計書を現実に合わせて更新する
  5. 再実装: 改定された設計書に基づいて修正する

このサイクルを回し続けることで、設計書は「理想の姿」から「現実に即した正確な仕様書」へと進化していきます。

AI駆動開発では、AIが生成した設計書を「完成品」と見なしがちです。しかし実際には、設計書は「進化する文書」であり、実装と試験を通じて継続的に改善されるべきものです。不明事象の管理は、この改善プロセスを仕組み化する手段でした。

MVP_02 — 7日間の短期集中スプリント

MVP_01の42日間で基盤が固まった後、MVP_02はわずか7日間の短期集中スプリントで実施しました(2025年11月12日〜18日)。

MVP_02のスコープは以下の通りです。

  • トークン使用量表示: Gemini APIのトークン消費状況をユーザーに可視化
  • アイコン実装: キャラクターアイコンの表示・管理機能
  • DB設計書整合性確保: Flywayマイグレーション(V001〜V020)と設計書の完全整合性確認

7日間で完了できた理由は2つあります。

1つ目は、MVP_01で確立したフィードバックループが機能したこと。設計書が現実に即した正確な状態になっていたため、「設計書通りに実装すれば動く」状態が実現していました。

2つ目は、設計書と実装の双方向整合性検証をMVP_02の重要タスクとして位置づけたこと。Flywayの全マイグレーションファイル(V001〜V020)と設計書を突き合わせ、カラム追加(encrypted_initial_greeting等)を設計書に正確に反映しました。

結果として、システムテスト(ST-003〜ST-005)は100%合格を達成。設計と実装の乖離をゼロに保つことが、開発速度の向上に直結することを実証しました。

不明事象から学んだ教訓

74件の不明事象と向き合って得た、AI駆動開発における教訓をまとめます。

教訓1: AIは「正常系」が得意で「異常系」が苦手

AIが生成する設計書やコードは、正常系のフローは高い品質で生成できます。しかし、エッジケース(重複送信、タイムアウト、不正入力など)への対応は、人間のレビューと試験による発見が不可欠です。

教訓2: 設計書は「完成品」ではなく「進化する文書」

設計書フィードバックループを回すことで、設計書の品質は実装・試験のたびに向上します。初期の設計書に固執するのではなく、現実に合わせて柔軟に改定する姿勢が重要です。

教訓3: 不明事象の管理は品質投資

不明事象に番号を振って管理し、解決策を設計書に反映する。この地道な作業は、一見すると非効率に見えます。しかし、MVP_02以降の開発速度を見れば、この投資が確実にリターンを生んでいることがわかります。

次回予告

次回は、Gemini APIを組み込んだAIチャット機能の実装記をお伝えします。キャラクターとの自然な会話を実現するためのプロンプト設計、トークン消費の最適化、そしてMagic Link認証への全面移行。MVP_02からMVP_03にかけての技術的挑戦の記録です。


本記事は2025年11月時点の情報に基づいています。

著者: 株式会社シーテン — インフラ系から宇宙関連システムまで20年以上の開発経験を持つ技術者集団。2025年より生成AI・AIエージェントを活用したAI駆動開発に本格参入し、自社プロダクト「wagahi」の開発を通じて実践知見を蓄積中。

関連記事:

投稿者プロフィール

Mark4
Mark4