記事の一覧

ChatGPTに個人情報を入れて大丈夫?生成AIに渡す前の確認と設定

ChatGPT など生成 AI に個人情報を入力するときの注意点を、個人情報保護委員会の注意喚起、OpenAI・Anthropic・Google の学習利用と保存期間 (2026 年 11 月時点)、仮名化・マスキングの方法に分けて解説します。

問い合わせメールの要約、顧客リストの分析、障害調査のためのログの読み込み。生成 AI を業務で使うと、顧客の名前やメールアドレスを含むデータを入力したくなる場面がすぐに出てきます。この記事では個人情報を含むデータを生成 AI に渡す前に確かめたいことを、法律の論点、各社のデータの扱いと設定、渡す前に伏せる方法の 3 つに分けて説明します。

なお、この記事は一般的な解説です。個別の判断が必要な場合は、社内の法務担当や専門家に相談してください。会社としての情報漏洩対策の全体 (社内ルール、シャドー AI、プロンプトインジェクションなど) は「生成 AI による情報漏洩のリスクと企業の対策」で扱っています。

生成 AI に個人情報を渡すと何が起きうるか

生成 AI のサービスに入力した内容は、提供元のサーバーに送られて処理されます。そこから先で気をつけたいのは、次の 3 つです。

学習に使われる。 サービスや設定によっては、入力した内容がモデルの改善 (学習) に使われます。個人情報保護委員会は、入力された個人情報が学習に使われると、他の情報と結びついて、正確または不正確な内容で出力されるリスクがあると注意を呼びかけています。

提供元に保存され、人が見ることがある。 学習に使わない設定でも、不正利用の監視などのために一定期間保存されるのが一般的です。サービスによっては、品質改善のために会話の一部を人が確認することもあります。

誤った個人情報が出力される。 生成 AI の応答は確率的に作られるため、実在の人物について不正確な内容を出すことがあります。顧客対応の文面を作らせたときに、事実と違う情報が混ざるおそれもあります。

これらのリスクの大きさは、どのサービスの、どのプランの、どの設定で使うかによって大きく変わります。「生成 AI に個人情報を入れてはいけない」と一律に決めるより、何をどこに入れてよいかを決めるほうが、実際の業務に合います。

個人情報保護法の観点: 個人情報保護委員会の注意喚起

個人情報保護委員会は 2023 年 6 月 2 日に「生成 AI サービスの利用に関する注意喚起等」を公表しています。事業者 (個人情報取扱事業者) 向けの注意点は 2 つです。

1 つ目は、個人情報を含むプロンプトを入力するときは、その個人情報について特定している利用目的を達成するために必要な範囲内かを十分に確認すること、です。たとえば、問い合わせ対応のために預かったメールアドレスを、関係のない分析のために生成 AI に入力するのは、この確認に引っかかります。

2 つ目は、本人の同意なく個人データを含むプロンプトを入力し、その個人データが応答の出力以外の目的で扱われる場合、個人情報保護法に違反する可能性がある、という点です。そのため、生成 AI の提供元が入力された個人データを機械学習に利用しないことなどを十分に確認するよう求めています。

あわせて一般の利用者向けにも、提供元の利用規約やプライバシーポリシーを確認し、入力する情報の内容を踏まえて利用を判断するよう呼びかけています。同じ日に、委員会は ChatGPT を提供する OpenAI に対しても、要配慮個人情報の取得や利用目的の通知などについて注意喚起を行っています。

外部のサービスに渡すことの整理

個人データを外部の事業者に渡すとき、個人情報保護法では、それが「第三者への提供」なのか、「委託」なのか、そもそも「提供」に当たらないのかで、必要な対応が変わります。

クラウドサービスについて、個人情報保護委員会の Q&A (Q7-53) は、判断の分かれ目を、クラウド事業者がその個人データを「取り扱うこととなっているかどうか」に置いています。契約で個人データを取り扱わないと定め、適切にアクセス制御している場合などは「提供」に当たらない、という整理です。外国の事業者のサーバーに保存する場合についても、同じ考え方が Q&A (Q12-3) で示されています。ただしその場合でも、外国にある事業者のサーバーで扱うことになる以上、その国の個人情報保護の制度を把握したうえで、安全管理措置を講じる必要があるとされています。

