AIが出したコードをそのまま使う危険性

AIが出したコードをそのまま使う危険性

記事
IT・テクノロジー
ChatGPTをはじめとした生成AIを使えば、プログラミングのコードを短時間で作れるようになりました。

エラー文を貼り付ければ修正案を出してくれますし、「お問い合わせフォームを作って」「ハンバーガーメニューを実装して」と頼めば、数秒でコードが返ってきます。

非常に便利です。

ただし、AIが出したコードを確認せず、そのまま使うのは危険です。

AIはコードを書くことはできますが、そのコードが本当に正しいか、安全か、現在の環境に合っているかまでは保証してくれません。

今回は、AIが生成したコードをそのまま使う危険性と、安全に活用するための考え方について解説します。

AIのコードは「正解」ではなく「提案」

まず理解しておきたいのは、AIが出力したコードは正解ではなく、あくまで提案だということです。

AIは、過去に学習した大量のコードや文章をもとに、「この質問なら、このようなコードが続く可能性が高い」と判断して回答しています。

つまり、実際にコードを実行して、正常に動くことを確認してから回答しているわけではありません。

一見すると正しそうなコードでも、次のような問題が含まれている可能性があります。

存在しない関数を使っている
古い書き方を使っている
必要な処理が抜けている
セキュリティ対策が不足している
使用中の環境では動かない

コードの見た目がきれいだからといって、正しいとは限りません。

動いても正しいとは限らない

特に危険なのが、「画面上では動いたから問題ない」と判断してしまうことです。

コードが動くことと、正しく実装されていることは別です。

たとえば、お問い合わせフォームからメールを送信できたとしても、入力内容のチェックが不十分であれば、不正なデータを送信される可能性があります。

ログイン機能が動いていても、パスワードの扱いが適切でなければ、重大な情報漏えいにつながります。

また、サイトの表示が崩れていなくても、裏側でエラーが発生していたり、ページの読み込み速度が大きく低下していたりすることもあります。

目に見える部分だけを確認して、「動いたから大丈夫」と判断するのは危険です。

セキュリティ上の問題が含まれる可能性がある

AIが生成したコードで、特に注意しなければならないのがセキュリティです。

たとえば、フォームやデータベース、ログイン機能に関するコードでは、入力値の検証や不正アクセスへの対策が必要です。

しかし、AIへの指示が曖昧だった場合、最低限動作するだけのコードが生成され、セキュリティ対策が省略されることがあります。

次のような処理では、特に慎重な確認が必要です。

ログインや会員登録
お問い合わせフォーム
決済機能
個人情報の保存
ファイルのアップロード
データベースへの登録
管理画面の操作
外部サービスとの連携

これらのコードを確認せずに公開すると、情報漏えいやサイト改ざん、不正利用などの原因になる可能性があります。

セキュリティに関わる部分は、「AIが書いたから大丈夫」ではなく、むしろ通常以上に注意して確認する必要があります。

古い情報をもとにコードが生成されることがある

プログラミングの技術は、常に変化しています。

ライブラリやフレームワークのバージョンが変わると、以前使えていた書き方が非推奨になったり、まったく動かなくなったりします。

AIは、現在の環境では使えない古いコードを生成する場合があります。

たとえば、WordPress、React、PHP、JavaScriptなどは、バージョンによって推奨される書き方が異なります。

AIが出したコードだけを見ても、どのバージョンを前提にしているのか分からないことがあります。

そのため、現在使用している環境や公式ドキュメントと照らし合わせて確認することが重要です。

自分の環境に合っていないことがある

同じプログラミング言語を使っていても、プロジェクトごとに環境は異なります。

たとえば、次のような違いがあります。

使用しているOS
PHPやNode.jsのバージョン
WordPressテーマの構成
使用しているライブラリ
ファイルやフォルダの構成
サーバーの設定
データベースの構成
コーディングルール

AIは、質問の中に書かれていない情報を正確には把握できません。

そのため、一般的には正しいコードでも、自分のプロジェクトでは動かないことがあります。

既存のコードとの競合によって、別の機能が動かなくなる可能性もあります。

AIにコードを作ってもらう場合は、自分の環境や現在のコード構成をできるだけ具体的に伝える必要があります。

不要な処理が増えることがある

AIにコードを依頼すると、必要以上に複雑なコードが生成されることがあります。

本来は数行で済む処理なのに、多くの関数や設定が追加されることもあります。

コードが複雑になると、次のような問題が起こります。

修正しにくくなる
エラーの原因を特定しにくくなる
表示速度が遅くなる
他のコードと競合しやすくなる
将来の更新が難しくなる

AIが生成したコードは、動くかどうかだけでなく、本当にその処理が必要なのかまで確認することが大切です。

余計なコードを追加し続けると、プロジェクト全体が徐々に管理しにくくなっていきます。

コードの意味が分からないまま使うと修正できない

AIが出したコードをコピーして貼り付けるだけで、一時的に問題が解決することはあります。

しかし、そのコードの意味を理解していなければ、少し仕様が変わっただけで対応できなくなります。

また、エラーが起きたときに、どこが原因なのか判断できません。

その結果、さらにAIにコードを追加してもらい、問題が複雑になることがあります。

コードを追加して直らなければ、また別のコードを追加する。

このような状態を繰り返すと、似た処理が複数存在したり、不要なコードが残ったりして、全体の構造が崩れていきます。

