バイブコーディングのヒントとコツ
Note この分野は急速に進化しており、新しい手法や推奨事項が登場するたびに本ガイドを更新していきます。
目次
バイブコーディング
こちらで説明されているように、バイブコーディングとは、ユーザーが自然言語でプロンプトを入力してコードを生成する、ソフトウェア開発のモダンなアプローチです。
バイブコーディングは、連携して機能するいくつかの主要な要素で構成されます。
- プロンプト: コーディングのプロセスを導くために提供される、最初の指示とコンテキスト
- クライアント: ユーザーがコーディングシステムと対話するためのインターフェース。たとえば Kiro や Cline など
- 追加のコンテキスト: AWS 向けの MCP サーバーを使用するなどして追加のコンテキストを提供することで、エージェントの能力を強化できます
重要な点として、コーディング AI はあなたの生産性向上を支援することを目的としているものの、開発者を置き換えることを目指しているわけではありません。製品のアーキテクチャとビジョンはあなたが所有します。開発者であるあなたは、行われるすべての技術的判断を理解し、レビューし、検証することが求められます。AI はあなたの能力を強化するためのツールであり、あなたの批判的思考や専門知識を代替するものではありません。コードの品質、アーキテクチャの選択、技術的判断に関する責任は、依然として人間の手にしっかりと委ねられています。AI の責任ある利用については、このガイドを参照してください。
Warning AI アシスタントが生成したコードを盲目的に信頼してはいけません。常に以下を実施してください。
- 生成されたコードを徹底的にレビューし、理解する
- すべての依存関係を検証する
- 必要なセキュリティチェックを実施する
- 管理された環境でコードをテストする
AI 開発クライアント
- 選定基準: AI 開発クライアントを選定する際は、コンプライアンス、セキュリティポリシー、承認済みベンダーリストなど、組織の要件を考慮してください。価格や IDE との統合といった技術的な側面も、判断における重要な要素です。
- クライアントの機能を活用する: 各クライアントには、ワークフローを最適化するための独自の特徴があります。たとえば Cline では、まず Plan モードから始めて、実装の詳細を明確に理解できるまで議論し、練り上げます。計画を十分にレビューしてから Act モードに移行してください。こうすることで、コード生成が合意済みのアプローチに沿ったものになります。ドキュメントやリリースノートを定期的に確認して、選んだクライアントの新機能やアップデートについて常に把握しておきましょう。
- 機能の互換性: 各クライアントは、それぞれ異なる MCP 機能(Tools、Resources、Prompts。MCP クライアントを参照)をサポートしています。たとえば CDK MCP サーバーを使用する予定がある場合は、選んだクライアントが Tools と Resources の両方の機能をサポートしていることを確認してください。
- マルチクライアント戦略: 単一のクライアントに限定する必要はありません。クライアントによって得意なタスクは異なります。たとえば、バックエンドや CDK の開発には Cline を使用し、権限、ネットワーク到達性、セキュリティグループルールに関する AWS のトラブルシューティングには Kiro CLI を使用する、といった使い分けが考えられます。
- MCP サーバーの選定: 利用可能な MCP サーバーの数(40 以上、そして増加中)に圧倒される必要はありません。自分の具体的なニーズやユースケースに合致するものだけに注目してください。それらのドキュメントを慎重に確認し、選定プロセスの一環としてテストを行いましょう。
要件と設計のガイドライン
コーディング作業を始める前に、以下の重要なステップに従ってください。
- プロジェクトの要件とスコープを明確に定義する
- 包括的な設計ガイドラインとコーディング規約を確立する
- すべての制約や制限事項を文書化する
- クライアントがアクセスできるよう、収集した情報をまとめた Markdown ファイルを作成・維持する
- 上記のステップを完了してからコーディングのプロセスを開始する
AI アシスタントと対話しながら、特定の機能やプロジェクトの要件、アーキテクチャ、設計、タスクの定義を進めることができます。このステップは非常に重要です。というのも、実装フェーズで AI アシスタントにとって重要な情報を提供するからです。ただし、AI はあくまで協働のためのツールであり、主要な意思決定者ではないことを忘れないでください。
明確な要件と適切に定義されたタスクは、AI アシスタントがより適切なコードを生成するのに役立ち、手作業による介入の量を減らすことができます。とはいえ、生成されたすべてのコードを徹底的にレビューし検証するというあなたの責任が軽減されるわけではありません。
これらのドキュメントの作成を AI アシスタントだけに頼らないことが極めて重要です。プロジェクトのオーナーとして、あなたはすべての技術的な側面を管理し、理解しておかなければなりません。情報に基づいた意思決定を行うには、あなたのドメイン知識、経験、そして判断力が不可欠です。AI アシスタントは、批判的なフィードバックを提供するよりも提案に同意する傾向を示すことがあるため、やり取りは断定ではなく質問の形で行うことをお勧めします。このアプローチは、より実りある対話を促し、潜在的な問題や代替となる解決策を浮かび上がらせるのに役立ちます。
プロンプティング
効果的なプロンプティングは、AI 支援による開発を成功させるうえで極めて重要です。
- 実施すべき作業について詳細な仕様を提供する
- 必要に応じて関連するコンテキストやファイルを含める
- レビューとテストを容易にするため、特定のタスクにプロンプティングを戦略的に適用する
- より良い結果を得るために、大きなタスクを小さく焦点を絞ったサブタスクに分解する
プロンプトの作成には、以下を活用できます。
- Amazon Bedrock Prompt Optimization のようなツール。ユースケースにより適した推論結果が得られるようにプロンプトを書き直してくれます
- メタプロンプティング。まず AI アシスタントと機能について議論し、その議論をエージェントが機能を開発するためのプロンプトとして要約する手法です
テストと検証
以下を通じて、コードの品質と信頼性を確保します。
- 各変更のインクリメンタルなテスト
- 可能な限りの自動テストの実装
- 元の要件との照合による検証
- 包括的なテストスイート(CI/CD)の維持
- 定期的な自動セキュリティ・品質スキャン
一般的に、ユニットテストの生成を AI コードアシスタントだけに頼っても、良い結果は得られないことが分かっています。アシスタントは、適切なテストカバレッジや意味のある検証を確保することなく、既存のコードを単に追認するだけの表面的なテストや無関係なアサーションを作成してしまうことがあります。
自分自身でテストケースを作成し、テスト駆動開発のアプローチを採用することを強くお勧めします。あなたが用意したテストケースに基づいてテストを実装する作業には AI アシスタントを活用できますが、これらのテストケースを定義するのはあなたであるべきです。オーナーであり監督者であるあなたは、ビジネスロジック、エッジケース、そしてソフトウェアが本来何をすべきかを理解しています。アプリケーションの動作を真に検証する効果的なテストシナリオを設計するには、あなたのドメイン知識と要件への理解が不可欠です。
人間の開発者は、各テストケースが意図した機能を適切に検証し、エッジケースを適切に処理し、テストスイート全体の品質を維持していることをレビューし、確認しなければなりません。効果的なテストには、ビジネス要件と技術的実装の両方に対する深い理解が必要であり、これは現在の AI アシスタントには完全には再現できないものであることを忘れないでください。
ドキュメント
以下によって、高品質なドキュメントを維持します。
- 行ったすべての変更を文書化する
- クライアントが適切なコードドキュメントを生成するようにする(例: コード内の Python docstring や README に記載する文書)
- ドキュメントをコードの変更に合わせて最新の状態に保つ
AI とのドキュメント共同作成
AI とともに複数のドキュメントを作成し、一緒に変更を加えるたびに AI にそれらを更新させることができます。たとえば、計画時にデータベーススキーマを定義し、AI に ERD 図を作成させることができます。レビューして変更したいと思ったら、ドキュメントとコードの両方を更新することを忘れないでください。この協働的なアプローチは、API 設計やネットワークアーキテクチャなど、プロジェクトのさまざまな側面に適用できます。重要なのは、ドキュメントを意味のある単位で分割し、最新かつ簡潔に保つことです。そうすることで、あなたと AI の双方が明確なコンテキストと制御を維持しやすくなります。
ヒント: よく整理されたドキュメントは、プロジェクトのライフサイクル全体を通じて、あなたと AI アシスタントの双方にとってのコンテキスト維持に役立ちます。
制限事項
MCP サーバーとツールの数
- MCP サーバーやツールの数が過剰になると、クライアントのパフォーマンスに悪影響を及ぼす可能性があります
- ベストプラクティスや制限については、お使いのクライアントのドキュメントを参照してください
会話の管理
- 長い会話は、コンテキストサイズの増大によりクライアントのパフォーマンスを低下させる可能性があります
- 機能ごとに別々の会話を維持する
- 会話履歴を定期的に見直し、整理する
コンテキスト
ルールと設定
最適な結果を得るために、以下を実施します。
- コード生成と変更に関する明確なルールを定義する
- 環境間で一貫した設定を維持する
- 特別なルールや例外を文書化する
- 設定を定期的に見直し、更新する
- モジュール式の設計原則を実装する
ルールの例:
- If a file is longer than 300 lines of code, break it down into multiple files.
- Add documentation for every new piece of code added.
ツール
AI コーディングエージェントが力を発揮できる環境を育むには、ソフトウェア開発のベストプラクティス(明確な要件、モジュール式のコード、優れたドキュメントなど)に従い、ツール(静的コード解析、コードカバレッジ、CI/CD パイプライン、テスト、フォーマッターなど)を活用してください。
コーディングエージェントにタスクを割り当てると、エージェントはテストケースや静的解析ツールを実行しながら自律的に反復し、必要に応じて自己修正できます。これにより、手作業による介入が最小限に抑えられ、開発プロセスが効率化されます。
バージョン管理
以下のバージョン管理のベストプラクティスに従ってください。
- 意味のあるコミット: 明確で説明的なメッセージとともに、変更を頻繁にコミットしてください。コミットメッセージの作成には AI を活用することも検討できますが、それらがあなたの変更を正確に反映し、ロールバックの際に良い参照点となることを確認するため、必ずレビューしてください。
- ブランチ戦略: 新規開発にはフィーチャーブランチを使用してください。重要な変更には別のブランチを作成し、開発プロセスの柔軟性を保ちましょう。
- リポジトリ構造: クリーンで整理されたリポジトリ構造を維持してください。構造上の要件(ファイルサイズの上限、モノレポ構成、フロントエンドフレームワークなど)を早い段階で定義し、一貫したコード編成のために AI プロンプトに含めてください。