生成 AI はプロンプトの中身を処理して応答を作り、サービスによっては一定期間保存もします。そのため、このクラウドの整理がそのまま当てはまるかどうかは、契約の内容と実際の扱いによります。業務で個人データを入力する前提で導入するなら、契約やデータ処理の条件を確認し、委託として扱うのか、本人の同意が必要なのかを、法務担当や専門家と整理しておきましょう。

提供元ごとのデータの扱い (2026 年 11 月時点)

注意喚起が求める「機械学習に利用しないことの確認」は、提供元の公式の説明で確かめられます。主要 3 社について、2026 年 11 月時点の公式ページの記載をまとめます。設定の名前や既定値は変わることがあるので、導入前と定期的に、参考に挙げたページで最新の記載を確認してください。

OpenAI (ChatGPT、API)

個人向けの ChatGPT Free・Plus・Pro では、会話をモデルの改善に使う設定 (Improve the model for everyone) が既定でオンです。設定の「データコントロール」からオフにでき、オフにしても会話の履歴は残ります。

一時チャット (Temporary chat) は、履歴に残らず、メモリも作らず、モデルの改善にも使われません。ただし、安全のために最大 30 日間保存されることがあります。

ChatGPT Business・Enterprise・Edu のワークスペースの内容と、API に送った入力と出力は、既定では学習に使われません。API については、不正利用の監視のためのログが法律で求められる場合を除き最大 30 日保存されます。保存しない扱い (Zero Data Retention) は、OpenAI の事前の承認が必要です。

Anthropic (Claude、API)

個人向けの Claude Free・Pro・Max (これらのアカウントで使う Claude Code を含む) では、2025 年 8 月の規約改定以降、会話をモデルの改善に使うかどうかを利用者が選ぶ形になっています。設定はプライバシー設定からいつでも変えられます。改善に使うことを許可すると、新しい会話や再開した会話は、個人と結びつかない形で最大 5 年間保存されます。許可しない場合の保存期間は、従来どおり 30 日です。シークレットチャット (Incognito) は、許可していても改善に使われません。

Claude for Work (Team・Enterprise) や API などの商用の利用規約のサービスは、この改定の対象外です。Anthropic のプライバシーセンターは、商用のサービスの入力と出力を既定では学習に使わない (フィードバックを送った場合や、利用者が許可した場合を除く) と説明しています。プライバシーセンターの説明では、API の入力と出力はバックエンドで 30 日以内に自動で削除され、別途、保存しない取り決め (ゼロデータ保持) も用意されています。なお、一部の新しいモデルは安全のために 30 日間の保存が必須とされています。

Google (Gemini アプリ、Gemini API、Google Workspace)

個人の Google アカウントで使う Gemini アプリでは、Keep Activity (アクティビティの保持) の設定がオンのとき、会話が生成 AI モデルの学習を含むサービスの改善に使われます。会話の一部は人のレビュアーが確認し、確認された会話は最大 3 年間保存されます。Google 自身も、レビュアーに見られたくない機密情報は入力しないよう案内しています。設定をオフにすると、以後の会話は (フィードバックを送った場合を除き) 学習に使われませんが、アカウントに 72 時間保存されます。

Gemini API は、無料の枠で使う場合、送った内容が製品の改善に使われ、人のレビュアーが読むことがあります。利用規約は無料の枠に機密情報や個人情報を送らないよう求めています。有料の枠では、プロンプトと応答は製品の改善に使われず、不正利用の検知のために限られた期間だけ記録されます。

仕事用・学校用の Google Workspace のアカウントで使う Gemini は、扱いが異なります。Google は顧客の事前の許可や指示なしに、顧客のデータをモデルの学習に使わず、ドメインの外で人がレビューすることもないと説明しています。

