「バイブコーディング」で始めるAIエージェント開発

# はじめに

最近「バイブコーディング」という言葉を耳にするようになりました。これは、TeslaのAI開発者であり、OpenAIの共同創業者であるAndrej Karpathy氏が提唱している概念として知られています。
コード作成を生成AIに任せることで、アイデアや感性といったバイブにを重視してソフトウェアを開発していくことを指しています。
私も先日、助成金を自動検索してくれるエージェントシステムのプロトタイプを開発する中で、このバイブコーディング的アプローチを自然に取り入れていました。

本記事では、バイブコーディングを交えながらエージェント開発を行なってみたプロセスと得られた知見を共有します。


https://x.com/karpathy/status/1886192184808149383


作成したエージェントの詳細については別記事にて詳しく紹介しています。

https://qiita.com/HirotoYsmr/items/df6185c93c34be7d23bf


# エージェントの構想

まずは「どのようなエージェントを作りたいのか」をざっくりと構想します。
私の場合は助成金情報を自動で検索して収集してくれるエージェントが欲しかったので、次のように進めました。

### 1. リサーチ
- ChatGPTやPerplexityなどの「deep research」機能を使い、AIエージェント構築用のライブラリを調査
- 大まかな構成に必要なパーツ（クローリング機能、データ解析、自然言語処理など）を洗い出す

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936827/b04e921a-1c77-4795-a6dc-c09cfa903ff0.png)


### 2. エージェント構成の具体化
- ライブラリが決まったら、エージェントがどのようなステップで情報を取得・処理・出力するかを検討
- ただし複雑な構成をテキスト入力で詰め込むのは面倒だったので、ChatGPTの advanced voice modeを活用
- リアルタイムでフィードバックをもらいながら「カスタムツールの設計」「ライブラリの使い方」を検討

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936827/8e9343f2-c79f-45e1-b180-da75a83d681c.png)


 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936827/2c63a544-9de1-4e5c-9766-a594f5f1f957.png)

### 3.コード生成のためのプロンプト設計
- 大まかな要件と構成が固まってきたら、コードを生成させるためのプロンプトを作成してもらう
- advanced voice modeが使えるモデルだとコード生成精度は低いので、プロンプトを作成させてコード生成が得意なモデルに投げる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936827/51bcfe56-0115-4f2c-842b-e3e5fb6be7e3.png)




# コード作成

次に、実際のコードを作成していきます。
この時も、大半のコードは生成AIに記述してもらい、自然言語で追加実装や修正を依頼していく形をとりました。

### 1.	複数モデルの併用
設計が固まったら、o3-mini-high や Claude-3.7 などに投げてコードを生成してもらいます。あるモデルだとうまく書けない部分が、別のモデルだとうまくいくこともあるので、メインで使うモデルを決めつつ、併用していくのも良いかと思います。
生成されたコードは即動作確認し、エラーや期待値との差があれば修正を依頼します。

### 2.	ClaudeのProject活用
ClaudeにはProjectという機能があり、複数ファイルを包括的に参照しながら回答してもらえます。
チャットを切り替えても、毎回背景情報を入力しなくて良くなるため、ファイル数が多い開発には非常に便利です。
gemini-2.5-proが出てからは、100万トークンのロングコンテキストに全て突っ込むという力技ができるようになったため、そちらも愛用していました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936827/04f406a3-48a7-4c01-8bc3-7fefef06c40a.png)

 
### 3.	マニュアルやドキュメントの自動参照
検索機能の併用だけでは、なかなか階層を掘って必要な情報に辿り着けないことがあります。たとえばGoogle ADKのマニュアルのようにGitHubに公開されている場合、リポジトリをまるごと生成AIに読み込ませれば、あらかじめドキュメントを参照したコード提案を得ることができます。


## 3. バイブコーディングの課題

便利な反面、以下のような課題もありました。

