AI時代のバイブコーディング

沖縄チームのキリです。AIを使った開発に興味を持ってから最近までは主にGeminiのチャットでバイブコーディングを行っていましたが、ついにClaude Codeのエージェントを使った開発がメインになってきました。

バイブコーディングを行い始めて感じたことは、AIは勝手に良い設計で実装を行ってくれることはほとんどないということです。要するにAIを使って良い実装を行うためには、AIに指示をする人が良い実装がどういうものか、悪い実装がどういうものかを知っているかどうかでコードの品質が大きく変わります。

幸いにしてAIを活用することで今持っていない知識を探すことが容易になってきました。意外と必要としている正しい情報を探すということは難しく、以前は『この情報を調べるために必要な情報がない』『分からないことが何なのかが分からない』と思うことがよくありました。今はAIモード検索でなんとなく概念や言葉の響きを覚えているけど具体的な名称が分からない事物を探しやすくなったので助かっています。※ただしインターネット上には誤情報も多くAIの回答に間違いがあることも頻繁にあるため、慎重に情報を見極める必要はあります。

このような感じで具体的な名称が分からないものを見つけられるので便利ですね。自分がよく知っているものごとに対して敢えてこのようなやり取りを行うことでAIの性能がどの程度信頼に足るものなのか検証するのも面白いかと思います。

さて、ソフトウェア開発における原則やリファクタリング手法を把握しておくことはAIを活用したソフトウェア開発においても役に立ちます。AIが一発で良い設計のコードを書いてくれることは稀です。「リファクタリングして」と大雑把な指示を出してよしなにやってくれればいいのですが、体感として既存の実装を大きく書き換えないためのセーフティが強く働き、具体的な指示を出さない限り一度生成されたコードに対してアーキテクチャの変更のような大規模なリファクタリングは行ってくれません。

設計の良し悪しを知っておくことでコードの不吉な臭いを察知し、以下のような具体的な指示を出すことができます。

  • 「if文のネストが深いため、早期リターンを使って整理してください」
  • 「クラス間の結合度が大きいため、依存性の注入を利用して疎結合にしてください」
  • 「将来的なDB変更に対応できるよう、アプリケーションサービス層を導入してリポジトリと明確に切り分けてください」

AI時代においては知識がなくともソフトウェア開発を行うことは容易になりましたが、それを制御する人間が学ぶことでより良い品質を保つことができます。むしろ人間のもつ知識の重要性はこれまで以上に増しているように思います。

参考記事