同意とデータ取得|データ利用・法律・権利の読み方

このページはプロモーション(広告)を含みます。

データ利用・法律・権利の読み方(初級・読む30分+演習30分)

この授業のゴール

仕事でどう使うか

データの利用可否は、どうやって手に入れたかで大きく変わります。同じ購入履歴でも、自社サービスの利用に伴って記録したものと、他社から買ったものでは、確認すべきことが違います。そして、取得時に何を本人に伝え、何に同意してもらったかが、後の分析・学習・共有の範囲を決めます。

路線 この授業の使いどころ
DS(データサイエンティスト) 分析対象を抽出するとき、同意の記録(版・項目・撤回)で対象者を絞る。抽出条件を分析計画書に書く
ML(機械学習エンジニア) 学習データに、同意していない人や撤回した人のデータが入らないよう、データパイプラインで同意フラグを確認する
DX(DX推進・AI企画) アプリやWebフォームの同意画面を企画するとき、目的・提供先・撤回方法を利用者に分かる形で設計し、法務・個人情報の担当部署と調整する
RS(研究者) 研究参加者へのインフォームド・コンセント(説明を受けたうえでの同意)の文書を作り、倫理審査を受ける。Webからデータを集めるときの規約・倫理を確認する

同意は「取ったら終わり」ではなく、版と撤回を管理し続けるデータです。

前提

この授業の位置づけ:法律・ガイドラインの説明は、執筆時点(2026年)の一般的な説明です。法令・ガイドラインは改正され、管轄(国・地域)や個別の事実で結論が変わります。この授業は法的助言ではありません。実際の案件では、最新の公式情報を確認し、社内の法務・知財・個人情報保護の担当者や弁護士などの専門家に相談してください。教材の自己採点で「合格」しても、それは法的な承認ではありません。

身近な状況:「同意は取ってあります」の中身

架空の動画配信アプリで、ML担当の中村さんが「視聴履歴の分析によるおすすめ表示」を作ることになりました。企画書には「利用者の同意は取得済み」と書かれています。

ところが、同意の記録を調べると次のことが分かりました。

「同意は取ってあります」の中に、少なくとも4種類の状態が混ざっていました。全員のデータで学習すれば、同意していない人・撤回した人のデータを使うことになります。

この授業では、取得経路ごとの確認点と、同意の記録の読み方を学びます。

直感的な説明:同意は「何に」「いつ」「どの約束に」したかの記録

同意を「はい/いいえ」だけで考えると失敗します。同意は次の4つがそろって意味を持ちます。

  1. 何に:どの利用目的・どの提供先についての同意か(項目)
  2. いつ:同意した日時。そして撤回した日時
  3. どの約束に:どの版の説明文に同意したか(文面の版)
  4. どうやって:本人が自分の意思で明確に示したか

同意は範囲付きの許可証のようなもので、本人は返却(撤回)できます。新しい使い方には新しい許可証が必要になることがあります。

一方で、すべての利用に同意が必要なわけではありません。日本の個人情報保護法の一般的な説明では、利用目的を特定して通知・公表し、その範囲内で使う場合には、利用そのものに改めて同意を得る必要は原則としてないとされます。同意が問題になりやすいのは、次のような場面です。

場面 一般的な説明
利用目的の範囲を超えて使う 原則として本人の同意が必要
個人データを第三者に提供する 原則として本人の同意が必要(委託などの例外的な扱いあり)
要配慮個人情報を取得する 原則として本人の同意が必要
研究への参加 研究倫理の指針や所属機関の規程で、説明と同意の手続きが定められていることが多い

「同意を取れば何でもできる」も誤りです。同意があっても安全管理などの義務はなくならず、本人が予想できない使い方は信頼を損ないます。

正確な定義:取得経路ごとの確認点と、有効な同意の要素

取得経路ごとの確認点

