実戦で使えるコード生成
おもちゃの例ではなく、自分のコードベースのスタイル・パターン・規約に合った本番コードをAIで生成する方法。
プレミアムコースコンテンツ
このレッスンはプレミアムコースの一部です。Proにアップグレードすると、すべてのプレミアムコースとコンテンツを利用できます。
- すべてのプレミアムコースを利用
- 1,000以上のAIスキルテンプレート付き
- 毎週新しいコンテンツを追加
🔄 前のレッスンでAI開発ワークフローの全体像を掴んだ。今回はその最初の武器——コード生成を実戦レベルにする。
「AIでコード生成」の現実
多くの開発者のAIコード生成体験:
- 「Todoアプリ作って」→ 動く
- 「自社のマイクロサービスにX機能追加して」→ 使えない
なぜか? コンテキスト不足。
AIは万能なコード生成マシンではない。適切なコンテキストを与えれば優秀なペアプログラマーになり、コンテキストなしでは新卒エンジニアのような出力をする。
コンテキストの渡し方:5つのレベル
| レベル | 渡す情報 | コード品質 |
|---|---|---|
| 🔴 L1 | 「関数書いて」だけ | ほぼ使えない |
| 🟠 L2 | 要件+使用言語 | 動くが自分のスタイルでない |
| 🟡 L3 | 要件+既存コードのサンプル | スタイルが近い |
| 🟢 L4 | 要件+サンプル+アーキテクチャ説明 | チームに馴染む品質 |
| 🟢 L5 | L4+テスト例+エラーハンドリング方針 | プロダクションレベル |
実戦プロンプトパターン
パターン1:既存コードに合わせた生成
以下の既存コードのパターンに従って、[新しい機能]を実装してください。
既存コード(参考):
```[language]
[既存の類似コードを貼り付け]
要件:
- [具体的な要件1]
- [具体的な要件2]
制約:
- エラーハンドリングは既存パターンに従う
- 命名規則を統一する
- [フレームワーク/ライブラリ]のバージョンは[X]
### パターン2:段階的生成
大きな機能は一度に生成しない。
ステップ1:まず[機能X]のインターフェース定義を作ってください。 (確認後) ステップ2:インターフェースの実装を書いてください。 (確認後) ステップ3:エラーハンドリングを追加してください。
### パターン3:型から始める
TypeScriptやPythonの型ヒントを先に定義し、実装を生成させる。
以下の型定義に基づいて実装を書いてください。
interface OrderProcessor {
processOrder(order: Order): Promise<ProcessResult>;
validatePayment(payment: Payment): ValidationResult;
calculateShipping(items: Item[], destination: Address): ShippingCost;
}
条件:
- 各メソッドにエラーハンドリングを含む
- ログ出力は既存のloggerを使用
## AI生成コードの検証チェックリスト
生成されたコードを使う前に確認:
- [ ] **読んで理解した**——理解できないコードは使わない
- [ ] **エッジケース**——null、空配列、境界値の処理
- [ ] **エラーハンドリング**——適切な例外処理があるか
- [ ] **セキュリティ**——SQLインジェクション、XSSなどの脆弱性
- [ ] **パフォーマンス**——O(n²)のループなど非効率な処理
- [ ] **依存関係**——非推奨や存在しないパッケージの参照
- [ ] **テスト可能性**——テストが書きやすい構造か
## 実践演習
1. 自分のプロジェクトから既存コードのサンプルを選ぶ
2. そのパターンに合わせた新機能の生成をAIに依頼する
3. 検証チェックリストで出力を評価する
> 💡 **ポイント:** AIに渡すコンテキストの質が、出力の品質を決める。5分かけてコンテキストを整えれば、30分のリファクタリングを節約できる。
理解度チェック
まず上のクイズを完了してください
レッスン完了!