3 社に共通する注意: フィードバックのボタン

学習をオフにしていても、回答に「良い・悪い」のフィードバックを送ると、その会話が改善に使われることがあります。OpenAI は、フィードバックを送ると会話全体が学習に使われる場合があると説明しています。Anthropic はフィードバックを最大 5 年間保存し、Google もフィードバックを送った会話は学習に使われうるとしています。個人情報を含む会話では、フィードバックのボタンを押さないよう社内に伝えておきましょう。

まとめると

個人向けの無料・有料プラン 法人向けのプラン API
OpenAI 学習に使う設定が既定でオン。オフにできる 既定で学習に使わない 既定で学習に使わない。監視用のログは最大 30 日
Anthropic 利用者が選ぶ。許可すると最大 5 年保存 既定で学習に使わない 既定で学習に使わない。入出力は 30 日以内に削除
Google Keep Activity がオンなら学習に使い、人がレビューすることがある Workspace は許可なく学習に使わない 無料の枠は改善に使う。有料の枠は使わない

業務で個人情報を扱う可能性があるなら、個人向けのプランではなく、法人向けのプランか API を使い、管理者がまとめて設定を管理できる形にするのが基本です。社員が個人のアカウントで設定をオフにしているかどうかを、会社が確かめるのは難しいからです。

渡す前に伏せる: 仮名化とマスキング

法人向けのプランや API を使う場合でも、送らなくて済む個人情報は送らないのがいちばん確実です。生成 AI に渡す前に個人情報を伏せる方法を説明します。

言葉の整理

ここでは、次の意味で言葉を使います。

  • マスキング: 値を伏せ字にする、または消す (taro@example.com → ***@example.com)。元には戻せない
  • 仮名化: 値を記号に置き換え、対応表を手元に残す (taro@example.com → [EMAIL_1])。AI の回答を元の値に戻せる

個人情報保護法には「仮名加工情報」という制度がありますが、これは加工の基準と取り扱いの義務が決まった別の仕組みで、伏せ字にしただけのデータが自動的にそれに当たるわけではありません。また、個人情報保護委員会の Q&A は、法律上の仮名加工情報であっても、作成元の個人情報や削除した情報を手元に持っているなどして、他の情報と容易に照合して個人を特定できる状態にあるなら、個人情報に当たるとしています。仮名化して対応表を手元に残す場合も、自社にとっては個人情報のままと考えて扱うのが安全です。ここで紹介する方法は法律上の加工ではなく、AI の提供元に生の値を送らないための実務上の対策です。

データベースから取り出すときに列ごとに伏せる

データベースのデータを AI に渡すなら、どの列に何が入っているかが分かっているので、列ごとに伏せるのが確実です。名前の列は落とし、メールアドレスはドメインだけ残し、電話番号は「あるかないか」だけにする、といった加工を SQL の段階で行います。

-- PostgreSQL: 顧客の一覧を、個人を特定する列を伏せて取り出す
SELECT 'customer_' || dense_rank() OVER (ORDER BY id) AS customer,
       '***@' || split_part(email, '@', 2)          AS email_domain,
       (phone IS NOT NULL)                          AS has_phone,
       prefecture,
       created_at::date                             AS registered_on
FROM customers
ORDER BY id;

結果は customer_1 / ***@example.com / true / 東京都 / 2026-11-01 のようになります。AI が「customer_1 の注文が急に増えた」と答えたら、手元で customer_1 が誰かを引けば済みます。顧客 ID そのものも社内のほかのシステムと突き合わせれば個人に結びつくので、外に出すなら上のように連番に置き換えるとよいでしょう。

文章の中の個人情報を置き換える

問い合わせの本文やログのような自由な文章には、どこに個人情報があるか分かりません。メールアドレスや電話番号のように形が決まっているものは、正規表現で見つけて置き換えられます。

import re