取得経路 主な確認点
本人から直接(フォーム、アンケート) 取得時に示した利用目的、同意項目、文面の版、任意か必須か
サービス利用に伴う記録(ログ、購入履歴) プライバシーポリシーの利用目的、Cookieなどの外部送信の扱い、記録の範囲
他社からの提供 提供元が適法に取得しているか、提供の根拠(本人同意など)、契約上の利用条件。個人データの提供を受ける場合、取得の経緯を確認・記録するルールがあると説明されている
Webからの収集(スクレイピング、API) サイトの利用規約、APIの規約、robots.txt(クローラーへのアクセス制御の意思表示)、サーバーへの負荷、個人情報や著作物が含まれるか
購入(データ販売事業者など) 他社からの提供と同じ確認に加え、再提供の可否

Cookie やアプリの利用者情報を外部に送信する場合については、電気通信事業法に、利用者への通知・公表などを求めるルール(いわゆる外部送信規律)が設けられています。対象となる事業者や求められる内容は、総務省の公式資料で確認してください。

有効な同意の要素(実務で確認する点):同意の有効性の判断は事案によりますが、実務では次の点を確認します。

同意の記録の基本形:1行=「1人×1項目×1回の同意」とし、次の列を持たせます。

列 意味
user_id 利用者ID
version 同意した文面の版
consent 回答(yes/no)。空欄は「未回答・不明」で、noとも yes とも違う
granted_on 同意(回答)した日
withdrawn_on 撤回した日(撤回していなければ空欄)

ある日に利用できる対象者は、「対象の目的を含む版 かつ consent が yes かつ その日までに撤回していない」人です。

段階付き例題:今日の時点で利用できる対象者を数える

冒頭の動画アプリの同意記録(項目「視聴履歴の分析によるおすすめ表示」)の一部です。今日(2026年10月11日)、おすすめ表示の対象者を抽出します。v1 の文面にはこの目的の記載がなく、v2 以降に記載があります。

user_id version consent granted_on withdrawn_on
u01 v2 yes 2026-03-01
u02 v1 yes 2025-11-10
u03 v2 no 2026-04-02
u04 v2 yes 2026-05-20 2026-08-15
u05 v3 yes 2026-07-01
u06 v3 yes 2026-10-05
u07 v2 yes 2026-02-14 2026-10-03
u08 v3 (空欄)
u09 v2 yes 2026-06-30
u10 v3 yes 2026-09-01

ステップ1:版で絞る。v1 の u02 は、この目的についての同意とは読めないので除外。残り9人。

ステップ2:回答で絞る。consent が yes の人だけ残す。u03(no)と u08(空欄)を除外。空欄を yes とみなさないことが重要です。残り7人。

ステップ3:撤回で絞る。今日までに撤回した u04(8月15日)と u07(10月3日)を除外。残り5人。

ステップ4:結果。対象者は u01、u05、u06、u09、u10 の 5人(10人中50%)。

ステップ5:意味を書く。

対象は10人中5人。v1 の同意者(u02)に新しい版で同意を求めるかを担当部署と検討。未回答(u08)は対象外とし、空欄の原因を調査する。

同じ処理をコードで書くと、次のようになります(pandas の read_csv で表を読み、条件を &(かつ)でつなぎます)。

import io
import pandas as pd

csv = '''user_id,version,consent,granted_on,withdrawn_on
u01,v2,yes,2026-03-01,
u02,v1,yes,2025-11-10,
u03,v2,no,2026-04-02,
u04,v2,yes,2026-05-20,2026-08-15
u05,v3,yes,2026-07-01,
u06,v3,yes,2026-10-05,
u07,v2,yes,2026-02-14,2026-10-03
u08,v3,,,
u09,v2,yes,2026-06-30,
u10,v3,yes,2026-09-01,'''
df = pd.read_csv(io.StringIO(csv), dtype=str)   # すべて文字列として読む(空欄は NaN)
today = '2026-10-11'
version_ok = df['version'].isin(['v2', 'v3'])
said_yes = df['consent'] == 'yes'                 # NaN(空欄)は False になる
not_withdrawn = df['withdrawn_on'].isna() | (df['withdrawn_on'] > today)
eligible = df[version_ok & said_yes & not_withdrawn]
print(eligible['user_id'].tolist())
print('対象者数:', len(eligible), '/', len(df))

