AI生成コードは開発を速くしますが、本番投入の責任までAIに移るわけではありません。特に認証、認可、環境変数、外部API、決済、ログ、エラー表示は、人間が確認してから公開する必要があります。
このチェックリストの位置づけ
これは正式なセキュリティ監査の代替ではありません。個人開発や小規模サービスで最低限の抜け漏れを減らすための確認表です。決済、医療、金融、個人情報を扱う場合は専門家レビューを優先してください。
まず実行するコマンド
本番前に最低限見るコマンド
| 確認 | コマンド例 | 見ること |
|---|---|---|
| 型チェック | npm run typecheck | anyで逃げていないか、型の不整合が残っていないか |
| 本番ビルド | npm run build | Next.jsのページ生成、metadata、Route Handlerで失敗しないか |
| ローカル表示 | npm run dev | スマホ幅、リンク、フォーム、記事本文の崩れがないか |
| 依存関係 | npm ls または package.json確認 | AIが不要なライブラリを追加していないか |
本番投入前チェックリスト
- ✓buildとtypecheckが通る
- ✓環境変数やAPIキーをクライアント側へ出していない
- ✓認証済みユーザーと未認証ユーザーの権限差を確認した
- ✓Firestore RulesやAPI Routeでサーバー側の認可をしている
- ✓StripeなどのWebhookでは署名検証を行っている
- ✓フォームには入力検証、レート制限、エラー時の安全な表示がある
- ✓AIが追加した依存関係を確認した
- ✓エラー時に個人情報や内部情報を表示しない
- ✓ログに秘密情報や個人情報を残していない
- ✓削除・更新処理に本人確認または権限確認がある
Next.jsで特に見るところ
Next.js App Routerで起きやすい問題
| 対象 | 確認すること | 危険な例 |
|---|---|---|
| Client Component | use clientが必要なファイルだけに付いているか | エラー回避のためにページ全体をClient Component化する |
| Server Component | サーバー専用処理をクライアントへ渡していないか | Firestore Adminや秘密鍵をClient Componentへimportする |
| metadata | metadata exportやgenerateMetadataの位置が正しいか | use clientファイルでmetadataをexportする |
| Route Handler | POST/GETの入力検証とエラー処理があるか | 受け取った値をそのままDBへ保存する |
| 外部リンク | target blankにはrel属性を付ける | 広告リンクや外部リンクの意図が分からない |
Firebaseで特に見るところ
Firebase / Firestoreの確認例
| 対象 | 確認すること | 危険な例 |
|---|---|---|
| Firestore Rules | ユーザーIDやロールで読み書きを制御しているか | フロントのif文だけで編集ボタンを隠す |
| Storage Rules | アップロード可能なユーザー・サイズ・形式を制限しているか | 誰でも任意ファイルをアップロードできる |
| クエリ | 必要なindexと権限が揃っているか | エラーを避けるために読み取り権限を広げる |
| Admin SDK | サーバー側だけで使っているか | private keyをフロントへ混ぜる |
Stripeや課金処理で特に見るところ
- ✓Webhook署名検証をしている
- ✓支払い成功だけでなく失敗・キャンセル・返金を想定している
- ✓クライアントから送られた金額やプラン名をそのまま信用していない
- ✓subscription状態をサーバー側で保存している
- ✓同じWebhookイベントが再送されても二重処理しにくい
- ✓権限付与と決済状態の同期に失敗した時の復旧手順がある
根拠レベル:強
AI生成かどうかに関係なく確認すべき領域
OWASP Top 10が扱う認可、認証、入力検証、セキュアな設計の観点は、AI生成コードでも手書きコードでも重要です。AI生成コードでは、実装者が理解しないまま採用しやすいため、確認表として残す意味があります。
AIに再レビューさせるときのプロンプト
本番投入前レビュー用プロンプト
次の差分を本番投入前レビューしてください。認証、認可、環境変数、Webhook、入力検証、ログ、エラー表示、不要な依存関係、Next.js App Routerのルール違反を優先して確認し、重大度順に指摘してください。推測で断定せず、確認が必要な点は“要確認”と書いてください。
公開判断の目安
公開してよい状態とは、“AIが良さそうなコードを出した状態”ではなく、“人間が差分を読み、公式仕様と照合し、build・型・権限・外部連携の確認を終えた状態”です。小さな個人サイトでも、認可と秘密情報の確認だけは後回しにしない方が安全です。
本文の確認リンク
料金・機能・利用条件は変更されるため、導入前に公式ページで再確認してください。