Claudeに寄付者名簿を渡す前の匿名化 — 仮IDへの置換と個人情報の線引き
寄付者名簿をClaudeで分析する前に、氏名と住所を仮IDと粗い区分に置き換える手順を、ダミーの200行で試した結果つきで示します。個人向けプランの学習設定と、匿名化しても残る線引きも扱います。
寄付者名簿をClaudeに渡して継続率や金額帯の傾向を見たいとき、最初の問いは「氏名と住所を消せば渡してよいのか」です。結論から言うと、氏名の列を消しただけでは足りません。住所の一部、生年月日、寄付日、自由記述が残っていれば、組み合わせで個人が分かるからです。
この記事では、名簿を手元で仮IDと粗い区分に置き換え、Claudeには加工後の表だけを渡す手順を示します。加工スクリプトはダミーの200行で動かしました。個人向けプランの学習設定と、匿名化したあとも残る線引きまで扱います。法的助言ではなく、公開資料の読み方と実務の組み立て方です。
氏名の列を消すだけでは、個人情報のままです
個人情報保護委員会の仮名加工情報・匿名加工情報編のガイドラインには、見落としやすい注記があります。安全管理措置の一環として氏名などの一部を削除し、引き続き個人情報として取り扱う場合は、仮名加工情報を「作成するとき」に当たらない、という説明です。氏名を消しただけの表は、法的な位置づけが変わりません。
同じガイドラインは、氏名を削除したあとも他の記述で個人が識別できるなら、その記述も加工する必要があると書いています。寄付者名簿でいえば、次の列が該当します。
| 列 | そのまま渡すとどうなるか | 加工の方向 |
|---|---|---|
| 氏名・フリガナ | そのまま渡すとどうなるか単独で個人を特定できる | 加工の方向削除し、仮IDに置換 |
| 住所・郵便番号 | そのまま渡すとどうなるか番地まであれば単独で近い状態 | 加工の方向郵便番号の上3桁か都道府県に丸める |
| 生年月日 | そのまま渡すとどうなるか住所と合わさると絞り込める | 加工の方向年代に丸める |
| 電話・メール | そのまま渡すとどうなるか単独で連絡先になる | 加工の方向削除 |
| 寄付額・寄付日 | そのまま渡すとどうなるか高額寄付者は金額だけで目立つ | 加工の方向金額帯と月に丸める |
| 備考・寄付時のメッセージ | そのまま渡すとどうなるか固有名詞や連絡先が混じる | 加工の方向目視で確認し、必要なら削除 |
名簿は氏名の検索や並べ替えができるように整理された状態なら、個人情報データベース等にあたると読めます。ガイドライン自体が、業種や規模を問わず適用されるとしています。寄付者名簿を持つNPOも、対象から外れるわけではありません。
手順1: 渡す目的を先に決めて、列を絞る
加工の前に、Claudeに何をさせたいかを一文で決めます。たとえば「寄付者を金額帯と継続年数で分けて、継続率の傾向を見る」です。目的が決まれば、必要な列が決まります。この例なら、氏名も住所の詳細もいりません。
列を絞るときは、次の順で考えます。
渡す列を絞る順番
- 1
目的を一文で書く
「何を知りたいか」を決めます。決められないうちは、列を渡さない方向で考えます。
- 2
目的に必要な列だけ残す
継続率なら、寄付者の識別子、金額帯、寄付月、地域区分で足ります。
- 3
残した列ごとに丸め方を決める
郵便番号は上3桁、生年月日は年代、金額は帯、というように粗くします。
- 4
自由記述は渡すか削るかを決める
備考欄は最後まで判断が残ります。迷うなら削ります。
氏名から個人を引き当てる必要がある作業、たとえば礼状の宛名づくりは、Claudeに渡す作業ではなく手元の名簿ソフトで済ませる作業です。分析と宛名は、扱うデータを分けておきます。
手順2: 仮IDに置き換えて、対応表は手元に残す
分析した結果を後で個人に戻したいときのために、仮IDを使います。ガイドラインは、氏名と仮IDの対応表や、置き換えに使った乱数などのパラメータを「元に戻せる情報」の例としています。つまり対応表を持っている限り、仮IDは完全な匿名ではなく、仮名の段階にとどまります。
仮IDの作り方にも注意があります。氏名や連絡先のような固有の記述に同じハッシュ関数を単純に掛けると、元の記述を復元できる規則性が残る可能性がある、という指摘です。対策の例として、元の記述に乱数などを加えてからハッシュ関数を使う方法が挙がっています。
次のスクリプトは、その考え方に沿って、鍵つきのHMACで仮IDを作ります。鍵は実行のたびにランダムに作り、保存した対応表と一緒に手元で管理します。
import csv, hmac, hashlib, os, re
key = os.urandom(32) # 対応表と同じ場所に、手元だけで保管する
def pid(donor_id, name):
msg = (donor_id + name).encode()
return "P" + hmac.new(key, msg, hashlib.sha256).hexdigest()[:8]
def band(amount):
for limit, label in [(5000, "〜5千円"), (30000, "〜3万円"),
(100000, "〜10万円")]:
if amount <= limit:
return label
return "10万円超"
def note_flag(text):
# 電話番号らしき並びと、固有名を含みそうな語を拾う
return bool(re.search(r"\d{2,4}-\d{2,4}-\d{3,4}", text)) or "病院" in text呼び出し側では、郵便番号は zip[:3]、生年月日は年代に丸め、寄付日は年月にします。備考は note_flag に引っかかったら [要確認] に置き換えます。加工後の表の先頭は、ダミーでは次の形になりました。
pid,zip3,birth_decade,amount,month,note
P5b4131fc,150,1960年代,〜5千円,2026-09,
P01f80aa1,160,1940年代,〜3万円,2026-04,
P2b430f9a,900,1970年代,〜10万円,2026-07,出力するファイルは2つに分けます。Claudeに渡すのは safe.csv だけです。mapping_LOCAL_ONLY.csv(仮IDと元のIDと氏名の対応表)は、渡す表と別のフォルダに置き、共有ドライブやクラウド同期の対象から外します。
対応表は、それ自体が個人データにあたります。ガイドラインは、対応表のような削除情報等が漏えいした場合、条件を満たせば個人情報保護法26条の報告と本人通知の対象になり得ると書いています。仮IDを振り直して加工をやり直す措置も、原則として必要です。対応表は、元の名簿と同じ水準で守る前提で扱います。
手順3: 丸めたあとに「一人だけ目立つ行」を数える
氏名を消して仮IDにしても、残った列の組み合わせで一人に絞れることがあります。ダミーの名簿(200行、4つの地域、生年は1940〜2002年)で、丸める前後を比べました。
| 組み合わせ | 丸め方 | その組み合わせで1人に絞れる行 |
|---|---|---|
| 郵便番号7桁+生年月日 | 丸め方丸めなし | その組み合わせで1人に絞れる行198行 / 200行 |
| 郵便番号7桁+寄付額+寄付日 | 丸め方丸めなし | その組み合わせで1人に絞れる行198行 / 200行 |
| 郵便番号上3桁+年代+金額帯+寄付月 | 丸め方丸めあり | その組み合わせで1人に絞れる行174行 / 200行 |
| 郵便番号上3桁+年代+金額帯 | 丸め方寄付月を外す | その組み合わせで1人に絞れる行63行 / 200行 |
丸めなしでは、200行のうち198行が組み合わせだけで一意になります。氏名を消しても、郵便番号と生年月日が分かれば、ほぼ全員が特定できる状態です。
丸めたあとでも、寄付月を残すと174行が一意でした。列を粗くしても、列の数が多ければ絞り込みは効きます。寄付月を外すと63行まで減ります。分析に必要ない列は、丸めるより外す方が効きます。
このダミーは、地域と年代と金額帯の分布が実際の名簿より均一な作りです。実際の名簿では地方の高額寄付者や、会員数の少ない地域の行が目立ちます。数字そのものより、確認の手順を持ち帰ってください。
渡す前に、自分の名簿でも同じ数え方を試します。丸めた列の組み合わせごとに行数を数え、1行しかない組み合わせを一覧にします。見つかった行は、さらに粗くするか、分析から外します。この確認は、データを渡す前にローカルで実行します。
手順4: 加工後の表をClaudeに渡す依頼文
加工が済んだら、safe.csv だけをClaudeに渡します。依頼文では、Claudeに個人を特定しようとしないよう伝え、前提を明示します。
添付は、寄付者名簿を仮IDと粗い区分に加工した表です。
個人の特定や、他の情報との照合は試みないでください。
次の点を教えてください。
1. 金額帯ごとの寄付者数と、寄付月の分布
2. 年代別に見た寄付額の傾向
3. 人数が5人未満になる区分があれば、その区分名3つ目の依頼は、人数の少ない区分をClaude自身に挙げさせるためのものです。見落としの検出に役立ちますが、これだけに任せません。手順3の数え直しが先で、Claudeの指摘は確認の追加という位置づけです。
結果が返ってきたら、仮IDで個人に戻す作業は手元で行います。たとえば「継続率が低い層の仮IDを一覧にして」と頼み、その一覧を対応表と突き合わせてフォロー対象者を決める流れです。突き合わせはClaudeの外で行います。
継続率の見せ方そのものは、Claudeで寄付者維持と獲得の効果を可視化するにまとめています。Givebutterの寄付データを直接引く場合は、ClaudeとGivebutterの連携で読み取り専用の範囲を確認できます。連携経由で個人情報の列が入る場合も、この記事の考え方は同じです。
個人向けプランでは、学習設定と保持期間を先に確認する
加工後の表でも、念のため、データの扱いを確認します。Anthropicのプライバシーセンターは、Free・Pro・Maxなど個人向けの製品と、それらのアカウントで使うClaude Codeを一つの枠で説明しています。商用製品は別の記事に分かれています。
個人向けでチャットが改善に使われる条件は、3つ挙がっています。
- 利用者が、チャットやコーディングセッションを使うことを許可している
- 会話が安全性レビューの対象としてフラグを立てられた
- Trusted Tester Programなど、明示的に学習へ参加した
使われ得るのは、会話全体と、添付した内容や好みの設定です。Google Driveなどのコネクタの生データは含まれませんが、会話に直接コピーした内容は含まれ得ると書かれています。
保持の面では、改善への利用を許可した場合、識別できない形式に加工された状態で最大5年、モデルトレーニングのパイプラインに残る可能性があります。会話を削除すると、履歴から直ちに消え、バックエンドからは30日以内に削除されます。設定をオフにした場合も、すでに始まっている学習や、学習済みのモデルには含まれたままです。
設定の変更は、アカウント名のメニューから「設定」「プライバシー」の順に進み、改善への協力を切り替える画面で行います。切り替えの意味はClaudeを学習させない設定で詳しく扱っています。
シークレットチャットは学習に使われないが、保存はされる
個人向けのチャットには、履歴や記憶に残さないシークレットチャットがあります。学習利用の対象外で、設定がオンでも使われません。ただし、履歴に出ないだけで、サービス側では30日間(既定)保持されます。「保存されない」と読み替えると誤りになります。
高評価・低評価ボタンの扱い
チャット画面の評価ボタンでフィードバックを送ると、会話全体が最大5年間保存されます。送信前にユーザーIDとの紐づけは外されますが、名簿の加工済みデータが会話に入っていれば、その内容は評価とともに残ります。名簿を扱う会話では、評価ボタンを押さない運用にします。
商用製品(Team・Enterprise・API)の扱いは、契約文書側で変わります。第三者提供や委託の整理は、個人情報を含むプロンプト入力は第三者提供にあたるかと、個人情報保護委員会の生成AI注意喚起の対応表にあります。
匿名化しても残る線引き
手順どおりに加工しても、次の3点は残ります。
- 仮名の段階にとどまる: 対応表を手元に持っている限り、加工後の表は他の情報と照合すれば個人が分かる状態です。匿名加工情報として扱う条件は、対応表と乱数の破棄を含む別の水準です。違いは仮名加工情報と匿名加工情報をClaudeに渡す前の加工に表があります。
- 利用目的の範囲は別に確認する: 加工してから分析することが、寄付者に伝えた利用目的の範囲に入るかは、加工の有無と別の問題です。寄付金の領収書や礼状に書いた利用目的の文言を見直します。
- 要配慮個人情報にあたる内容は渡さない: 寄付の動機を書いた備考に、病歴や信条が書かれていることがあります。該当しそうな行は、加工以前に分析から外します。扱いの考え方は要配慮個人情報をClaudeに入力してよいかにあります。
個人情報保護委員会のサイトには、ガイドライン(通則編、仮名・匿名加工情報編、第三者提供編)のほか、Q&Aと漏えい等の対応資料が並んでいます。実務で迷ったら、通則ガイドラインとQ&Aに当たります。
よくある質問
名簿の氏名を「寄付者A」「寄付者B」に置き換えれば、仮IDと同じですか
仮IDと同じ仮名の段階です。ただし連番で振ると、名簿の並び順から元に戻せる規則性が残ります。鍵つきの関数で作るか、順序と無関係な番号を振ります。
少人数の寄付者名簿でも、この加工は意味がありますか
人数が少ないほど、丸めても一人に絞れる行が増えます。数十人の名簿では、分析する列を絞り、地域や年代の区分を粗くする方向に倒します。それでも目立つ行が残るなら、Claudeに渡さずに手元の表計算で集計する選択肢があります。
加工をClaude Codeに書かせても大丈夫ですか
スクリプトを書かせることは問題になりません。生データを読ませずに、列名と丸め方の文章だけで書かせます。実行は手元で行い、生データのフォルダは読み取りを禁止する設定にしておく流れです。具体的な設定は仮名加工情報と匿名加工情報の記事にある Read の拒否ルールが参考になります。
まとめ
寄付者名簿をClaudeに渡すときの安全度は、氏名を消したかではなく、残った列の組み合わせで一人に絞れるかで決まります。氏名の列は仮IDに置き換え、住所・生年月日・寄付額・寄付日は粗く丸め、丸めた結果の「1行しかない組み合わせ」を数えてから渡します。
対応表は元の名簿と同じ水準で手元に残し、突き合わせはClaudeの外で行います。個人向けプランなら、学習設定をオフにしたうえで、評価ボタンを押さない運用を併せます。ここまで整えても、加工後の表は仮名の段階です。利用目的の範囲と要配慮個人情報の有無は、加工とは別の判断として残ります。