日付は 'YYYY-MM-DD' 形式の文字列なので、大小比較で前後を判定できます(形式がそろっている前提)。

操作して理解する:条件を変えると対象者はどう変わるか

前の例題のコードで、条件を1つずつ変えて結果を予想してから確かめてください。

import io
import pandas as pd

csv = '''user_id,version,consent,granted_on,withdrawn_on
u01,v2,yes,2026-03-01,
u02,v1,yes,2025-11-10,
u03,v2,no,2026-04-02,
u04,v2,yes,2026-05-20,2026-08-15
u05,v3,yes,2026-07-01,
u06,v3,yes,2026-10-05,
u07,v2,yes,2026-02-14,2026-10-03
u08,v3,,,
u09,v2,yes,2026-06-30,
u10,v3,yes,2026-09-01,'''
df = pd.read_csv(io.StringIO(csv), dtype=str)

def eligible_ids(df, today, versions):
    ok = (df['version'].isin(versions)
          & (df['consent'] == 'yes')
          & (df['withdrawn_on'].isna() | (df['withdrawn_on'] > today)))
    return df.loc[ok, 'user_id'].tolist()

print('(1) 今日・v2以降  :', eligible_ids(df, '2026-10-11', ['v2', 'v3']))
print('(2) 9月30日時点   :', eligible_ids(df, '2026-09-30', ['v2', 'v3']))
print('(3) v3のみ        :', eligible_ids(df, '2026-10-11', ['v3']))

関数 eligible_ids(df, today, versions) は、表 df、基準日 today(文字列)、対象とする版のリスト versions を受け取り、条件を満たす user_id のリストを返します。

予想と答え:

考える問い:10月1日に作った配信リストに、10月3日に撤回した u07 が残っていたら? → 撤回を反映したリストに作り直します。撤回の反映範囲は担当部署と決めて記録します。

発展:Webからの収集と研究データの取得

Webからの収集では、①利用規約とAPIの規約(契約の層)、②robots.txt(法律そのものではないが運営者の意思表示として尊重する)、③アクセス頻度による相手サーバーへの負荷、④中身の権利(投稿文・画像の著作権、投稿者の個人情報)を確認します。公開されている個人情報でも個人情報保護法上の扱いがなくなるわけではなく、偽りその他不正の手段による取得は禁じられていると説明されています。先に公式API・データ提供契約・公開データセットといった代替手段を探します。

研究データ:人を対象とする研究では、研究倫理の指針(医学系の研究には国の倫理指針があります)や所属機関の規程に基づき、倫理審査とインフォームド・コンセントの手続きが求められるのが一般的です。既存データの二次利用の手続きが定められていることもあります。

限界:収集の適否は、規約・取得方法・データの内容・用途の組み合わせで変わります。始める前に取得計画(対象・頻度・保存・用途)を書いて担当部署に確認するのが安全です。

よくある失敗

失敗1:「公開されているから同意も確認も不要」と考える

誤った例:

「SNSの公開投稿を5万件スクレイピングして、投稿者名付きのまま社内で分析し、データセットとして取引先にも共有します。公開情報なので問題ありません。」

なぜ誤りか:少なくとも4つの論点を見落としています。

論点 層 内容
利用規約 契約 自動取得や取得データの再配布を禁止している場合がある
個人情報 法律 投稿者名などは個人情報。公開されていても保護の対象外になるわけではない。取引先への共有は第三者提供の論点
著作権 法律 投稿文や画像は著作物になりうる。データセットとしての配布は別の行為
社内規程 規程 外部データの収集・共有に承認が必要な場合がある

直し方:公式APIや規約の範囲を確認し、取得計画を担当部署に相談します。分析に投稿者名が不要なら取得しない(最小化)、共有は集計結果にとどめる、などの設計にします。

失敗2:あらかじめチェック済みの「すべてに同意」で同意を取ったことにする

誤った例:登録画面に次の1つだけのチェックボックスを置き、最初からチェックを入れておいた。

