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の速度をそのまま安全な開発速度に変えられます。