AIで開発すると、実装速度は上がります。反面、APIキーや認証情報を雑に扱うと、その速さがそのまま事故の速さになります。先に守るルールを決めておくと、AIを使っても安全性を崩さずに進められます。
https://x.com/WasimShips/status/2046552039082140082
この記事では、AI支援の開発で秘密情報を漏らさないための実務ルールを整理します。
- どこに秘密情報を置くべきか
- AIに渡してよい情報と渡してはいけない情報
.gitignoreと環境変数の基本設計- 事故を防ぐためのチェック項目
AI開発で先に決めること
結論は単純です。AIにコードを書かせる前に、秘密情報の置き場所と扱い方を固定します。ルールが曖昧だと、プロンプトにAPIキーを貼る、.env をコミットする、サンプルコードに本番値を混ぜる、という事故が起きます。AIは作業を加速しますが、判断基準までは自動で安全になりません。人間側が境界線を作る必要があります。
まず、秘密情報はソースコードに埋め込みません。APIキー、トークン、パスワード、署名鍵は環境変数か秘密管理サービスに置きます。ローカル開発では .env、本番ではクラウドのシークレット管理を使い分けます。コードは process.env や設定注入を前提に書きます。
AIに渡してよい情報
AIに渡してよいのは、再現に必要だが機密ではない情報です。たとえば、エラー文、ファイル構成、公開APIの仕様、マスク済みの設定値です。sk-... や実際のDB接続文字列は渡しません。必要なら末尾だけ伏せた文字列に変えます。
この線引きは重要です。AIは文脈が多いほど正確になりますが、機密情報まで増やす必要はありません。再現に必要な部分だけ残し、それ以外は削る。これが基本です。
.gitignore は後付けにしない
.gitignore は事故後に追加するものではありません。最初から入れます。最低限、.env、.env.*、鍵ファイル、ローカル生成物は除外します。複数環境があるなら、.env.example を置いて項目名だけ共有します。値は空欄かダミーにします。
ここで大事なのは、テンプレートと本物を分けることです。AIに設定ファイルを生成させると、実値を書き込んだままのサンプルが出ることがあります。レビュー時に「このファイルはサンプルか、本番設定か」を必ず確認します。
事故を減らす運用
安全性はルールだけでは足りません。運用で固定します。コミット前に秘密情報検知を走らせ、PRでは diff を見る前にキーの混入を疑います。CIにスキャンを入れると、人間の見落としを補えます。
AIにリファクタを頼むときも同じです。広い範囲を一気に書かせず、関数単位、ファイル単位で進めます。変更差分が小さいほど、秘密情報の混入や設定崩れを見つけやすくなります。AIの出力は便利ですが、最後の責任はレビュー側にあります。
実務で使えるチェック項目
- プロンプトに秘密情報を貼っていない
.envと本番設定を分離している.gitignoreに機密ファイルを入れている- サンプル設定に実値が残っていない
- PR前にシークレットスキャンを通している
- AIの出力をそのまま本番に入れていない
まとめ
AI開発で大事なのは、AIを信用することではなく、事故が起きない構造を先に作ることです。秘密情報をコードから分離し、渡す情報を絞り、コミット前検査を習慣化すれば、AIの速度をそのまま安全な開発速度に変えられます。