☑ 利用規約、プライバシーポリシー、マーケティング情報の受け取り、提携企業への情報提供、すべてに同意する

なぜ誤りか:

直し方:項目を分け、任意の項目は初期状態をチェックなしにします。提供先と提供する情報を具体的に書き、撤回方法(設定画面のどこから撤回できるか)を示します。文面の版を記録し、変更したら版を上げます。

失敗3:空欄(未回答)を同意とみなしてしまう

同意記録で「no ではない人」を抽出すると、空欄の人まで同意者に含まれます。

import pandas as pd

df = pd.DataFrame({'user_id': ['a', 'b', 'c'],
                   'consent': ['yes', 'no', None]})   # c は未回答(欠損)
wrong = df[df['consent'] != 'no']      # 誤り:None も「no ではない」に入る
right = df[df['consent'] == 'yes']     # 正しい:yes と明示した人だけ
print('誤り:', wrong['user_id'].tolist())
print('正しい:', right['user_id'].tolist())

出力は「誤り: ['a', 'c']」「正しい: ['a']」です。未回答の c は、同意したかどうか分からない人です。

なぜ誤りか:欠損は「不明」であり、yes でも no でもありません。同意のように本人の意思を示す列では、不明を同意として扱うと、同意していない人のデータを使う危険があります。

直し方:抽出条件は「yes と等しい」と肯定形で書きます。空欄の件数を別に数えて報告し、空欄が生じた原因(データ移行、画面の不具合)を調べます。

まとめ

用語

同意(consent)

本人が、示された内容での個人情報の取り扱いを認める意思表示。項目・版・日時・撤回とセットで記録する。

撤回(withdrawal)

本人が、以前に行った同意を取り消すこと。撤回後の処理への反映方法を決めて記録する。

インフォームド・コンセント(informed consent)

研究や医療などで、目的・方法・リスク・任意性などの説明を受け、理解したうえで本人が行う同意。

スクレイピング(web scraping)

プログラムでWebページから情報を自動的に収集すること。利用規約・robots.txt・負荷・中身の権利を確認する。

robots.txt(robots.txt)

Webサイトが、クローラー(自動収集プログラム)にアクセスしてよい範囲を示すファイル。運営者の意思表示として尊重するのが一般的な作法。

よくある質問

なぜ同意の「版」まで記録する必要があるのですか?

同意の範囲は、本人が読んだ文面で決まるからです。文面は改定されるので、版を記録していないと、ある人が新しい目的に同意しているのかどうか判断できません。例題の u02 のように、古い版の同意者を誤って対象に含める失敗を防げます。

同意と、利用目的の通知・公表は何が違いますか?

通知・公表は、事業者が利用目的を本人に知らせることです。同意は、本人が特定の取り扱いを認める意思表示です。利用目的の範囲内の利用は通知・公表で足りるのが原則で、目的外の利用や第三者提供などでは原則として同意が問題になります。

撤回された人のデータは、すぐに全部消さなければいけませんか?

撤回の対象(どの項目の同意か)と、法律・契約・社内規程で定められた保存の必要性によって変わります。例えば、配信の同意を撤回した人を配信リストから外すことと、取引記録そのものを削除することは別の話です。撤回をどの処理・データにいつ反映するかを、担当部署と決めて記録します。

研究で使うアンケートの同意と、会社のサービスの同意は同じですか?

考え方は似ていますが、研究では研究倫理の指針や所属機関の規程に基づき、研究目的・方法・リスク・参加の任意性・撤回などを説明する手続きが定められていることが多く、倫理審査も必要になるのが一般的です。所属機関の倫理審査委員会の手続きに従ってください。

同意率が低いと分析に偏りが出ませんか?

出ます。同意した人だけのデータは、同意しない人と性質が違う可能性があります(選択バイアス)。分析結果を報告するときは、対象が同意者に限られることと、同意者の構成(年代・利用頻度など)を書き添えます。偏りを理由に同意していない人のデータを使うことはできません。

仕事で「同意は取ってあります」と言われたら、何を聞けばよいですか?

