AI駆動開発で製造したシステムをレビューする時の注意点、確認するべきこと

生成AIを活用した「AI駆動開発」が急速に広がっています。
ChatGPT、Claude、Codexなどの生成AIやAIコーディングエージェントを利用すれば、プログラムの作成だけでなく、既存コードの解析、バグ修正、テストコードの作成、リファクタリング、ドキュメント作成までAIに任せられるようになりました。
これまで数日かかっていた実装を短時間で完成させられるケースもあり、フリーランスエンジニアや企業の開発現場でもAIを活用する機会は増えています。
しかし、AI駆動開発には一つ大きな問題があります。
それは、**「AIが作ったシステムが、本当に正しいのかを誰が確認するのか」**という問題です。
AIは非常に優秀ですが、生成したコードが必ず正しいとは限りません。
見た目には問題なく動作していても、セキュリティー上の問題が潜んでいたり、想定外の入力でエラーになったり、業務要件とは異なる処理を行っていたりする可能性があります。
そのためAI駆動開発では、従来以上にレビュー工程が重要になります。
今回は、AIによって開発されたシステムをレビューするときに確認しておきたいポイントについて解説します。
まず「要件どおりに作られているか」を確認する
システムレビューで最初に確認すべきなのは、コードの美しさではありません。
**「そもそも要求された機能が正しく実装されているか」**です。
AIは、指示された内容をもとにコードを生成します。
しかし、指示が曖昧だった場合、AIが独自に仕様を解釈してしまうことがあります。
例えば、
「管理者がユーザーを削除できる機能を追加する」
という要件があったとします。
ここで重要なのは、「削除」の意味です。
- データベースから完全に削除するのか
- 論理削除するのか
- 削除後も履歴を残すのか
- 一般ユーザーには削除させないのか
- 削除したユーザーを復元できるのか
など、さまざまな仕様が考えられます。
AIがコードとして正しく実装していたとしても、業務要件と違っていればシステムとしては失敗です。
そのためレビューでは、
要件 → 設計 → 実装
の順番で確認することが重要です。
AIが作ったコードを「動くからOK」にしない
AI駆動開発では、
「エラーが出ない」
「画面が表示される」
「テストが通る」
というだけで安心してはいけません。
例えばログイン処理が正常に動作していても、
- パスワードの扱い
- セッション管理
- 権限チェック
- ブルートフォース対策
- CSRF対策
- アカウントロック
などに問題がある可能性があります。
つまり、
「動作するコード」と「安全で正しいコード」は別物
です。
AIが生成したコードほど、人間によるレビューが重要になります。
セキュリティーを重点的に確認する
AI駆動開発で最も注意したいポイントの一つがセキュリティーです。
特にWebシステムでは、以下のような項目を確認します。
- SQLインジェクション
- XSS
- CSRF
- 認証
- 認可
- セッション管理
- ファイルアップロード
- パストラバーサル
- API認証
- APIキー管理
- 個人情報の取り扱い
- ログへの機密情報出力
例えばLaravelであれば、データベースへのアクセス方法が適切か、認可処理が抜けていないか、バリデーションが適切かなどを確認します。
AIはセキュリティー対策を考慮したコードを生成することもありますが、「AIがセキュリティー対策を入れたと言っているから大丈夫」ではありません。
実際のコードを確認する必要があります。
認証と認可を混同しない
特に重要なのが「認証」と「認可」です。
認証とは、
「あなたは誰ですか?」
を確認することです。
認可とは、
「あなたは、この操作をしてよいですか?」
を確認することです。
例えば、ログイン済みだからといって、すべてのユーザーが管理者画面にアクセスできてはいけません。
AIが、
ログインしているユーザーならアクセス可能という処理を作ってしまった場合、管理者権限のチェックが抜ける可能性があります。
そのためレビューでは、
「ログインできるか」だけではなく、「そのユーザーがその操作を実行してよいか」
まで確認する必要があります。
入力値のバリデーションを確認する
AIが生成したシステムでは、正常系の処理だけでなく異常系の処理を確認することが重要です。
例えば年齢を入力するフォームなら、
20だけではなく、
-1
0
999
abc
空文字
NULLなどを入力してみます。
メールアドレスなら、不正な形式や非常に長い文字列も確認します。
ファイルアップロードなら、
- 許可されていない拡張子
- 大容量ファイル
- 不正なファイル名
- 実行可能ファイル
- MIMEタイプの偽装
なども確認します。
AIは「通常の入力」を前提にしたコードを作ることがあります。
だからこそレビューでは、
「ユーザーが想定外のことをしたらどうなるか」
を確認する必要があります。
エラーハンドリングを確認する
システムは、必ずしも正常に動作するとは限りません。
データベースが停止することもあれば、外部APIがエラーになることもあります。
そのため、
- DB接続エラー
- APIエラー
- タイムアウト
- 通信エラー
- データ不存在
- 権限エラー
- 想定外の例外
などが発生した場合に、システムがどう動作するかを確認します。
特に危険なのが、エラーメッセージに内部情報が表示されるケースです。
例えば、
/home/example/app/Models/User.phpのようなサーバー内部のパスや、SQL文、APIキーなどがユーザーに表示されていないか確認します。
本番環境では、エラー情報を必要以上にユーザーへ公開しないことが重要です。
データベース設計を確認する
AIにデータベース設計を任せることもできます。
しかし、生成されたテーブル構造をそのまま採用するのは危険です。
確認したいのは、
- 主キー
- 外部キー
- インデックス
- UNIQUE制約
- NULL許可
- データ型
- 正規化
- 論理削除
- 履歴管理
などです。
特に大量データを扱うシステムでは、インデックス設計が重要です。
例えば検索処理が、
WHERE user_id = ?となっているのに、対象カラムに適切なインデックスが存在しなければ、データ量が増えたときに処理速度が大きく低下する可能性があります。
AI駆動開発では、少量のテストデータでは問題なくても、本番環境で問題になるケースに注意しましょう。
パフォーマンスを確認する
AIが作ったシステムでは、処理速度も確認する必要があります。
特に注意したいのが、
N+1問題
です。
例えばユーザー一覧を取得した後、ユーザーごとに関連データを個別に取得していると、ユーザー数が増えたときに大量のSQLが発行される可能性があります。
また、
- 大量データの一括取得
- 不要なループ処理
- 重いSQL
- 外部APIの大量呼び出し
- 大きなファイル処理
- キャッシュ不足
なども確認します。
AIが生成したコードは「正しく動くこと」を優先しており、必ずしも本番環境での性能まで最適化されているとは限りません。
テストコードそのものをレビューする
「AIがテストコードを作ってくれたから安心」という考え方も危険です。
テストコードが存在することと、十分なテストができていることは別だからです。
例えば、
正常にログインできるというテストだけでは不十分です。
本来なら、
- 間違ったパスワード
- 存在しないユーザー
- ロックされたユーザー
- 権限のないユーザー
- 不正な入力
- セッション切れ
なども確認する必要があります。
つまりレビューでは、
「テストがあるか」ではなく、「何をテストしているか」
を見ることが重要です。
AIが作ったコメントやドキュメントも確認する
AIはコメントやREADME、設計書なども非常にきれいに作成できます。
しかし、文章がきれいだからといって内容が正しいとは限りません。
例えば、
この処理ではユーザーの権限を確認しています。とコメントされていても、実際のコードでは権限チェックが行われていない可能性があります。
AIが生成したドキュメントは、
コードと実際の動作が一致しているか
を確認しましょう。
依存ライブラリを確認する
AIは必要に応じて外部ライブラリを提案することがあります。
ここにも注意が必要です。
例えば、
「この機能にはこのライブラリをインストールしてください」
とAIから提案された場合、
- 本当に必要なのか
- 現在もメンテナンスされているのか
- 脆弱性がないか
- ライセンスに問題がないか
- 既存ライブラリとの競合がないか
などを確認します。
依存ライブラリが増えるほど、システムの管理コストも増えていきます。
「AIが便利だから追加する」のではなく、本当に必要なライブラリだけを導入するという考え方が重要です。
ソースコードに秘密情報が入っていないか確認する
AI駆動開発では、APIを利用するシステムも増えています。
そのため、
APIキー
パスワード
秘密鍵
アクセストークン
データベース認証情報などがソースコードに直接書かれていないか確認します。
例えば、
$apiKey = "xxxxxxxxxxxxxxxx";のようなコードが存在する場合、本番環境では適切な秘密情報管理に変更する必要があります。
Gitのリポジトリに一度コミットしてしまうと、後から削除しただけでは履歴に残っている場合があります。
AI駆動開発ではコード生成の速度が速いからこそ、秘密情報の混入チェックを自動化することも重要です。
ログに個人情報が出ていないか確認する
ログは障害調査に非常に役立ちます。
しかし、AIがデバッグ目的で詳細な情報をログに出すコードを作ることがあります。
例えば、
- パスワード
- メールアドレス
- 電話番号
- クレジットカード情報
- セッション情報
- APIキー
- 個人情報
などをログに出してしまうと、別の情報漏洩リスクになります。
レビューでは、
「このログを誰が見られるのか」
まで考える必要があります。
AIに渡した情報についても確認する
AI駆動開発では、AIにプロジェクトのソースコードや設計書を読み込ませるケースがあります。
ここで重要になるのが情報管理です。
例えば、
- 顧客情報
- 個人情報
- APIキー
- パスワード
- 秘密鍵
- 非公開ソースコード
- 契約情報
- 社内機密
などをAIサービスに入力していないか確認します。
特に企業案件では、クライアントの許可なく機密情報を外部サービスへ入力すると、契約や情報管理上の問題につながる可能性があります。
AI駆動開発では、「AIに何を入力してよいのか」というルール作りも重要なレビュー項目になります。
人間による最終レビューをなくさない
AI駆動開発で最も重要なことは、
「AIに任せること」と「AIに丸投げすること」は違う
ということです。
AIには、
- コード生成
- 調査
- テスト作成
- リファクタリング
- ドキュメント作成
などを任せることができます。
しかし、
- 要件が正しいか
- 設計が正しいか
- セキュリティーに問題がないか
- 業務上問題がないか
- 本番環境で運用できるか
という最終判断は人間が行う必要があります。
特に重要なシステムほど、AIによる自己チェックだけで完結させないことが重要です。
AI駆動開発のレビューでは「4つの視点」を持つ
AIが作ったシステムをレビューするときは、次の4つの視点を持つと整理しやすくなります。
① 機能
要求どおりに動くか?
② 品質
保守しやすく、性能に問題がないか?
③ セキュリティー
攻撃や情報漏洩に対して安全か?
④ 運用
本番環境で継続的に運用できるか?
この4つを確認するだけでも、単純な「コードレビュー」から一段上のシステムレビューができます。
まとめ
AI駆動開発によって、システム開発のスピードは大きく向上しています。
しかし、開発速度が上がったからこそ、レビューの重要性はむしろ高まっています。
AIは大量のコードを短時間で生成できます。
その一方で、生成されたコードには、
- 要件とのズレ
- セキュリティー問題
- パフォーマンス問題
- エラーハンドリング不足
- 認可処理の欠落
- 不要なライブラリ
- 個人情報の取り扱いミス
- 秘密情報の混入
などが存在する可能性があります。
そのため、AI駆動開発では、
「AIに作らせる」
↓
「人間がレビューする」
↓
「テストする」
↓
「実際の環境を想定して検証する」
という流れを作ることが重要です。
特にフリーランスエンジニアや受託開発では、納品したシステムに問題があった場合、最終的な責任はAIではなく開発者側にあります。
だからこそ、
AIの性能を信頼するのではなく、AIが作った成果物を検証できる技術力を持つこと
が重要になります。
これからのエンジニアに求められるのは、単純に「コードを速く書ける能力」だけではありません。
AIを使って高速に開発しながら、その成果物を人間の視点で評価し、セキュリティー、品質、性能、運用まで含めて判断できる能力が必要になります。
AI駆動開発の本当の価値は、AIにすべてを任せることではなく、AIと人間それぞれの得意分野を組み合わせることにあります。
そして、その最後の品質を担保するのが、エンジニアによるレビューなのです。
- AI駆動開発に必要な設計書を、AIが開発可能なMarkdownへ変換する「Design2AI」
![AI駆動開発に必要な設計書を、AIが開発可能なMarkdownへ変換する「Design2AI」 AI駆動開発に必要な設計書を、AIが開発可能なMarkdownへ変換する「Design2AI」]()
- AI駆動開発で注意すべきリスクとセキュリティー上の問題点
![AI駆動開発で注意すべきリスクとセキュリティー上の問題点 AI駆動開発で注意すべきリスクとセキュリティー上の問題点]()
- amazon 「商品アンケートの参加者に選ばれました」QRコードからレビュー投稿で1,000円のギフト券-検証結果
![amazon 「商品アンケートの参加者に選ばれました」QRコードからレビュー投稿で1,000円のギフト券-検証結果 amazon 「商品アンケートの参加者に選ばれました」QRコードからレビュー投稿で1,000円のギフト券-検証結果]()
- AI駆動開発 生成AIの無料枠と有料版で出るクオリティーの違いはあるのか?
![AI駆動開発 生成AIの無料枠と有料版で出るクオリティーの違いはあるのか? AI駆動開発 生成AIの無料枠と有料版で出るクオリティーの違いはあるのか?]()
- AI駆動開発でフリーランスエンジニアとして案件獲得はできるのか
![AI駆動開発でフリーランスエンジニアとして案件獲得はできるのか AI駆動開発でフリーランスエンジニアとして案件獲得はできるのか]()
- amazon 「商品アンケートの参加者に選ばれました」QRコードからレビュー投稿で1,000円のギフト券-詐欺なのか検証してみた
![amazon 「商品アンケートの参加者に選ばれました」QRコードからレビュー投稿で1,000円のギフト券-詐欺なのか検証してみた amazon 「商品アンケートの参加者に選ばれました」QRコードからレビュー投稿で1,000円のギフト券-詐欺なのか検証してみた]()
- Claude Codeで実現するAI駆動開発 開発スタイルが変わる新しいプログラミング体験
![Claude Codeで実現するAI駆動開発 開発スタイルが変わる新しいプログラミング体験 Claude Codeで実現するAI駆動開発 開発スタイルが変わる新しいプログラミング体験]()
- AI システム開発 codex claudeの比較と融合による成長戦略
![AI システム開発 codex claudeの比較と融合による成長戦略 AI システム開発 codex claudeの比較と融合による成長戦略]()
- AI駆動開発で必要な設計書
![AI駆動開発で必要な設計書 AI駆動開発で必要な設計書]()
S.E->Weekly Ranking;
S.E->プロフィール;












![Apple AirPods Pro[MWP22J/A]の偽物(コピー品)を正規品と徹底比較 Apple AirPods Pro[MWP22J/A]の偽物(コピー品)を正規品と徹底比較](https://www.programming-se.com/wp-content/uploads/2020/07/スクリーンショット-2020-07-13-0.00.32-300x176.jpg)





