0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

え、まだChatGPTのコードをそのまま本番投入してるんですか?動画では言えなかった補足

0
Last updated at Posted at 2026-07-20

はじめに

「AIが書いたコードだから絶対正しいはず!」

え、まだAIのコードをレビューなしで本番に入れてるんですか?AIは自信満々に間違いを書くことがあります

この記事で解決すること

動画「【AI】ChatGPTのコードをそのまま本番投入」の補足記事です。
動画では時間の都合で触れられなかった詳細を解説します。


問題:なぜこれが危険なのか

え、まだAIのコードをレビューなしで本番に入れてるんですか?AIは自信満々に間違いを書くことがあります


解決策:明日から使えるベストプラクティス

AIコードは必ず動作確認とセキュリティチェックをしてから使う

❌ 悪い例:AIが生成したコードをそのまま本番へ

一見問題なさそうですが、SQLインジェクションの脆弱性があります。

// AIが生成したコード(レビューなし)
app.get("/user", async (req, res) => {
  const id = req.query.id;

  // SQLインジェクションの危険
  const sql = `SELECT * FROM users WHERE id = ${id}`;

  const result = await db.query(sql);
  res.json(result.rows);
});

攻撃者が以下のようなURLへアクセスすると...

https://example.com/user?id=1 OR 1=1

実行されるSQL

SELECT * FROM users WHERE id = 1 OR 1=1;

結果

  • 全ユーザー情報が取得される
  • 個人情報漏洩
  • AIは「動くコード」を生成していても、「安全なコード」とは限らない

✅ ベストプラクティス① 動作確認(ユニットテスト)

まずは期待通り動くかをテストします。

// user.test.js
import request from "supertest";
import app from "./app";

test("ユーザー取得API", async () => {
  const res = await request(app)
    .get("/user?id=1");

  expect(res.statusCode).toBe(200);
  expect(res.body.id).toBe(1);
});
npm test

最低限、

  • 正常系
  • 異常系
  • 境界値

を確認します。


✅ ベストプラクティス② セキュリティレビュー

SQLは必ずプレースホルダーを使用します。

app.get("/user", async (req, res) => {
  const id = req.query.id;

  const result = await db.query(
    "SELECT * FROM users WHERE id = $1",
    [id]
  );

  res.json(result.rows);
});

これなら入力がSQLとして実行されません。


✅ ベストプラクティス③ AIコードレビュー用チェックリスト

レビュー前に最低限確認します。

☑ 入力値の検証があるか
☑ SQLインジェクション対策があるか
☑ XSS対策があるか
☑ 認証・認可の漏れはないか
☑ エラーハンドリングがあるか
☑ ログにパスワードを書いていないか
☑ ハードコードされた秘密鍵がないか
☑ テストが通るか

✅ ベストプラクティス④ AIによるコード解析も活用する

AIに次のようなレビューを依頼すると、見落としを減らせます。

以下のコードをシニアエンジニアとしてレビューしてください。

観点
- セキュリティ
- パフォーマンス
- 可読性
- 保守性
- バグの可能性
- 改善案

問題があれば修正版も提示してください。

✅ ベストプラクティス⑤ CIで自動チェック

GitHub ActionsでAIコードも含めて自動テストと静的解析を実行します。

name: Code Review

on:
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: 20

      - run: npm ci
      - run: npm test
      - run: npm run lint

これにより、レビュー前に基本的な品質チェックを自動化できます。


🎯 明日から使えるベストプラクティス

AIは優秀なコーディング支援ツールですが、「正しいコード」を保証するものではありません。

本番へ反映する前に、次の流れを習慣化しましょう。

  1. AIが生成したコードを人がレビューする
  2. ユニットテスト・統合テストで動作確認する
  3. SQLインジェクションやXSSなどのセキュリティを確認する
  4. Linter・静的解析・CIを通して品質をチェックする
  5. 問題がないことを確認してから本番へデプロイする

このプロセスを徹底することで、AIの生産性を活かしつつ、安全で信頼性の高いソフトウェア開発を実現できます。


まとめ

AI丸投げを卒業して、AIを『優秀なアシスタント』として正しく使いましょう!

#まだやってるんですか #コードの女神はみた #プログラミングスキル


動画で見る

YouTubeショート動画でも同じテーマを解説しています👇

https://youtube.com/shorts/5P78IxBOkO0

チャンネル登録・高評価もよろしくお願いします 🔔


この記事は「コードの女神は見た!」チャンネルの連動記事です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?