①どの項目への同意か、②どの版の文面か、③同意の記録はどこにあり、撤回はどう反映されているか、④未回答の人はどう扱われているか、の4点です。この4つに答えられれば、抽出条件を正しく書けます。

確認問題

問1 日本の個人情報保護法の一般的な説明として、同意が原則として必要になる場面はどれか。

  1. ① 公表した利用目的の範囲内で、購入履歴を集計する
  2. ② 社内でデータのバックアップを取る
  3. ③ 自社サービスの提供のために配送先住所を使う
  4. ④ 個人データを第三者に提供する
解答と解説

正解:④

第三者提供は、原則として本人の同意が必要な場面として説明されます(委託などの例外的な扱いあり)。利用目的の範囲内の利用には、原則として改めて同意を得る必要はないとされます。

問2 同意記録の consent 列に空欄(欠損)がある人の扱いとして、最も適切なものはどれか。

  1. ① 未回答・不明として、同意者には含めない。空欄の原因を調べる
  2. ② no ではないので同意者として扱う
  3. ③ 0 に置き換えて no として集計し、原因は調べない
  4. ④ 平均的な同意率で補完する
解答と解説

正解:①

欠損は「不明」であり、同意の意思表示ではありません。本人の意思を示す列では、yes と明示した人だけを対象にします。

問3 あるサービスの旧版(v1)の同意文面には「分析によるおすすめ表示」の記載がなく、v2 から加わった。v1 に同意した利用者のデータについて最も適切な判断はどれか。

  1. ① 同意は同意なので、v1 の同意者も分析に使える
  2. ② v1 の利用者は全員削除する
  3. ③ v1 の同意は、この目的についての同意とは読めない。新しい文面での同意を求めるか、利用目的との関係を担当部署と検討する
  4. ④ v1 の同意者には知らせずに v2 に同意したものとして記録を書き換える
解答と解説

正解:③

同意は「どの版の文面に」したかで範囲が決まります。v1 の文面に含まれない目的への同意とは読めません。

問4 Webサイトからデータを自動収集する前の確認として、最も不十分なものはどれか。

  1. ① サイトの利用規約と、公式APIの有無を確認する
  2. ② robots.txt と、アクセス頻度による相手サーバーへの負荷を確認する
  3. ③ 収集するデータに個人情報や著作物が含まれるかを確認する
  4. ④ 公開されているページなので、確認せずに全ページを短時間で取得する
解答と解説

正解:④

公開されていることは、規約・個人情報・著作権・負荷の問題がないことを意味しません。

問5 同意画面の設計として、最も適切なものはどれか。

  1. ① すべての項目を1つのチェックボックスにまとめ、最初からチェックを入れておく
  2. ② 任意の項目は基本機能と分け、初期状態をチェックなしにし、提供先・用途・撤回方法を示す
  3. ③ 撤回されると困るので、撤回方法は示さない
  4. ④ 目的は変わる可能性があるので「事業のため」とだけ書く
解答と解説

正解:②

具体的・明確な行為・分けて示す・撤回できる・記録がある、という要素を満たす設計です。

問6 他社から顧客リスト(個人データ)の提供を受けて分析に使う。受け取る側の確認として最も適切なものはどれか。

  1. ① 提供元がどのように取得したか、提供の根拠(本人の同意など)、契約上の利用条件を確認し、記録する
  2. ② 提供元が持っていたデータなので、受け取る側は何も確認しなくてよい
  3. ③ 代金を払って購入したデータなら、どの目的にも使える
  4. ④ 氏名を削除すれば、取得の経緯は関係なくなる
解答と解説

正解:①

受け取る側にも、取得の経緯を確認・記録するルールがあると説明されています。契約上の利用条件も確認します。

次に学ぶこと

次は 共有・保存・削除 で、取得したデータを共有・保存・削除するときの確認点を学びます。撤回や保存期限の管理もここで扱います。

関連:収集方法とバイアスは 収集方法とバイアス、データの最小化と匿名化は 「最小化と匿名化」(有料版)、研究の倫理と計画は研究モジュール(研究の問い・新規性・検証 など)で扱います。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い