### 1.	検索能力とコード生成能力の両立が困難
開発を始めた頃は、コード生成能力が高いモデルは検索機能がないといったトレードオフがありました。
エージェントのライブラリのように日々開発が進んでいるようなライブラリだと、最新バージョンに対応した回答が得られず、手動で再調査が必要になる場合もありました。
ただし、執筆時点ではclaudeやo3が検索しながらコード生成できるようになっているので、この課題は解消されつつあります。

### 2.	チャット内のトークン数・文字数制限
複数ファイルにまたがるようなコード生成だと、入出力トークン数が大きくなりがちです。特にClaudeではチャット全体の文字数制限に引っかかりやすく、途中で回答が途切れてしまうこともありました。
このようなケースでは、o3やgeminiのようなロングコンテキストモデルが重宝します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3936827/ed8d7e80-1c37-442a-bfeb-f1a1b3932a9b.png)

 
### 3.	誤った方向への修正が続く
一度エラーに対して、**モデルが誤った修正方針を立ててしてしまうと、その後方針転換させようとしても固執してしまい、うまく修正できなくなる**ことがありました。
方針転換ができない場合は、新しいチャットを立ち上げてリセットするなどの対処が必要になります。

### 4. 複数の修正指示への対応に対する精度低下
修正したい箇所が複数ある場合に、一度に指示してしまうと抜け漏れが生じたり、正しく修正できない場合がありました。
一つずつ順に直していくことで軽減できましたが、前回修正した箇所が元に戻ってしまうことなどもあり、**生成AIの提案のどれを取り入れてどれを残すかの取捨選択が必要**でした。


# バイブコーディングで開発するメリット

課題もある一方で、バイブコーディングでエージェントを開発する大きなメリットとしては以下が挙げられます。

### 1. 試作・失敗が気軽
何かを新しく作ろうとする時、何もないところから書き始めるのと、ある程度のものがあって修正をかけていくのとでは、取り組みのハードルが段違いです。やや複雑なコードであっても、生成AIが骨格を作成してくれることで、「とりあえず試す」スピードが上がります。

加えて、一度作ってみたものの方向性が良くなかった場合に、ゼロから再度作り直すという**スクラップアンドビルドのコストが大幅に下がる**のも開発効率アップの大きなポイントだと思います。

### 2. 学習コストの軽減
新規ライブラリを扱う時、何ページもあるドキュメントを精読するハードルに挫折したことがある人も多いのではないでしょうか。ロングコンテキストモデルやproject機能などを使い、複数ファイル・リポジトリ・マニュアルをまとめて入力することで、自分で読まずともコードを生成できたり、修正するために読むべき場所を簡単に見つけられたりと、学習コストを大幅に削減できます。

もちろん最終的なプロダクトを作り込んでいくためには、作成者自身もコードを正確に理解する必要がありますが、このライブラリで作ってみたどうなるんだろう？といったプロトタイピングのコストは大きく低下します。


# おわりに

高性能な生成AIが登場したことで、プログラミング言語に精通していなくても、複雑性の低いプログラムなら自然言語だけで簡単に作成できる時代になりつつあります。
さらに、CursorやDevinなどのエージェント組み込み型コーディングツールが普及し始め、大規模・複雑なプログラムの作成もほぼ自動化できる未来が見えてきました。

とはいえ、AIが修正しきれないエラーの対応や、意図した挙動になっているかどうかを検証するには、ある程度のプログラム理解や技術的知識が依然として必要です。
プログラミングがAIによって完全に代替されるというよりは、「AIを使いこなし、開発スピードを大幅に上げる」というのが現在の状況かと思います。
結果として、コード実装に対する上流工程の構想や設計の重要度が増してきてい。　

もし「こんなアプリがあれば良いのに」といったアイデアがあれば、ぜひ生成AIを活用して形にしてみることにトライしてみてはいかがでしょうか。

# 参考

https://zenn.dev/aoyamadev/articles/7befbf4f5a0448
    
https://qiita.com/Nakamura-Kaito/items/382273931a8c1b345a17