前捌きを説く男が、「またもや」前捌きを忘れていた話。

生成AI・DX

はじめに

「前捌きが大事です」と、普段から言っている本人が、AI開発の現場では前捌きを忘れていました。

以前「前捌きを説く男が前捌きを忘れた話。」というタイトルで一度失敗談を書いていますが、今回はその「またやっちまった」編です。

第一幕:GASだからGemini

最初の判断が、これでした。

GASでアプリを作るならGemini。理由は、同じ「Google社製」という脊髄反射、ほぼそれだけ。

今思えば、業務要件ではなく、ツール名で担当AIを決めたことがそもそもの誤りです。ただ、以前にGASでNDLの見積自動作成アプリを作った際、スムーズに良いアプリを完成させることができました。

安易に、二匹目のドジョウを狙ってしまった。みっともない構図です。

第二幕:Geminiとの共同作業

Geminiと壁打ちしながら、コードを書いていく。悪くない。むしろ、かなり頑張ってくれる。

だが、今回は建設業やリフォーム会社向けの「見積履歴アプリ」のプロトタイプ。前回とは比べものにならないほどのファイル数です。進めるに連れて、またそれが増えていく。

そしてそのファイル同士の依存関係、新旧ファイルの差分、Gitでのバージョン管理、デプロイ、実機確認——ここまで含めると、Geminiが生成したコードを目検して誤りがないようにコピペするという、人間側の「伝書鳩としての負荷」がどんどん増えていく。

第三幕:未定義関数によるAPIエラー

APIエラーが頻発する。ログを確認すると、getCurrentDateTime generateID」。そう、存在しない関数が、呼ばれている。原因を監査させても「GASの強固なキャッシュのせい」などと、凡そ間違った推論に走る。

ここで、はたと気づきました。数ファイルに分かれた膨大なコードを、同じチャット内でずっと続けて書いているGemini。コンテキストの圧縮もあるが、そもそもの基本設計を見失って、局所最適化に走っているのではないか。

「AIが間違えた」のではない。ファイルとファイルの連関をすべて把握できる構造にしていない。そう、AIが現物全体を見られる運用になっていなかったのです。

どのファイルのどこを修正すれば、どこにどう影響が出るか。私にも、Geminiにも判らなくなっていたのです。

第四幕:Claude Code投入

Claude Codeを投入することにしました。

実装を始める前に、「README.md」で目的を、「CLAUDE.md」で開発に関するルールを、「architecture.md」で技術仕様を、開発思想その他、とにかく可能なものはすべてマークダウンに落としました。そう、人間である私も含め、それに則って開発に当るようにです。

既存18ファイルを監査させる。コードの変更は禁止、まず診断だけ。P0、P1、P2、P3にフェーズを分離する。

探索はできるだけ広い範囲を見させ、修正は狭い範囲で提案させる。発見はとにかく自由にしてもらって、変更は許可制にする。

ひとつひとつ、「ここまで探索し、改善案を提案したら止まってください。コードはまだ書かないでください。」と指示を出す。

第五幕:たった2箇所

長い準備を経て、全ファイルを探査させました。結果はこうです。

直すべき箇所は、たった2つ。

UUID。見積システムの共同管理や同時入力に対応できるよう、すべての見積明細に一意識別子を付けていました。その一部が定義されていなかった。

Setup.jsの実績スキーマ。初期データ作成用のセットアップ内容に、将来入力されるであろう実績のスキーマが定義されていませんでした。「とりあえずダミーでも入れておこうか」がそのまま放置された結果です。

Claude Codeは、Google Drive上のGASファイルを直接は触れません。そのため、自社サーバー側にいったん同じ構成のファイルを複製し、そこで修正と動作確認を行いました。18ファイル分を複製し、直した2箇所を含めて問題がないことを確認したら、PushしてGAS側へ反映する。最後は、実機で私自身が目視確認する。

docsを更新し、「changelog.md」に変更内容を書き、コミット。積み残した課題はClaude Codeのメモリに記憶させておく流れです。

つまり、前捌きとは

前捌きとは、AIに賢く働いてもらうための、前準備です。

あらかじめ、「この開発は何のために、どういうルールで、どのような技術をもって、いつまでに、どのような最終形態にするのか」までをしっかりと決め、人にもAIにも分かるかたちで記述する。そこを逸脱するのであれば、その理由を記して記録に残す。面倒だが、全工程を同じルールで進めていく。

AIを責めず、構造を見る。

いや全ては、管理監督者である私の前捌き不足でした。

まとめ

  • ツール名で担当AIを決めると、業務要件を見落とす
  • AIとの壁打ちが快調でも、人間側の「伝書鳩負荷」は別問題として残る
  • AIのミスに見える現象は、AIが全体を見られない運用側の設計不足であることが多い
  • 修正の前に、まず範囲を絞った診断(探索は広く、修正は狭く)を挟む
  • 前捌きは、人間のためだけでなく、AIが賢く働くための前準備でもある

編集後記

今回、一番情けなかったのは、GASを書くならGeminiだろうという最初の判断です。ツールの相性ではなく、ツール名だけで担当を決めていた。前捌きを説いている本人がこの体たらくです。

それでも、未定義関数から始まった一連の混乱のおかげで、「探索は広く、修正は狭く」という運用ルールにたどり着けた。失敗のたびに一つ賢くなるなら、悪い一日ではありません。そして「伝書鳩」を務めている間に、コードの内容も理解が深まっていきました。

ここまで書いておいて、「たぶんまた忘れる。」(笑)


関連するNDL語彙:[前捌きとは] [ニューロデザインとは] [認知負荷とは]

コメント

タイトルとURLをコピーしました