バイブコーディング実践編 — Claude Code を中心に AIで安全に作る力 / Capstone — 小規模Webアプリ完走
Capstone — テスト/品質/セキュリティ
読了目安 5 分
学習のねらい
AI が生成したコードも、人間が書いたコードと同様に品質とセキュリティの確認が不可欠です。 このレッスンでは、Capston プロジェクトで「品質ゲート」を確立し、自動テスト、SAST (Static Application Security Testing、静的アプリケーションセキュリティテスト)、そして LLM-as-a-Judge (大規模言語モデルを評価者として使う) の適用を通じて、アプリケーションの信頼性を高める方法を学びます。 CI (継続的インテグレーション) でこれらのチェックがすべて「緑色」(成功) になる状態を目指しましょう。
テストカバレッジ目標
「テストカバレッジ (Test Coverage)」とは、テストによって実行されたコードの割合を示す指標です。 目標値を設定することで、テストが不足している箇所を特定し、品質向上のための具体的な指針とできます。 例えば、「新規追加・変更されたコードは最低80%のカバレッジを達成する」といった目標を設定すると良いでしょう。
AI にテストコードを書かせる際も、単に「テストを書いて」と指示するだけでなく、「この機能のテストカバレッジを80%以上になるように書いてください」といった具体的な目標を与えることで、より質の高いテストコードを期待できます。
OWASP セルフチェック
OWASP (Open Web Application Security Project) は、Web アプリケーションセキュリティに関する世界的な非営利団体です。 OWASP Top 10 は、Web アプリケーションで最も頻繁に見られるセキュリティリスクをまとめたもので、開発者がセキュリティを意識する上で非常に役立ちます。
Capston プロジェクトでは、以下の項目を参考に、セルフチェックを行いましょう。
- インジェクション: SQL インジェクション、コマンドインジェクションなど、信頼できないデータがコードに渡され、意図しないコマンドが実行されるリスク。
- 対策: パラメータ化されたクエリの使用、入力値の検証とサニタイズ。
- 認証の不備: 認証メカニズムの脆弱性。
- 対策: 強固なパスワードポリシー、多要素認証の導入 (Capston では不要な場合も)。
- 機密データの露出: 機密データが適切に保護されていない。
- 対策:
.envでの機密情報管理、HTTPS の使用。
- 対策:
- セキュリティログと監視の不備: 攻撃の検出や対応が遅れる。
- 対策: ログの適切な出力と監視 (Capston では最小限で可)。
AI にセキュリティに関するレビューを依頼する際も、「OWASP Top 10 の観点から、このコードに脆弱性がないか確認してください」と具体的に指示すると良いでしょう。
LLM-as-a-Judge の適用
「LLM-as-a-Judge」とは、大規模言語モデル (LLM) を使って、コードの品質やプロンプトの応答などを自動的に評価する手法です。 例えば、AI が生成したコードが特定の要件を満たしているか、またはコードレビューのコメントが適切かなどを LLM に評価させることができます。
Capston プロジェクトでは、例えば以下のような形で適用できます。
- コード品質の評価: AI が生成したコードに対して、「可読性」「保守性」「パフォーマンス」などの観点から LLM に評価させ、改善点を提案させる。
- 要件との合致度評価: 作成したコードが、第1レッスンで定義した Acceptance Criteria (AC) を満たしているかを LLM に評価させる。
これにより、人間によるレビューの負担を軽減しつつ、一定の品質基準を自動的に維持することが可能になります。
まとめ
Capston プロジェクトでは、lint、test、SAST、LLM-as-a-Judge といった品質ゲートを CI に組み込み、すべてのチェックが緑色になることを目指しましょう。
テストカバレッジの目標設定、OWASP セルフチェック、そして LLM を活用した評価を取り入れることで、AI との協業による開発でも高い品質とセキュリティを確保できます。