---
title: AI 生成物のレビューと責任
description: AI が生成したコードの責任の所在と、コミット前・レビュー時に確認すること
---

## 責任の所在

AI が生成したコードも、コミットした人が書いたコードとして扱います。

- 自分で内容を説明できないコードはコミットしない
- PR のレビューは、AI が生成したかどうかに関係なく通常と同じ基準で行う（[Pull Request 運用](/git/pull-request)を参照）
- 動作確認は、AI の報告ではなく自分で実際に確認する

## 確認すること

AI が生成したコードでは、特に次の点を確認します。

- **機密情報の直書き**: API キーやパスワードがコードに書かれていないか（[フロントエンドでの API キーの扱い](#フロントエンドでの-api-キーの扱い)を参照）
- **依存パッケージの追加**: 追加されたパッケージが実在し、ライブラリの管理ルールに沿っているか（[ライブラリの利用](/frontend/js/libraries)を参照）
- **ガイドラインとの整合**: 本ガイドラインのコーディング規約やアクセシビリティの基準を満たしているか
- **不要な変更**: 依頼した範囲の外のファイルや設定が変更されていないか

## フロントエンドでの API キーの扱い

秘密の API キーをフロントエンドのコードに書いてはいけません。ブラウザ上のコード・ネットワークリクエスト・Source Map・ビルド成果物はすべて確認でき、公開と同じ状態になります。

```js
// NG: フロントエンドに直書き
const apiKey = "sk-xxxxxxxx";

// OK: フロントエンドは自前のバックエンドを呼ぶ
await fetch("/api/chat", { method: "POST", body: JSON.stringify({ message }) });
```

```js
// バックエンド側で環境変数から読む
const apiKey = process.env.OPENAI_API_KEY;
```

:::danger[VITE_ で始まる環境変数は公開される]
Vite では、`VITE_` で始まる環境変数（`import.meta.env.VITE_*`）の値がビルド時にコードへ埋め込まれ、公開されます。
秘密の API キーには `VITE_` を付けないでください。
:::

:::note[公開を前提としたキー]
Google Maps のブラウザ用キーや reCAPTCHA のサイトキーなど、ブラウザで使うことを前提としたキーはフロントエンドに書いて構いません。
その場合は、HTTP リファラーの制限など、サービス側で使用できる範囲を必ず制限してください。
:::
