Chuyển đến nội dung chính

レッスン 17: コードの品質とレビュー — Vibe 責任あるコーディング

Vibe コーディングを使用する場合は、コードの品質を確保します。 AI が生成したコードをコードレビューします。リンティング、フォーマット、タイプ セーフティ。指標と KPI。アンチパターンは避けるべきです。 Vibe コーディング ワークフローにおけるコード品質のベスト プラクティス。

💻 プログラミング — レッスン 17 レッスン 17: コードの品質とレビュー — Vibe 責任を持ってコーディングする

GitHub Copilot を使用した Vibe コーディング: 基本から高度まで

パート 6: プロフェッショナルな Vibe コーディング — 品質、セキュリティ、プロダクション

xdev.asia

1. Vibe コーディングの品質問題

Andrej Karpathy は、Vibecoding を紹介する際に次のように述べました。 「ただ物事を見たり、発言したり、実行したり、コピー&ペーストしたりするだけで、ほとんどうまくいきます。」 でも 「ほとんど機能します」 製品コードには十分ではありません。

実際のデータ (2025-2026):

ソース 検出
GitClear (2025) AI 適用後に「コード チャーン」が増加 - より多くのコードが作成され、編集/削除される
ベラコード (2026) AI 生成コードを使用するアプリケーションの 72% には少なくとも 1 つのセキュリティ脆弱性があります
コードラビット (2026) AI コードレビューは人間のレビュー担当者が見逃すバグを検出します

2. AI が生成したコードをレビューする方法

2.1. AI コードのチェックリストのレビュー

  • ✅ 論理的な正しさ: コードは必要なことを実行しますか?
  • ✅ エッジケース: AI はヌル、空、境界のケースを見逃すことがよくあります
  • ✅ エラー処理: エラーのキャッチは適切ですか?
  • ✅ セキュリティ: 入力検証、認証チェック、SQL インジェクション
  • ✅ パフォーマンス: N+1 クエリ、不必要な再レンダリング
  • ✅ ネーミング: 変数、関数には意味がありますか?
  • ✅ 重複: AI は既存のコードを再利用する代わりに生成することがよくあります。

2.2. Copilot を使用して独自のコードをレビューする

// Prompt:
Review this code for:
1. Security vulnerabilities
2. Performance issues
3. Edge cases not handled
4. Code that doesn't follow our project conventions
5. Potential bugs

Be critical and thorough. List every issue found.

2.3. AI コードではアンチパターンが一般的です

アンチパターン たとえば 修正
神機能 すべてを実行する 200 行の関数 1 つ より小さな機能に分割する
コードをコピーして貼り付けます ロジックを抽出するのではなく繰り返す 共有ユーティリティの抽出
ハードコードされた値 マジックナンバー、コード内のURL config/env に移動
弱いエラー処理 サイレントキャッチまたは一般的なエラー 特定のエラー処理
検証が欠落している ユーザー入力を完全に信頼します 境界で検証する
オーバーエンジニアリング 抽象化が早すぎる、1 件の工場出荷時のパターン YAGNI — 必要な場合にのみ構築する

3. 自動化された品質ゲート

3.1. ESLint + Prettier + Copilot フック

// .vscode/settings.json
{
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },
  "github.copilot.chat.hooks": {
    "postSave": [
      {
        "command": "npx eslint --fix ${file}",
        "pattern": "**/*.{ts,tsx}"
      }
    ]
  }
}

3.2.事前コミットフック

// package.json
{
  "lint-staged": {
    "*.{ts,tsx}": [
      "eslint --fix",
      "prettier --write"
    ]
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged",
      "pre-push": "npm test"
    }
  }
}

3.3. CI/CDの品質チェック

# .github/workflows/quality.yml
name: Code Quality
on: [pull_request]
jobs:
  quality:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npx tsc --noEmit          # Type check
      - run: npx eslint .              # Lint
      - run: npm test -- --coverage    # Tests + coverage
      - run: npx knip                  # Dead code detection

4. タイプ セーフティ — 防御の第一線

TypeScript の厳密モードは、AI が作成する多くのバグを検出します。

// tsconfig.json
{
  "compilerOptions": {
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "noImplicitReturns": true,
    "exactOptionalPropertyTypes": true
  }
}
// Prompt mẫu yêu cầu type safety:
Ensure all functions have explicit return types.
Use discriminated unions for API responses.
No 'any' types — use 'unknown' with type guards instead.

5. テストカバレッジ戦略

AIコードが必要 もっとテストしてください、それ以上:

// Prompt:
Write tests for the TaskService focusing on:
1. Happy path for each method
2. Edge cases: empty input, null values, max length
3. Authorization: user can only access own projects
4. Concurrent modifications
5. Database constraint violations

最小カバレッジ目標:

レイヤー ターゲット 理由
ビジネスロジック 90%以上 コアドメインは正確である必要がある
APIエンドポイント 80%以上 契約の結合テスト
UIコンポーネント 70%以上 UXのインタラクションテスト
公共事業 95%以上 純粋な関数はテストが簡単です

6. Vibe コーディングの指標と KPI

メトリック 何を測定するのか? ターゲット
合格率 AI による提案の受け入れ率 (%) 30 ~ 40% (高すぎる = レビューなし)
コードチャーン 2 週間以内に編集/削除されたコードの割合 <25%
バグ密度 1000 LOC あたりのバグ数 AI以前と比較して削減または維持
コメントをレビューする レビュー担当者が AI コードの修正をリクエストした回数 時間の経過とともに減少します
PR マージまでの時間 PR 作成からマージまでの時間 減額されましたが、審査スキップによるものではありません

7. ベストプラクティスの概要

  1. 盲目的に受け入れないでください: AI が生成した各行を読み取ります
  2. AIに説明してもらう: 「なぜこのアプローチを選んだのか説明してください」
  3. 可能な場合は最初にテストする: 最初にテストを作成し、AI を使用して実装します
  4. インクリメンタル生成: 各小さなパーツを生成し、続行する前に確認します。
  5. カスタム命令: 合格したコーディング標準を強制します 副操縦士の指示.md
  6. 自動化ゲート: CI/CD は人間のレビュー担当者が見逃したバグを発見します
  7. 品質を測定する: AI が助けになっているのか害を与えているのかを知るために指標を追跡する

8. まとめ

責任を持って Vibe コーディングを行う =AIのスピードを活かす+人間工学の品質を維持する。

生成された AI コードをレビューする必要がある もっと慎重に 人間が書いたコード。理由は次のとおりです。

  • AIはビジネスコンテキストを理解できない
  • AI は「正しく動作する」コードよりも「正しく見える」コードを優先します
  • AI は現在プロジェクトにどのようなコードがあるのかを知りません

次の記事: Vibe コーディングのセキュリティ — 一般的なセキュリティ脆弱性とその回避方法。