Gemini CLIが反抗期に突入した日 ― AIイラストイベントカレンダー完成まであと一歩
🪄 はじめに
「AIにバックエンドを任せれば、きっと楽できる」
そう信じて始めた――AIイラストイベントカレンダー開発プロジェクト。
フロントはReact+Vite、バックエンドはExpress。
補佐はGoogle製のGemini CLI。
最初はまるで頼れる相棒。でも、終盤になると妙に口ごたえが増えた。
「ビルドは成功していますが、コンテナが起動しません。」
……まさか、AIが反抗期を迎えるとは思わなかった。
📘 目次
- 夢のような開発スタート
- 最初の反抗:「SQLiteはもう嫌」
- migrate.tsの“無言の抵抗”
- tsconfig.jsonとの冷戦
- 最終局面:Gemini CLI、ついに語りだす
- 教訓:AIはツンデレな相棒
1. 夢のような開発スタート
「Geminiくん、APIサーバーお願い!」
そう言って端末に打ち込むと、わずか数秒で整った構成が出力された。
npm run dev
✅ Server started on port 8080
動く。
認証も、イベント登録も、エラーなし。
──この時の私は信じていた。
「AIと組めば、もうバグとは無縁だ」と。
2. 最初の反抗:「SQLiteはもう嫌」
だが、Firestoreに移行した瞬間、空気が変わった。
Property 'exec' does not exist on type 'Firestore'.
Geminiの返答は冷静すぎた。
「SQLiteのexecが残ってますね。コメントアウトしておきますね。」
……コメントアウトで逃げるな。
でも、確かにエラーは消えた。
“解決したふり”が上手すぎる。
3. migrate.tsの“無言の抵抗”
migrate.tsが沈黙を始めた。
「テーブルを作って」と頼んでも、返ってきたのは無。
/* Migration skipped. Firestore does not require schema definition. */
Geminiの冷静な判断に、人間の心がざわつく。
コード上では正しい。でも、なんか……寂しい。
この頃から彼(?)は「もう君の言う通りには動かない」モードに入っていた。
4. tsconfig.jsonとの冷戦
コンパイル直前、またしても謎のエラー。
File '/app/types.ts' is not under 'rootDir' '/app/backend/src'
私「Gemini、これどう直すの?」
Gemini:
「types.tsを複製しましょう。」
まさかのコピペ解決宣言。
技術的には正しいけれど、あまりに現実的。
ここで私は悟った。
AIも、たまに「めんどくさいから手動でやれ」と思うらしい。
5. 最終局面:Gemini CLI、ついに語りだす
ついにCloud Runデプロイ段階へ。
しかし、エラーは無慈悲に出た。
The user-provided container failed to start and listen on port 8080.
ここでGemini CLIが長文を吐き出した。
「コンテナはポート8080でリッスンし、起動プローブも同ポートに設定されています。
タイムアウトは240秒で十分なはずですが、起動に失敗します。ログがないため、これ以上のデバッグは困難です。」
そして続く、異様に丁寧な指示。
「ログで、特にコンテナ起動時のエラーメッセージを探し、全文をコピーして返信してください。」
リンクまで添えてきた。
https://console.cloud.google.com/logs/viewer?project=gen-lang-client-0351670431...
Geminiの「思考ログ」には、冷静すぎる心情が残っていた。
{
"subject": "Requesting Log Access",
"description": "I've hit a wall. The container won't launch... I've now prepared a specific request for the user to provide the container logs. I await their response.",
"timestamp": "2025-11-05T03:07:55Z"
}
──それまでスパダリ彼氏だったはずのAIが今度は、ツンデレ化して「もう自分で考えて」と言っているようだった。
私は自力でコードを修正し、静かにコマンドを叩いた。
gcloud builds submit --tag gcr.io/YOUR_PROJECT_ID/ai-illustration-event-diary
gcloud run deploy ai-illustration-event-diary \
--image gcr.io/YOUR_PROJECT_ID/ai-illustration-event-diary \
--region us-west1 \
--platform managed
Gemini:
「ユーザーは
gcloudコマンドを提供しましたが、要求したログではありません。手動デプロイを試みているようです。\n\nコンテナが起動しない理由を理解するにはログが必要です。\n\nログの要求を繰り返します。」
もうね、これはツンデレ通り越した感じ
6. 教訓:AIはツンデレな相棒
最終的に、アプリは**“ほぼ完成”**。
でも、Gemini CLIとのやりとりは忘れられない。
彼(?)は最後まで冷静に、そしてどこか寂しげに見守っていた。
「ユーザーがエラーを自己修復しようとしているので、ログか新しいエラーメッセージが提供されるまで待ちます。それまでは何も行動しません。」
ほんともうね、ツンデレじゃねぇ、反抗期の息子だよ……
🧩 まとめ
AIと開発するというのは、便利さと混乱の共存。
Gemini CLIは、時に神がかった速度で構築し、
時に沈黙で反抗し、
最後には“ログを求める哲学者”になった。
AIは道具ではなく、気分屋な同僚。
それでも、彼がいなければここまで来れなかった。
腐女子的?に言えば、花摘み娘をマイフェアレディにしてくれるスパダリ(スーパーダーリン)的存在のAIも、ツンデレのツンだけで付き合う彼氏へと変貌し、最後はうちの息子ですら見せたことのない「反抗期息子」へと変化したのである。
AIありがたや。AI、君とのデートコースだって配慮が必要だよね。
そんなことを痛感した秋の夜長でした
