AIが生成したSQLを業務システムで使う際の注意点
生成AIを利用すると、自然言語による指示からSQLを短時間で作成できます。しかし、生成されたSQLが正しいとは限りません。
特に業務システムで使用する場合、SQLが一見正しく見えても、意図しないデータの更新や削除、存在しないテーブルの参照などが含まれている可能性があります。
ここでは、弊社がAIを利用した開発や改修を行うなかで、特に重要だと感じている注意点をご紹介します。
1.更新系SQLをそのまま実行しない
AIが生成したSQLを、内容を確認せずに業務データへ実行するのは危険です。
例えば、生成されたSQLに意図しない処理が含まれていた場合、次のような問題が発生する可能性があります。
DELETEによって必要なデータが削除されるUPDATEによって既存データが意図しない内容へ変更されるINSERTによって不要なデータや重複データが追加されるDROP TABLEによってテーブル自体が削除されるALTER TABLEによってテーブル構造が変更される
さらに、WHERE句の条件が不足しているだけでも、対象外のデータまで一括して更新・削除される恐れがあります。
AIにSQLを生成させた場合は、必ず技術者が内容を確認し、どのテーブルの、どのレコードに、どのような変更が行われるのかを確認する必要があります。
最初から本番環境で更新処理を行うのではなく、まずはSELECT文による参照処理から検証することをおすすめします。更新処理が必要な場合も、本番データのコピーや検証環境を使用し、事前にバックアップを取得したうえでテストします。
2.AIへ渡すテーブル定義を明確にする
正しいSQLを生成してもらうためには、AIに対して、データベースの構造を正確に伝える必要があります。
少なくとも、次の情報を提示します。
- 使用するテーブル名
- 各テーブルの項目名
- 項目のデータ型
- 主キー
- テーブル同士を関連付ける項目
- 取得したい結果と抽出条件
- 使用しているデータベースの種類
特に、Access SQLとSQL Server、MySQLなどでは、使用できる関数やSQLの書き方に違いがあります。そのため、「Microsoft Accessで実行するSQLである」と明確に指定することも重要です。
どのデータがどのテーブルに保存されているのか、どのテーブルを参照すべきなのかを整理せずに依頼すると、AIは不足している情報を推測してSQLを作成することがあります。
3.存在しないテーブル名や項目名に注意する
ChatGPTなどの対話型AIにSQLを生成させると、実際には存在しないテーブル名や項目名を、もっともらしく作り出すことがあります。これは一般に「ハルシネーション」と呼ばれる現象です。
SQLの構文自体が正しくても、存在しないテーブルや項目が指定されていれば、そのまま実行することはできません。
また、名称が似ている別の項目を参照してしまうと、SQLはエラーにならず実行できても、誤った結果が返される場合があります。
AIが生成したSQLについては、次の内容を実際のデータベースと照合します。
- テーブルが実在するか
- 項目が実在するか
- 参照している項目が目的に合っているか
- テーブル間の結合条件が正しいか
- 抽出条件が業務上の意味と一致しているか
4.弊社で確認した「一見動いているが、データが残らない」事例
弊社がAIを使用して開発されたアプリケーションを確認した際、不要な一時テーブルが作成されていた事例がありました。
そのアプリケーションでは、一時的な処理結果を保存するためのテーブルを作成し、そこへデータを蓄積する構造になっていました。しかし、アプリケーションを起動するたびに、そのテーブルを削除して再作成する処理も組み込まれていました。
画面上では正常に動いているように見えましたが、本来継続して保存されるべきデータまで、次回起動時に失われる状態になっていました。
このような問題は、アプリケーションを一度動かしただけでは気づきにくいものです。保存後にアプリケーションを終了し、再起動した後もデータが残っているかまで確認する必要があります。
AIが生成したコードでは、「その場で動作すること」と「業務システムとして継続的に正しく動作すること」は同じではありません。
AIが生成したSQLにも技術者による確認が必要
生成AIは、SQL作成の時間を短縮する有用な道具です。しかし、業務データの意味や、どのデータを将来まで保存すべきかを、AIが完全に理解しているわけではありません。
そのため、生成されたSQLについては、構文だけでなく、データの保存方法や業務上の意味まで含めて確認する必要があります。
AIにSQLを作らせることはできます。しかし、そのSQLを業務システムで安全に使える状態へ整えるには、データベースと業務の両方を理解した技術者による確認が欠かせません。
Microsoft Accessと生成AIを連携し、自然言語からSQLを生成する具体的な仕組みについては、 MS Access × 生成AI|自然言語からSQLを自動生成する方法 で紹介しています。
AIが生成したSQLやアプリの動作に不安がある方へ
AIが生成したSQLやコードについて、「一応動いているが、このまま業務で使ってよいのか分からない」 「データが消えないか心配」「作成者以外が直せない」といったご相談に対応しています。
既存のシステムをすぐに作り直すのではなく、現在の構成やデータを確認し、 できるだけ既存資産を活かしながら、安全に使い続けられる方法を一緒に検討します。
