『いい感じ』のバイブコーディングの型
AIパートナーとの雰囲気協働には、「いい感じ」のパターンと「なんかうまくいかない」パターンがあります。
『いい感じ』で実証された雰囲気協働パターンを理解し、魔法的なプログラミング体験を最大化しましょう。
1. 「だんだんいい感じに」段階的雰囲気伝達パターン
『感覚的開発者』のアプローチ
「こんな感じの大きなもの」から始めて、段階的に「いい感じに詳細化」していく雰囲気アプローチ
雰囲気伝達の実践例:「いい感じのECサイト」開発
# ステップ1:「こんな感じの全体像」の雰囲気把握
"いい感じのECサイトの基本構造を「いい感じに設計」してください"
# ステップ2:「もっと詳しく」機能の雰囲気詳細化
"「商品管理機能」をいい感じに詳細設計してください"
# ステップ3:「実際に作ってみたい」実装の具体化
"商品の在庫管理APIのエンドポイントをいい感じに実装してください"
# ステップ4:「こんなケースもありそう」エッジケース対応
"在庫が0になった時の「いい感じの処理」を追加してください"
「いい感じ」の雰囲気アプローチ
- 「こんな感じ」から「もっと具体的に」へ
- 「いい感じの雰囲気」を保持
- 「いい感じ!」で段階的確認
- 「こんなつもりだった」意図の明確化
「なんかうまくいかない」避けるべきアプローチ
- 「全部一度にやって」と雰囲気を伝えず要求
- 「雰囲気なし」でいきなり詳細実装
- 「いい感じ?」確認なしの連続実装
- 「なんとなく」曖昧な要求
2. 「いい感じのテスト」雰囲気駆動協働パターン
『感覚的開発者』のアプローチ
「こんなテストケースが欲しい」を先に雰囲気で伝え、AIパートナーと「いい感じに実装」していくパターン
「こんなテストが欲しい」雰囲気定義 → 「いい感じに実装」依頼 → 「いい感じ!」レビュー → 「もっといい感じに」リファクタリング
実践例:ユーザー認証機能
# ステップ1:テストケースの定義
"""
以下のテストケースを満たすユーザー認証クラスを実装してください:
1. 正しいユーザー名とパスワードでログイン成功
2. 間違ったパスワードでログイン失敗
3. 存在しないユーザーでログイン失敗
4. 5回連続失敗でアカウントロック
5. ロック後15分で自動解除
"""
# AIが実装を生成
# ステップ2:追加のテストケース
"""
以下のエッジケースも考慮してください:
- SQLインジェクション対策
- パスワードのハッシュ化
- タイミング攻撃への対策
"""
3. リファクタリング協働パターン
概要
既存コードの改善をAIと協力して行うパターン
実践例:レガシーコードの改善
# 元のコード
def process_data(data):
result = []
for item in data:
if item['status'] == 'active':
if item['type'] == 'A':
result.append(item['value'] * 1.1)
elif item['type'] == 'B':
result.append(item['value'] * 1.2)
else:
result.append(item['value'])
return result
# リファクタリング依頼
"""
このコードをより読みやすく、保守しやすい形にリファクタリングしてください。
以下の点を考慮してください:
1. 単一責任の原則
2. 拡張性(新しいtypeの追加が容易)
3. テストしやすさ
"""
# AIによるリファクタリング結果
from typing import List, Dict, Any
from abc import ABC, abstractmethod
class ProcessingStrategy(ABC):
@abstractmethod
def process(self, value: float) -> float:
pass
class TypeAStrategy(ProcessingStrategy):
def process(self, value: float) -> float:
return value * 1.1
class TypeBStrategy(ProcessingStrategy):
def process(self, value: float) -> float:
return value * 1.2
class DefaultStrategy(ProcessingStrategy):
def process(self, value: float) -> float:
return value
class DataProcessor:
def __init__(self):
self.strategies = {
'A': TypeAStrategy(),
'B': TypeBStrategy(),
}
self.default_strategy = DefaultStrategy()
def process_data(self, data: List[Dict[str, Any]]) -> List[float]:
return [
self._process_item(item)
for item in data
if self._is_active(item)
]
def _process_item(self, item: Dict[str, Any]) -> float:
strategy = self.strategies.get(
item['type'],
self.default_strategy
)
return strategy.process(item['value'])
def _is_active(self, item: Dict[str, Any]) -> bool:
return item.get('status') == 'active'
4. ドキュメント駆動協働パターン
概要
ドキュメントを先に作成し、それに基づいて実装を進めるパターン
実践例:API設計
# ステップ1:API仕様の作成依頼
"""
タスク管理システムのREST APIの仕様書を作成してください。
以下の機能を含めてください:
- タスクのCRUD操作
- タスクの検索・フィルタリング
- タスクの状態管理
- ユーザーへのタスク割り当て
"""
# ステップ2:仕様に基づく実装
"""
作成したAPI仕様書に基づいて、
FastAPIを使用してエンドポイントを実装してください。
"""
# ステップ3:ドキュメントの自動生成
"""
実装したAPIのOpenAPI(Swagger)ドキュメントを
自動生成する設定を追加してください。
"""
5. ペアプログラミング風協働パターン
概要
AIをペアプログラミングのパートナーとして活用するパターン
実践例:リアルタイムデバッグ
# 開発者
"この関数でTypeErrorが発生しています。原因を一緒に調査しましょう。"
# AI
"エラーメッセージとスタックトレースを見せていただけますか?"
# 開発者
"TypeError: unsupported operand type(s) for +: 'int' and 'str'
Line 15: result = value + user_input"
# AI
"user_inputが文字列のままのようですね。
以下の修正を提案します:
1. int()で型変換
2. try-exceptでエラーハンドリング
3. 入力検証の追加"
# 開発者
"2番の方法で実装してみます。エラーハンドリングのコードを提案してください。"
ペアプログラミングのコツ
- 役割分担:AIは提案者、人間は最終判断者
- 対話的な進行:一方的な指示ではなく、対話を重視
- 知識の共有:お互いの強みを活かす
- 継続的な学習:AIの提案から新しい知識を得る
6. 問題解決協働パターン
概要
複雑な問題をAIと共に分析し、解決策を導き出すパターン
問題の定義 → 原因分析 → 解決策の検討 → 実装・検証
実践例:パフォーマンス問題の解決
# 問題の報告
"""
データベースクエリが遅く、APIのレスポンスタイムが5秒を超えています。
以下のクエリを分析して、改善案を提案してください:
SELECT u.*,
COUNT(o.id) as order_count,
SUM(o.total) as total_spent
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2024-01-01'
GROUP BY u.id
ORDER BY total_spent DESC
LIMIT 100;
"""
# AIによる分析と提案
"""
パフォーマンス問題の原因:
1. インデックスの不足
2. 不必要な全カラム取得(u.*)
3. 大量データの集計
改善案:
1. 複合インデックスの追加
2. 必要なカラムのみ選択
3. マテリアライズドビューの検討
4. クエリの分割
"""
7. 協働パターンの組み合わせ
実践的なプロジェクトでの活用
例:新機能開発の流れ
- ドキュメント駆動で要件定義
- 段階的詳細化で設計
- テスト駆動で実装
- ペアプログラミング風でデバッグ
- リファクタリング協働で改善
- 問題解決協働でトラブルシューティング
まとめ:『いい感じ』の雰囲気協働のポイント
『感覚的開発者』の成功する雰囲気協働の原則
- 「いい感じに伝えたい」明確な雰囲気コミュニケーション
- 「だんだんいい感じに」段階的なアプローチ
- 「いい感じ!」で継続的な検証
- 「こんな役割でいこう」雰囲気役割の明確化
- 「いい感じで学びあいたい」相互学習の姿勢