人間として感じたAIの凄さとショボさ
概要
Claude codeとGoogle Geminiを使って、自身ではプログラムも設計書も1行も書かずにアプリを作った所感という記事で、Claude codeとGoogle Geminiを使ってアプリを作成たということをGoogle Geminiに書いてもらいました。今回は自分が思ったことを自分で書きます。長所についてはGeminiが散々持ち上げてくれましたので、違和感を覚えたり、ちょっと残念だったり、人間が工夫しないといけなかったりするところを上げていきます。
宵越しの銭は持たないAI
一番の違和感と残念な点がここ。昨日のことは全く覚えていない。昨日の続きの開発を行おうと思ったのに、全く違うフォルダに出力を始めたり、前日と全く整合性のない実装を始めたりで、人間が行うよりも酷い手戻りが発生していました。全記事で『手戻りなく、スムーズに動くものが出来上がりました。』とあるのは、あくまで一気通貫で最後まで行った場合です。
Claude codeで節約を考えずにガンガン実装していくと、Claude Opus4のリミットにすぐに達します。途中からClaude Sonnet4に切り替わりますが、連続して作業する分には、この程度の難度のアプリでは全く違和感なく、また差異のないプロダクトができあがります。一方で、一旦作業終了して翌日再開するとOpus4→Opus4であってもこのようなことが起こります。
従って、手戻りなく完成させるためには、一気に作り上げるか、少なくともログアウトすることなく立ち上げたままにしておく必要があると思いました。もしかしたら、筆者が無知でちゃんと記憶の保存方法があるのかもしれません。あったらぜひ教えて下さい。
スクラムはできない?
要件定義書と外部仕様書を渡すだけでほぼ完璧なものを作ってくれましたが。実は、外部仕様書をClaude codeに渡したとき、
「認証機能のみを実装してください」
と指示したのです。そして出来上がりましたというのを見たらすべての機能が実装されていたというのが実際のところです。あまり難度の高くないアプリなので、AIからしたら鼻歌交じりでもできます。いうなれば、ショパンコンクールに出るようなピアニストに、正しく椅子に座って、ドレミファソラシドを弾いてくださいと言っているようなものです。
仮に、要件定義や外部仕様が完璧なものであったら全く問題ないですね。むしろ一気に作ってくれたほうがいい。しかし、要件も仕様も完全ではないのに実装が始まるというのは現実世界ではよくあることです。また、スクラムのように細かくリリースするようなときも、最後までできている外部仕様書を読み込ませたら、勝手に最後まで作られてしまいます。ここは、どのように指示を出せばいいのか?あるいは、仕様書もスクラムごとに読ませればいいのかなど、私の研究課題です。
mainブランチしかいらない?
gitの管理も、mainブランチを順次コミットすればいいようなものとなってしまいました。最初は認証機能用ブランチを作ってみたのですが、次のプレイリスト表示機能以降も実装されてしまったので、マージして、ちょっと手直ししてまたマージで終わってしまいました。これも更に研究しないといけない・・・
まとめ
ということで、私自身の創意工夫の余地が増えたというのが正直な感想です。