自宅のWindows PC(RTX 3060 12GB)上で、OllamaやBGE-M3、ChromaDB、FastAPIを組み合わせた完全ローカルの自律AIエージェント基盤を作ろうと思い立ち、Gemini Sparkとの壁打ちを交えながら開発を進めていた。 AIとの協働開発はとにかく速い。こちらが「こういう機能が欲しい」と大まかな構想を投げれば、数往復のやり取りだけでアーキテクチャの提案からサーバー実装、フロントエンドのコードまで一気に仕立て上げてくれる。最初のうちは「これはとんでもない時代になった」と興奮していた。 だが、機能が増え、システムが形を帯びてくるにつれて、背筋に冷たいものが走るような強烈な違和感に襲われることになったのだ。 直面した違和感の正体 「いま、自分の画面の前で動いているこのシステムは、本当に正しく動いているのか?」――それが、作った本人であるはずの自分にすら、まったく分からなくなっていたのだ。 1. ログをAIに投げて初めて「正常動作」を知る情けなさ 何が起きているのかが分からない。画面上でチャットを送信し、バックエンドのコンソールにずらりと流れるログを眺めても、どのモジュールがどういう順序でデータを渡し、どの判定を通って出力に至ったのか、頭の中に「見取り図」が存在しないのだ。 動いているのか止まっているのかの判断すらつかず、困り果ててターミナルのログをそのままGemini Sparkに貼り付け、「これって動いているの?止まっているの?」と問いかける始末だった。 AIから「出力されているログは正常です。現在の仕様では、この判定を通ってバックグラウンドでインデックス処理が走っています」と冷静に解説されて初めて、「あ、これで合っているんだ……」と知る。作ったはずの開発者が、自分のプログラムの仕様と現在地をAIに教えてもらうという、本末転倒な事態に陥っていたのだ。 2. 「丸投げ」がもたらすブラックボックス化の恐怖 なぜこんなことになったのか。原因は極めて単純だった。AIとの会話の往復回数を減らし、初速を優先するあまり、設計の意思決定も、内部のデータフローの把握も、すべてAIに「丸投げ」してしまっていたからだ。 単機能の使い捨てスクリプトなら、それでも何とかなる。だが、F...