AIを使うこと自体が問題なのではありません。

問題なのは、内容を理解しないまま採用することです。

少なくとも、次の点は説明できる状態にしておく必要があります。

何をするコードなのか
どのファイルに追加するのか
既存の処理に影響しないか
削除すると何が起きるのか
エラーが起きた場合にどこを確認するのか

説明できないコードを本番環境に入れるのは、リスクの高い行為です。

著作権やライセンスにも注意が必要

AIが生成したコードだからといって、どのような用途でも自由に使えるとは限りません。

特定のライブラリやプラグイン、外部サービスを利用する場合は、それぞれに利用条件やライセンスがあります。

商用利用が制限されていたり、著作権表示が必要だったりする場合もあります。

AIが紹介したコードやライブラリを使う前に、公式サイトやライセンス情報を確認する必要があります。

特に、クライアントのサイトや販売するサービスに使用する場合は注意が必要です。

知らなかったでは済まされず、実装した側が責任を負う可能性があります。

クライアント案件では制作者が責任を負う

クライアントのホームページやシステムにAIのコードを使った場合、問題が起きてもAIが責任を取ってくれるわけではありません。

責任を負うのは、そのコードを採用し、納品した制作者です。

「AIが作ったコードなので分かりません」という説明は通用しません。

情報漏えいや不具合が発生すれば、信用を失うだけでなく、損害賠償や契約上のトラブルにつながる可能性もあります。

AIを使って作業時間を短縮することは問題ありません。

しかし、最終的にコードを採用するかどうかは、自分で判断する必要があります。

AIは作業を手伝う道具であり、責任まで引き受けてくれる存在ではありません。

AIのコードを安全に使うためのポイント

AIが生成したコードを安全に使うためには、最低限の確認が必要です。

コードの役割を確認する

まず、そのコードが何をしているのかを理解します。

分からない部分がある場合は、AIに「1行ずつ説明してください」「この処理が必要な理由を教えてください」と質問するとよいでしょう。

説明を読んでも理解できないコードは、すぐに本番環境へ追加しない方が安全です。

既存のコードをバックアップする

コードを変更する前に、必ずバックアップを取ります。

問題が起きた場合に、変更前の状態へ戻せるようにしておく必要があります。

WordPressであれば、ファイルだけでなくデータベースのバックアップも重要です。

Gitを使って変更履歴を管理する方法も有効です。

テスト環境で確認する

いきなり公開中のサイトにコードを追加するのではなく、ローカル環境やテスト環境で確認します。

画面の表示だけでなく、スマートフォン表示、フォーム送信、管理画面、他のページへの影響なども確認します。

エラー表示を確認する

見た目に問題がなくても、ブラウザの開発者ツールやサーバーのエラーログを確認します。

表面上は動いていても、内部で警告やエラーが発生していることがあります。

公式ドキュメントを確認する

AIの回答だけを根拠にせず、使用している技術の公式ドキュメントも確認します。

特に、セキュリティやバージョンに関する内容は、公式情報を優先するべきです。

小さな単位で追加する

大量のコードを一度に追加すると、問題が起きたときに原因を特定しにくくなります。

少しずつ追加し、その都度動作確認を行う方が安全です。

AIに丸投げするのではなく、確認作業に使う

AIは、コードを生成させるだけでなく、確認作業にも使えます。

たとえば、次のような使い方があります。

このコードの問題点を確認してもらう
セキュリティ上のリスクを指摘してもらう
不要な処理がないか確認してもらう
より簡単な書き方に修正してもらう
どの環境を前提にしているか確認する
テスト項目を考えてもらう

ただし、AIに確認させたから絶対に安全になるわけではありません。

別の質問の仕方をすると、異なる回答が返ってくることもあります。

最終的には、自分で動作確認し、必要に応じて公式情報や専門家の判断を確認することが重要です。

AIを使うほど基礎知識が重要になる

AIがあるから、プログラミングの勉強は必要ないと考える人もいます。

しかし、実際には反対です。

AIが出したコードの良し悪しを判断するためには、基礎知識が必要です。

知識がなければ、正しいコードと危険なコードを見分けられません。

AIによってコードを書く速度は上がりますが、判断力まで自動的に身につくわけではありません。

これから重要になるのは、すべてのコードを暗記して書ける能力ではなく、次のような能力です。

処理の仕組みを理解する力
問題を小さく分ける力
エラーの原因を調べる力
出力されたコードを検証する力
不要なコードを見抜く力
セキュリティリスクを判断する力

AIを使いこなすには、AIに任せる部分と、自分で判断する部分を分ける必要があります。

まとめ

AIが生成したコードは、開発を大幅に効率化してくれる便利なものです。

しかし、コードをそのままコピーして使うだけでは、次のような問題が起こる可能性があります。

正しく動作しない
古いコードが使われている
セキュリティに問題がある
自分の環境に合っていない
不要な処理が増える
エラーが起きても修正できない
ライセンス上の問題が発生する

重要なのは、AIの回答を正解として受け取るのではなく、確認が必要な下書きとして扱うことです。

コードの意味を理解し、バックアップを取り、テスト環境で確認し、公式情報と照らし合わせる。

この作業を省略してはいけません。

AIは優秀な補助役ですが、最終的な判断と責任はコードを使う人にあります。

AIにコードを書かせる力だけでなく、そのコードを疑い、確認し、修正できる力が、これからのプログラミングではますます重要になります。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す