case02 ・ 匿名加工情報

ID-POS 購買データを、別の事業者に提供して使ってもらう

同レポート「―事例編―」2.1.1 購買履歴の事例1(ID-POS データ)を参考にした、仮想の事例(デモ)

データはすべて教材用の合成データです。

case01 との違い — 目的が対照的

case01 仮名加工情報 case02 匿名加工情報
何のため 社内で利用目的を変えて分析したい 第三者に提供して使ってもらいたい
加工の強さ 照合すれば元をたどれる余地は残す 再識別も復元もできないよう強く加工
作成基準 施行規則 第31条(3号) 施行規則 第34条(5号・一律の作成基準
運用 識別行為の禁止で担保する そもそも元に戻せないようにする
同じ「思考プロセス」でも、**誰に渡すか**が変わると要求水準が変わります。そこが case02 の学びどころ。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

1/7 ・ 事例概要

小売事業者の ID-POS データを、別の一般事業者へ渡す。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

あらすじ

小売事業者が持つ ID-POS データ(誰が・いつ・どの店で・何を買ったか)を 匿名加工情報 に加工し、別の一般事業者へ提供する。

提供先がやりたいこと

消費者の基本属性(年代・性別・居住エリア)× 購買傾向 から、新商品開発や販売促進に活かす。

  • 加工の目的: 第三者へ提供・利活用してもらうために、特定の個人を識別できず・元に戻せない形にする
  • 提供先の分析: 「どんな属性の人が、どんな商品を、どのくらい買うか」
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

なぜ匿名加工情報なのか

統計値(集計表)では足りない

集計表にすると、属性 × 購買傾向の細かな分析ができない。

レコードの形は残しつつ、誰の記録かをたどれないように加工する。

渡す相手が特定できないことが前提

第三者に渡す以上、受け取った側が個人を特定できないことが必要。

→ 守るべき 作成基準(識別できる記述・連結符号・特異な記述の削除など)がある。

匿名加工情報とは(1行で)

特定の個人を識別できず、かつ元に戻せないように加工した情報。 第三者提供や公開まで想定できる。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

2/7 ・ データを見る

ID-POS データの構造。3つのテーブルが会員IDでつながっています。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

3つのテーブル(図表2-2 のデータ構造)

テーブル 役割 主キー 1レコード 想定件数
customers(顧客属性) 会員の基本属性 会員ID 顧客1人 900
transactions(取引情報) 来店・会計1回 取引ID 取引1件 約4,600
purchases(購買履歴) 買った商品の明細 明細ID 明細1行 約14,000

customers 1 : N transactions 1 : N purchases

case01 と構造が違う

case01 は「顧客 — 購買」の2階層でしたが、ここは 顧客 → 取引(来店) → 明細(商品) の3階層。
取引の粒度をどう扱うかが設計上の論点になります。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

項目定義

customers

項目 キー
会員ID PK
氏名
生年月日
性別
電話番号
住所

transactions

項目 キー
取引ID PK
会員ID FK
利用日時
店舗ID
店舗名
担当者ID

purchases

項目 キー
明細ID PK
取引ID FK
商品ID
商品名
数量
金額

顧客属性にはそのままでは個人が特定できる項目が、取引・購買には組み合わせると特定につながる項目(利用日時・店舗・珍しい商品)が含まれます。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

加工前データのサンプル(すべて合成データ)

customers

会員ID 氏名 生年月日 性別 電話番号 住所
M000003 渡辺 遥 1974-12-09 女性 090-6124-8185 千葉県市川市国府台5丁目29-1
M000004 木村 さくら 1958-10-06 女性 090-6161-2924 東京都世田谷区上北沢3丁目13-15
M000005 吉田 聡 1975-11-20 男性 090-8202-2110 神奈川県川崎市宮前区宮崎5丁目17-11

transactions

取引ID 会員ID 利用日時 店舗ID 店舗名 担当者ID
T0000001 M000001 2026-03-17 19:30:28 S06 PPCマート浦和店 E007
T0000002 M000001 2026-03-09 12:31:50 S07 PPCマート船橋店 E015

purchases

明細ID 取引ID 商品ID 商品名 数量 金額
D00000001 T0000001 G12 緑茶ペットボトル 3 412
D00000002 T0000001 G07 さば 3 1251
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

3/7 ・ 情報特性の評価

① 規則で必須の措置を確定 → ② 情報特性から自主的に判断。
匿名加工では見る観点が増えます。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

① 施行規則第34条(匿名加工情報の作成基準)

匿名加工情報には 一律の作成基準 があり、次の各号の措置が 規則により必須

内容 本事例での該当
第1号 特定の個人を識別できる記述等の削除 氏名 / 電話番号
第2号 個人識別符号の削除 該当なし
第3号 相互に連結する符号の削除 会員ID → 仮ID
第4号 特異な記述等の削除 超高齢 / 限定品 / 極端な数量・金額
第5号 データベースの性質を踏まえたその他の措置 丸め(一般化)の水準は該当者の人数・データ量に応じて判断

第1〜4号は削除・置換、第5号は一般化などで対応します。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

落とし穴:電話番号を消す「理由」

「単体で特定できるから」ではない

電話番号は、それだけでは「誰か」は分かりません(単体での識別性は低い)。
しかし本人に到達でき、外部情報との 照合 の手がかりになるため、第1号(特定の個人を識別できる記述等)として削除します。

  • 「単体で特定できるから削除」 ✗
  • 照合・到達の手がかりを断つために削除」 ✓

case01 のクレジットカード番号と同じく、必須になる理由が識別性の高さとは別の軸にあります。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

② 情報特性を見る観点(case01 + 2つ)

観点 意味
直接識別子 単体で個人を特定できる 氏名
準識別子 組み合わせで特定につながりうる 生年月日+性別+住所、利用日時+店舗
本人到達性 本人に連絡・到達できる。照合の手がかりになる 電話番号
連結符号 元データと加工後データをつなぎ直せる符号 会員ID
特異な記述 珍しくて少数の人しか当てはまらない 超高齢、限定品、極端な数量・金額
該当者の人数 同じ属性の組合せに該当する人が少ないほど特定されやすい 年代×性別×市区郡

★ が匿名加工で新たに効いてくる観点。「元に戻せない」を担保するために増える視点です。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

チェック結果(1/2)— 規則で必須の措置

項目 第34条の該当 情報特性の分類 単体での識別性 連結符号 特異性
氏名 第1号(削除) 直接識別子
電話番号 第1号(削除) 本人到達性 低(照合の手がかり)
会員ID 第3号(仮IDへ置換) 内部管理識別子/連結符号
生年月日 第5号(年代へ一般化)/超高齢は第4号 準識別子 中(組合せで高) 超高齢は高
商品名 第4号(希少品→カテゴリ化) 行動・履歴 希少品は高
数量・金額 第4号(大量・超高額→丸め) 行動・履歴 極端値は高
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

チェック結果(2/2)— 水準・要否を判断する項目

項目 第34条の該当 情報特性の分類 単体での識別性 連結符号 特異性
住所 第5号(市区郡へ一般化・水準は判断) 準識別子 中(組合せで高)
利用日時 第5号(分単位へ一般化・水準は判断) 行動・履歴 中(店舗と組合せ)
性別 ―(有用性維持) 準識別子
店舗名 ―(有用性維持) 行動・履歴
店舗ID・取引ID・担当者ID・商品ID ―(提供先に不要→自主的に削除) 内部管理 一部
第5号は「どこまで丸めるか」が **設計者の判断**。だから **該当者の人数を数えて確かめる**工程(7/7)が必要になります。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

4/7 ・ 加工の設計

施行規則第34条の枠組みに沿って、項目ごとの方針を決めます。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

加工方針の全体像

置換
会員ID仮ID
一般化
(丸め)
生年月日年代(7区分) 住所市区郡 利用日時分単位 商品名(希少品)カテゴリ/削除 数量(大量)上限で丸め 金額(超高額)区分へ丸め
削除
氏名電話番号店舗ID・取引ID・担当者ID・商品ID***
加工なし
性別店舗名

匿名加工の目的は 再識別・復元を断つこと。個人を特定できる記述・連結符号・特異な記述を落とし、準識別子は「同じ属性の人が十分いる」粒度まで丸めます。性別・店舗名は他項目の加工で特定性が下がるため残します。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

なぜ会員IDを「仮ID」に置き換えるのか

レコードをつなぐIDが要るなら、case01 の整理番号と同じでは?——ここが仮名と匿名の分かれ目です。

共通点

加工後も、顧客属性テーブルと購買履歴テーブルを 仮ID でつないで「属性 × 購買傾向」を分析できる。

違い

匿名加工では、元の会員IDと仮IDを つなぎ直せる対応表を残しません(第34条3号=連結符号の削除)。

  • case01(仮名): 照合の余地を残し 識別禁止義務で運用
  • case02(匿名): そもそも元に戻せない
さらに、特異な記述(4号)を消し、準識別子を丸めることで、「1人しかいない組合せ」から個人が浮かないようにします。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

なぜ丸めるのか — 該当者の人数に応じて

準識別子を細かく残すと

「その組合せに該当する人が少ない」個人が特定されやすくなります。

  • レポートは、該当者の人数・データセットの大きさ・人口の多寡に応じて丸めの度合を(可変に)判断する、としています。
    → 本デモでの選択: 年代7区分・市区郡・分単位
  • 該当者が少ない値は、丸めをさらに粗くする・削除するなどで対応。
  • 加えて、超高齢・限定品・大量購入・超高額のような 特異な記述(4号) は、丸めても浮くため
    削除・カテゴリ化・上限丸めで対処します。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

項目別 評価 → 方針(1/2)

項目 識別性 特異性 提供先の有用性 加工方針 根拠 理由
会員ID 低(単体) 連結に必要 仮IDへ置換 規則で必須 元データと連結できる符号を断つ(対応表は残さない)
氏名 不要 削除 規則で必須 単体で個人を特定できる記述
電話番号 不要 削除 規則で必須 本人到達性。照合で特定につながる
生年月日 超高齢は高 年代で有用 年代7区分へ丸め 自主的 必須 準識別子を丸めて該当者を増やす。超高齢は特異値として対処
住所 エリアで有用 市区郡へ丸め 自主的 詳細エリアを落とし特定性を下げる
性別 有用 加工しない 生年月日・住所の加工で対応、有用性が高い
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

項目別 評価 → 方針(2/2)

項目 識別性 特異性 提供先の有用性 加工方針 根拠 理由
利用日時 時間帯で有用 分単位へ丸め 自主的 店舗(位置)× 秒精度の照合を防ぐ
店舗名 有用 加工しない 利用日時の加工で対応、有用性が高い
店舗ID・取引ID・担当者ID・商品ID 不要 削除 自主的 提供先に不要。想定外の再識別リスクを下げる
商品名 希少品は高 カテゴリで有用 希少品はカテゴリ化/削除 規則で必須 限定品・超高級品は特異な記述
数量 大量は高 有用 特異な数量は丸め/削除 規則で必須 大量購入は特異な記述
金額 超高額は高 有用 超高額は区分へ丸め 規則で必須 超高額は特異な記述(トップコーディング)
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

5/7 ・ 加工仕様

方針を、具体的な処理に落とし込みます。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

主なルール

  • 仮ID(3号): 会員IDをランダムに割り当てた仮ID(例: A000001)へ1対1で置換。元の会員IDと仮IDの対応表は保存しない(作れば連結符号になるため)。
  • 年代7区分(5号措置/4号): 基準日で年齢を算出し「20歳未満/20代/30代/40代/50代/60代/70歳以上」に丸める。超高齢者は「70歳以上」に吸収(=特異値のトップコーディング)。
  • 住所 → 市区郡(5号措置): 「都道府県 + 市区郡」まで残し、町名・丁目番地を削除。
  • 利用日時 → 分単位(5号措置): 秒を削除(YYYY-MM-DD HH:MM)。
  • 商品名 → 商品カテゴリ(4号): 商品名をカテゴリ(野菜・果物・精肉・鮮魚・米/穀物・惣菜/パン・飲料・菓子・調味料)に一般化。限定品・超高級品もカテゴリに吸収され、特異性が消える。
  • 数量のトップコーディング(4号): しきい値(例: 5)を超える数量は「5」に丸める。
  • 金額 → 金額区分(4号): 〜499/500〜999/1,000〜1,999/2,000〜4,999/5,000円以上。超高額は「5,000円以上」に吸収。
  • 削除: 氏名・電話番号・店舗ID・取引ID・担当者ID・商品ID・明細ID。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

加工仕様一覧(列ごとの処理)

元テーブル 元項目 加工 処理 加工後
customers 会員ID 置換 仮ID対応を作り置換 仮ID
customers 氏名・電話番号 削除 列削除
customers 生年月日 一般化 基準日で年齢→年代7区分 年代
customers 性別 加工なし そのまま 性別
customers 住所 一般化 市区郡まで抽出 市区郡
transactions 会員ID 置換 仮ID対応で置換 仮ID
transactions 利用日時 一般化 秒を削除 利用日時(分)
transactions 店舗名 加工なし そのまま 店舗名
transactions 店舗ID・担当者ID・取引ID 削除 列削除
purchases 商品名 一般化 カテゴリへ 商品カテゴリ
purchases 数量 丸め しきい値でトップコーディング 数量
purchases 金額 丸め 区分へ 金額区分
purchases 明細ID・商品ID 削除 列削除

加工後の連結: 顧客属性・購買履歴は仮IDで結合(取引の粒度は保つが、取引IDは残さない)。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

6/7 ・ 実装(Colab)

notebooks/case02_anonymized.ipynb

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

Notebook でやること

流れ

  1. 合成データ(CSV)を取得
  2. 会員ID → 仮ID へ置換(対応表は残さない
  3. 年代7区分・市区郡・分単位へ丸め
  4. 商品名 → カテゴリ、数量 → 上限丸め、金額 → 区分
  5. 不要なIDを削除
  6. 確認テスト
  7. 該当者の人数を数えて丸めの十分さを確認
  8. 属性 × 購買傾向の分析を再現
case01 にはなかった工程

7. 該当者の人数の確認。
匿名加工は「削除・丸めをした」で終わりではなく、その丸めで十分かをデータで確かめるところまでが設計です。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

7/7 ・ 結果確認

匿名性と、分析の成立の両方を確かめます。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

データ規模と加工前後

テーブル 件数
customers 900
transactions 4,600
purchases 13,984

顧客属性は 6項目 → 4項目 に縮約。

  • 置換: 会員ID → 仮ID(対応表は残さない)
  • 削除: 氏名・電話番号/店舗ID・取引ID・担当者ID・商品ID・明細ID
  • 一般化: 生年月日 → 年代7区分、住所 → 市区郡、利用日時 → 分単位
  • 特異値処理: 商品名 → カテゴリ、数量 → 上限5、金額 → 区分
  • 維持: 性別・店舗名
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

加工後テーブル定義

customers_anon(顧客属性)

No. 項目 形式・値域 キー 値の例
1 仮ID A + 6桁 PK A000001
2 年代 {20歳未満,20代,…,70歳以上} 40代
3 性別 {男性, 女性} 女性
4 市区郡 都道府県+市区郡 東京都世田谷区

purchases_anon(購買履歴)

No. 項目 形式・値域 キー 値の例
1 仮ID A + 6桁 FK A000001
2 利用日時 分単位(秒なし) 2026-03-17 19:30
3 店舗名 店舗名 PPCマート大田店
4 商品カテゴリ 9カテゴリ 鮮魚
5 数量 1〜5(上限で丸め) 3
6 金額区分 5区分 1,000〜1,999
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

確認テスト結果(すべて合格)

  • ✅ 元の会員ID・氏名・電話番号・生年月日・住所が加工後データに存在しない
  • ✅ 仮IDが一意(900件)で、顧客属性と購買履歴を仮IDで結合できる
  • ✅ 利用日時に秒が残っていない(分単位)
  • ✅ 商品名が消えてカテゴリ化され、数量は上限5、金額は区分になっている
  • ✅ レコード数が意図せず変化していない(purchases 13,984)
スキーマ上の匿名化はこれで確認できました。しかし **これだけでは足りません**。次のスライドへ。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

該当者の人数を数える — 丸めの度合は十分か

準識別子の組合せ (年代 × 性別 × 市区郡) ごとの人数を数え、該当者の少ない組合せがないかを見ます。

指標
組合せの数 129
最も少ない組合せの人数 1
該当者が少ない組合せ(目安: 5名未満) 37 組合せ(107 名)
つまり

規則上の必須措置をすべて満たしても、「その組合せに1人しかいない」顧客が残っている
実際の提供では、ここからさらに丸めを調整する必要があります。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

該当者が少ない組合せへの対応

打ち手

  • 丸めの度合を粗くする
    (例: 市区郡 → 都道府県、年代の区分をまとめる)
  • 該当者が極端に少ない値は 削除する
ポイント

該当者の人数に応じて丸めの度合を決める。

case01(仮名)が「照合しなければ特定できない」状態づくりだったのに対し、
匿名加工は 丸めの度合を対象データに合わせて設計する ぶん、ひと手間増えます。

case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

加工後データで、提供先の分析は成立するか

年代別 購入カテゴリ トップ3

  • 20代: 惣菜・パン / 菓子 / 飲料
  • 40代: 果物 / 野菜 / 精肉
  • 70歳以上: 野菜 / 菓子 / 鮮魚

年代で購入カテゴリの傾向が異なる
属性 × 購買傾向の分析は匿名加工後も成立

年代別 金額区分の構成(割合・一部)

年代 〜499 500〜999 1,000〜1,999 2,000〜4,999 5,000円〜
20代 0.50 0.29 0.14 0.06 0.02
40代 0.45 0.33 0.14 0.05 0.03
70歳以上 0.41 0.34 0.15 0.06 0.03
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

制度上の取り扱い(提供時)

匿名加工情報を第三者提供する際は、次の取り扱いが求められます。

  • 含まれる情報の項目の公表
  • 提供方法の公表と、匿名加工情報である旨の明示
  • 識別行為の禁止
加工は「作って終わり」ではなく、**作成時・提供時の公表と、提供後の取り扱い**までがセットです。 詳細は最新のガイドラインで確認してください。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

まとめ — 覚えておく3点

  1. 匿名加工には 一律の作成基準(施行規則第34条) がある。
    1〜4号は削除・置換、5号の丸めの水準は設計者の判断

  2. 連結符号を断つ(対応表を残さない)ことと、特異な記述を消すことが、
    仮名加工との決定的な違い。

  3. 規則を満たした ≠ 十分に匿名
    該当者の人数を数えて、丸めが足りているかをデータで確かめる。

それでも「集計統計だけなら安全」とは限りません —— それを見るのが case04 再構築デモです。
case02 匿名加工情報 | 仮名加工情報・匿名加工情報 事例再現デモ

次は case03 ・ 再識別デモ

ここからは攻撃者の視点で、加工が不十分だとどうなるかを見ます。

出典: 個人情報保護委員会事務局レポート「仮名加工情報・匿名加工情報 ―事例編―」2.1.1 購買履歴の事例1(ID-POS データ)
サイト: https://gghatano.github.io/pets-seminar-01/
ライセンス: 教材コンテンツ CC BY 4.0 / コード MIT