🤦

爆速AI開発に憧れたがうまくAIを使いこなせなくて絶望した話

に公開

背景

インフラ業務であるアプリのインフラまわりをAWSで構築していたが、それをterraformでコード化することになった。
上司から、せっかくだからとclaude codeの使用許可をもらったので、それを利用してterraformを構築することとなった。

ちなみに以下のような状況である。

  • インフラは自身でAWSコンソール上で構築したもの
  • terraform経験0
  • AWS経験2ヶ月くらい
  • 主な対応内容
    • AWSコンソールの内容をimport
    • importしたらterraformのモジュール化や共通化等を行う
    • そしてコンソールと差分がないことを確認する
    • コンソール上での設定不備があった場合はterraformから反映していく

使用したAIについて

  • Claude code
    • 主となるAI
  • gemini
    • セカンドオピニオンとしてclaudeの会話を添付して「これあってる?」って聞いています。

AIを使ってみて

タイトルのとおりで、自分には上手く使いこなせないなという感想を抱いた。
AI使ってコードはAIに全て任せて爆速開発!!を10とすると、3くらいしか使いこなせていない気がしている。
自分が0から自力で知識を得ながら開発するのとそう変わらないか、むしろちょっと遅いのではと思うこともあった。

どの点において使いこなせないと感じているのか

開発に時間がかかりすぎている気がする。

自分は開発スピードがゆっくりめである。ここ数年それは実感していて、AIに活路を見出そうとしていた。
そして、よく技術ブログでバズっているようなAIで爆速開発、のようなものに夢見ていた。
しかし実際には開発そっちのけで質問攻めをするモンスターが誕生しただけであった。
その結果、自力で開発するのとほぼ同じ、あるいはちょっと速いくらいの回ハウtスピードとなった。

CLAUDE.mdを育てていない

claude codeにはCLAUDE.mdを書くことで、開発における背景や規約を理解するためのファイルがある。
そしてそれがclaude codeの主要機能だと思っていい。しかしながら私は、初回起動時で生成して以降、そこまで手を加えていなかった。
強いて手を加えたなら、"日本語で答えてください"であるとか"mcpに接続して回答してください"といった簡単なものだった。
terraformはインフラの設定ファイルみたいなものなので、そこまで複雑な仕様を持った言語ではない。なので、言語仕様的にはAI向きなのではと、開発前は考えていた。
実際、claude codeに疑問をなげたら簡単に答えたが返ってきたし、解答の内容も複雑ではなかった。
なので1つのリソースが完成すればほかのリソースを開発することくらいはclaude codeなら簡単にできると思われる。しかし私はCLAUDE.mdを編集することなく場当たり的な対話に終始していたため、claude code固有の恩恵みたいなのは得られなかった。

望む答えが得られない気がする

MCPを使って最新情報を教えてとCLAUDE.mdに書いたものの、MCPを参照することなくclaude codeの中の最新情報(古い)を提示することが多かった。
それと、少し脱線した情報を投げたあとに、本題に戻ろうとしたら脱線した情報に引っ張られてほしい回答を得られなかった

  • あるエラーの原因を知りたくてclaude codeに質問をする
  • そのエラーと並行して出力されているwarningについても質問する
  • warningについての理解はできたのでエラーの対処法を尋ねると、warningの対処法を解説してくる

答えに対する疑問を投げかけ過ぎる

AWSもterraformもよくわからないため、claude codeの回答も自分にはうまく理解することができなかった。
そのため、回答のなかの些細な言葉を掴み取って、この意味はなんですか?とか、なぜこんなことをする必要があるんですか?といった、詰めまくるパワハラ上司並の質問攻めをしがちになる。
そうすると本来開発をしなければならない時間が減ってしまい、質問だけで時間を浪費してしまう。
結果的に開発の終了した現在はそのおかげである程度理解が深まっているが、普通の開発者は些細なことを気にせず開発作業に邁進するんだと思う。

どうすればよかったのか

CLAUDE.mdを育てる

ひととおり作業が終わったら、CLAUDE.mdにclaude codeでやってほしいことを逐一メモをとるべきだった。
今回の開発でやっていることは数年前のchatGPTに投げかけるスタイルとほぼ変わらない開発方法だった。

ある程度の編集、権限を許容するべきか

私は他人の書くコードや考えた仕様を理解するのがあまり得意ではない。
そのため、いきなりあるファイルを複数行まとめて編集しようとしたり、bashコマンドを叩いたりすると、意図を汲み取れなくて混乱してしまう。
なので、claude codeが編集しようとしたら私は作業を中断させ、何をしようとしたのかclaude codeに質問する。
結果的にはclaude codeと同じ内容の編集を私が行い、bashコマンドの実行をするのだが、もっとAIに頼って作業を任せても良かったのかもしれない。AIの編集を信頼していなかった。

話半分で聞いて開発することを軸に行動する

振り返ってみると、AIと対話することに終始して開発がおろそかになっていることが多かった。
リアルに置き換えると、会話に夢中になって手を動かせていない状況に陥っていた。
AIなし開発と比べて、ググる時間が減るので開発に割ける時間が増え、工数短縮につながるはず、だと思われたが
自分の場合はググっていた時間がそのまま会話の時間にスライドされ、開発工数の短縮には直接的につながらなかったのだと思われる。

AI開発においてはなおさら、手を動かすことを軸に開発をしないといけない。。。と、記事を書きながら今更猛省している。
やはりAIを使いこなす人はもとから手を動かせる人であり、手を動かせないものはAIを使っても手を動かせないのだ。

おわりに

今回の開発のなかで、AIがないと生きていけない体になってしまった。
ただ、自分のAIの使い方がまだまだ未熟であることは明白なので、今後の開発で私の未熟な部分をどうにか改善していきたい。

Discussion