EMAIL = re.compile(r"[\w.+-]+@[\w-]+(?:\.[\w-]+)+")
PHONE = re.compile(r"0\d{1,4}-?\d{1,4}-?\d{3,4}")

def mask(text: str, table: dict[str, str]) -> str:
    """メールアドレスと電話番号を [EMAIL_1] のような記号に置き換える"""
    def replacer(kind: str):
        def repl(m: re.Match) -> str:
            value = m.group(0)
            if value not in table:
                n = sum(1 for t in table.values() if t.startswith(f"[{kind}_")) + 1
                table[value] = f"[{kind}_{n}]"
            return table[value]
        return repl
    text = EMAIL.sub(replacer("EMAIL"), text)
    text = PHONE.sub(replacer("PHONE"), text)
    return text

def unmask(text: str, table: dict[str, str]) -> str:
    """AI の回答に含まれる記号を元の値に戻す"""
    for value, token in table.items():
        text = text.replace(token, value)
    return text

table: dict[str, str] = {}
masked = mask("taro@example.com から、090-1234-5678 に折り返し希望。控え: taro@example.com", table)
# => "[EMAIL_1] から、[PHONE_1] に折り返し希望。控え: [EMAIL_1]"

同じ値には同じ記号を当てているので、AI は「同じ人のメールアドレスが 2 回出てくる」ことを理解したまま処理できます。回答に [EMAIL_1] が含まれていれば、unmask で元に戻せます。対応表 (table) は自社の環境から出さないでください。

この方法には限界があります。人の名前や住所は形が決まっていないので、正規表現ではほとんど拾えません。顧客名簿の名前の一覧と突き合わせる、固有表現を抽出するツールを使う、といった方法を組み合わせても、文章の中の個人情報をすべて見つけられるとは限りません。自由な文章を扱うなら、伏せる処理に加えて、学習に使われない契約のサービスを使うことを前提にしてください。

伏せても特定できてしまう組み合わせ

名前やメールアドレスを伏せても、ほかの情報の組み合わせで個人が特定できることがあります。「大阪府の 40 代の女性で、法人契約、先月に解約」という条件に当てはまる顧客が 1 人しかいなければ、名前を伏せた意味はほとんどありません。AI に渡す項目は目的に必要なものだけに絞ります。年齢は年代に、日付は月単位に、住所は都道府県に、というように粒度を粗くするのも有効です。

病歴、犯罪の経歴などの要配慮個人情報は、取得や提供に本人の同意が必要になる場面が多い、特に慎重に扱うべき情報です。生成 AI に渡す可能性があるデータにこうした情報が含まれていないかも確認してください。

社内で決めておきたいこと

最後に、個人情報を含むデータを生成 AI で扱う前に、社内で決めておきたいことを挙げます。

  • 業務で使ってよいサービスとプラン (個人向けプランを業務で使わない、など)
  • 管理者側での学習利用とデータ保持の設定と、その確認の頻度
  • 入力してよい情報と、伏せてから入力する情報、入力しない情報の区別
  • フィードバックのボタンや共有リンクの扱い
  • 個人情報を誤って入力してしまったときの連絡先と手順
  • 自社のプライバシーポリシーの利用目的と、生成 AI に入力する業務が合っているか

個人情報を伏せたまま AI にデータを見せるには

ここまでの方法を手作業で続けるなら、AI に渡すデータを取り出す SQL やスクリプトに伏せる処理を組み込み、渡す前に毎回通すのが現実的です。チャットの画面に直接貼るのではなく、決まった経路を通すようにすると、伏せ忘れを防げます。

データベースの監視や調査を AI に任せたい場合は、伏せる処理が組み込まれたサービスを使う方法もあります。Scandock は、AI がデータベースを監視するサービスで、顧客の名前やメールアドレスなどの個人情報を伏せた状態で AI に渡し、AI の提供元には中身を送りません。それでも通知と画面では元の値で読めるので、調査の結果を確かめるときに困りません。監視と調査は、読み取り専用のデータベースユーザーで行います。

参考

関連する記事