AI生成コードの危ない見抜き方

入門 | 9分 で読める | 2026.07.09

公式ドキュメント

まず結論

AI生成コードは、動きそうに見えることと、安全に動くことが別です。

AIは便利ですが、次のようなコードを出すことがあります。

  • 存在しないAPIを使う
  • 古い書き方を混ぜる
  • エラー処理がない
  • セキュリティ前提が弱い
  • テストされていない
  • プロジェクトの既存方針と合わない

そのまま貼る前に、確認する観点を持つことが大切です。

存在しないAPI

AIは、ありそうなAPI名を作ることがあります。

例:

database.connectSecurely();

それらしく見えても、実際のライブラリに存在しない可能性があります。

確認すること:

  • 公式ドキュメントにあるか
  • 型補完で存在するか
  • 実行するとエラーにならないか
  • バージョンが合っているか

古い書き方

AIは古い記事や過去のコードパターンを混ぜることがあります。

よくある例:

  • 古いフレームワークAPI
  • 非推奨の設定
  • CommonJSとES Modulesの混在
  • 古い認証方式
  • 古いセキュリティ推奨

導入前に、プロジェクトのバージョンと公式ドキュメントを確認します。

セキュリティ

AI生成コードで特に注意する場所:

  • ユーザー入力
  • 認証・認可
  • Cookie
  • localStorage
  • SQL
  • ファイルアップロード
  • 外部APIキー

危ない例:

const query = `SELECT * FROM users WHERE name = '${name}'`;

文字列連結でSQLを作ると、SQLインジェクションの危険があります。プレースホルダーやORMの安全なAPIを使います。

エラー処理

AIは成功例だけを書きがちです。

確認すること:

  • APIが失敗した時
  • 値がnullの時
  • 配列が空の時
  • 権限がない時
  • ネットワークが切れた時
  • ファイルが存在しない時

成功パターンだけでなく、失敗パターンを考えます。

既存コードとの整合性

生成コード単体が正しくても、プロジェクトに合わないことがあります。

見ること:

  • 既存の命名規則
  • エラーハンドリング方針
  • UIコンポーネントの使い方
  • ディレクトリ構成
  • 型定義
  • テスト方針

新しい書き方を突然混ぜると、保守しにくくなります。

テストする

AI生成コードは、実行して確認します。

最低限:

npm run build

プロジェクトによっては、lint、typecheck、testも実行します。

画面の動作確認だけでなく、異常系も試します。

実践メモ: AIに「このコードの危険な前提を列挙して」と聞くと、生成後のチェックに使いやすいです。

まとめ

AI生成コードは、存在しないAPI、古い書き方、セキュリティ、エラー処理、既存方針とのズレを確認します。

AIは速く書くための道具ですが、責任を持って動かすのは開発者です。生成、確認、修正、テストまでをセットで扱います。

次に読む記事

← 一覧に戻る
PR
PR
PR
PR