「AIにいい感じにコードを書いてもらう」そんな夢のような開発スタイル「Vibe Coding」。最近、技術界隈でよく耳にするこの言葉、気になっている方も多いのではないでしょうか。
私もその一人でした。少し乗り遅れていますが、「そろそろそ試すか!」と、早速GitHub Copilotの機能「GitHub Copilot Agent」を使って、Vibe Codingに挑戦してみることにしました。しかし、結論から言うと、この試みはたった1週間でクレジットを溶かし尽くすという、見事な失敗に終わりました。
今回は、自分の失敗談を赤裸々にお話しすることで、同じ轍を踏む人が一人でも減ることを願い、この記事を執筆します。
そもそもVibe CodingとGitHub Copilot Agentとは?
本題に入る前に、今回の主役となる2つのキーワードについて、簡単におさらいしておきましょう。
Vibe Codingとは?
Vibe Coding(バイブ・コーディング)とは、一言で言えば「雰囲気でコーディングする」スタイルです。開発者は細かな実装を一行一行書く代わりに、AIに対して「こんな感じの機能を作って」「この部分をいい感じにリファクタリングして」といった、自然言語による直感的・抽象的な指示を与え、コーディングの大部分をAIに委ねる開発手法を指します。OpenAIの共同創設者であるAndrej Karpathy氏が提唱したことで注目を集めました。
GitHub Copilot Agentとは?
GitHub Copilot Agentは、従来のGitHub Copilotがコード補完ツールだったのに対し、より自律的にタスクをこなす「AIエージェント」です。単一ファイルの編集だけでなく、リポジトリ全体を理解し、自然言語で指示を与えるだけで、バグ修正、機能追加、テストコードの生成などを自動で行い、プルリクエストまで作成してくれます。まさにVibe Codingを実践するための強力なパートナーと言えるでしょう。
なぜVibe Codingを試そうと思ったのか
理由は単純で、「流行っているから試してみたかった」からです。SNSや技術ブログで「Vibe Codingで爆速開発!」といった景気の良い話を目にするたびに、「このビッグウェーブに乗り遅れるわけにはいかない」と感じていました。
AIに大部分を任せて、自分はより創造的な設計やアイデア出しに集中できるなんて、なんて素晴らしい世界なんだろう。そんな淡い期待を胸に、GitHub Copilot AgentとのVibe Codingをしてみました
期待から絶望へ、そしてVibe Codingの落とし穴
意気揚々とCopilot Agentに「ユーザー認証機能、いい感じに作っといて!」とか「XXXの機能をDDDで作って!」といった、まさに”Vibe”な指示を投げかける日々。最初は順調に見えました。AIは驚くべきスピードでコードを生成してくれます。
しかし、その夢のような時間は長くは続きませんでした。わずか1週間ほどで、GitHub Copilot Agentのクレジットが底をついたのです。
なぜクレジットは瞬く間になくなったのか?
原因は、あまりにも「ふわっとした指示」にありました。
Vibe Codingのつもりで行っていた抽象的な指示は、Copilot Agentに大量の中途半端なコードを生成させてしまったのです。例えば、「ユーザー認証機能」という指示だけでは、使用するライブラリ、認証方式(パスワード、OAuthなど)、エラーハンドリングの仕様といった重要な情報が欠けています。
その結果、Copilot Agentは「とりあえず動くかもしれないけれど、実用には耐えないコード」を量産。私はその中途半端なコードを理解し、修正するために、さらなる指示をCopilot Agentに出すという悪循環に陥りました。
「さっきのコード、JWT認証に対応させて」
「やっぱりここのエラーメッセージはこう変えて」
「あ、テストコードもお願い」
一つの指示がまた新たな指示を呼び、そのたびにCopilot Agentは思考し、コードを生成します。この無駄なラリーの繰り返しが、貴重な時間とクレジットを猛烈な勢いで消費していったのです。
失敗から学んだ結論『AIには「具体的に」伝えよう』
この手痛い失敗を経て、一つの結論に至りました。それは、「GitHub Copilot Agentのような高度なAIを使いこなすには、Vibe(雰囲気)ではなく、具体的で詳細な指示が不可欠である」ということです。
AIは魔法の杖ではありません。あくまで私たちの指示に基づいて動作するツールです。最高のパフォーマンスを引き出すためには、私たちが「何を」「どのように」作ってほしいのかを明確に伝える必要があります。
具体的には、以下のような情報を指示に含めることが重要です。
- コードの目的: このコードは何を達成するためのものか?
- 要件: どのような機能や仕様を満たす必要があるか?
- 制約条件: 使用するフレームワーク、ライブラリのバージョン、コーディング規約などは何か?
copilot-instructions.mdの活用
さらに、リポジトリ全体に共通する指示を与えたい場合は、.github/copilot-instructions.md
ファイルを作成するのが非常に有効です。ここにプロジェクトの概要、使用技術、コーディングスタイルなどを記述しておくことで、Copilot Agentは常にその文脈を理解した上で、より精度の高いコードを生成してくれるようになります。
# このリポジトリについて
これはReactとTypeScriptを使用したウェブアプリケーションです。
# 技術スタック
- フレームワーク: Next.js
- 言語: TypeScript
- スタイリング: Tailwind CSS
- テスト: Jest、React Testing Library
# コーディングスタイル
- Airbnb JavaScript Style Guideに従ってください。
- コンポーネントのファイル名はPascalCaseで命名してください。
- すべてのエクスポートされた関数にJSDocコメントを追加してください。
上記はcopilot-instructions.md
の記述例です。
このような具体的な指示を与えることで、AIとの無駄なやり取りを減らし、クレジットの消費を抑え、本当に価値のあるコードを効率的に生み出すことができるのです。
流行りに乗る前に、まず考えよう
今回の失敗談が、これからVibe CodingやGitHub Copilot Agentを試そうとしている方々への一つの教訓になれば幸いです。
流行りの技術に飛びつくのは素晴らしいことですが、そのツールの特性を正しく理解し、どうすれば最も効果的に使えるかを考えることが、その恩恵を最大限に受けるための鍵となります。
Vibe Coding自体が悪いわけではありません。しかし、その「Vibe」をAIに正しく伝えるためには、私たち人間にこそ、明確なビジョンとそれを言語化する能力が求められるのです。
皆さんもGitHub Copilot Agentを使う際は、ぜひ「具体的で詳細な指示」を心がけてみてください。そうすれば、きっとクレジットを無駄にすることなく、最高のAIペアプログラマーとして、その真価を発揮してくれるはずです。
参考

コメント