Chrome拡張機能のプライバシーポリシーの作り方:ローカル保存と外部送信を整理する
前回の記事「Chrome拡張機能の権限設計とは?permissionsとhost_permissionsを最小限にする考え方」では、必要な権限だけを manifest.json へ追加する考え方を紹介しました。
Chrome拡張機能をChrome Web Storeへ公開する場合は、権限だけでなく、利用者のデータをどのように扱うかも整理する必要があります。
たとえば、設定値、コメント履歴、閲覧ページのURL、フォーム入力、外部APIへ送信するデータなどです。
データを外部サーバーへ送信しない拡張機能でも、ブラウザ内へ何を保存するか、利用者が削除できるかを説明できる状態にしておくと安心です。
この記事では、初心者向けにChrome拡張機能のプライバシーポリシーへ書く項目を整理します。
ローカル保存だけで完結する拡張機能と、外部APIへデータを送信する拡張機能を分けて考えます。

プライバシーポリシーとは
プライバシーポリシーは、利用者のデータをどのように扱うかを説明する文書です。
Chrome拡張機能では、主に次の内容を整理します。
- どのような機能を提供するか
- どのデータを取得または保存するか
- データをどこへ保存するか
- 外部サーバーへ送信するか
- 第三者へ提供するか
- 利用者がデータを削除できるか
- 問い合わせ先はどこか
プライバシーポリシーは、長い文章を書けばよいものではありません。
実際の拡張機能の動作と一致し、利用者が必要な内容を確認できることが重要です。
Chrome Web Storeで必要になる理由
Chrome Web StoreのUser Dataポリシーでは、ユーザーデータを扱う場合、正確で最新のプライバシーポリシーを公開することが求められています。
また、Chrome Web StoreのDeveloper Dashboardでは、拡張機能が扱うデータや用途を開示します。
次の3つは、同じ内容になっている必要があります。
- 拡張機能の実際の動作
- Developer Dashboardでの開示
- 公開しているプライバシーポリシー
たとえば、プライバシーポリシーに「外部送信はありません」と書いているのに、実際には分析サービスへデータを送信している状態は問題です。
機能追加や外部サービス変更を行った場合は、ポリシーも更新します。
ローカル保存でも整理する
前々回の記事では、IndexedDBへコメント履歴を保存しました。
このサンプルでは、外部サーバーへコメントを送信しません。
しかし、ブラウザ内には次のデータが残ります。
投稿者名
コメント本文
記録日時このような場合も、利用者へ次の内容を説明できるようにします。
- コメント履歴を保存すること
- 保存先がブラウザ内のIndexedDBであること
- 外部サーバーへ送信しないこと
- 拡張機能の削除やブラウザデータの消去で失われる可能性があること
- 履歴を削除する方法
ローカル保存は、外部送信がないという点で分かりやすい設計です。
ただし、利用者から見ると、何が保存されているかは説明がなければ分かりません。
外部送信がある場合は送信先も書く
外部API、クラウド保存、分析サービスなどを使う場合は、外部送信の内容を整理します。
たとえば、翻訳APIへ選択した文章を送る拡張機能なら、次の項目を説明します。
| 項目 | 確認する内容 |
|---|---|
| 送信するデータ | 選択した文章 |
| 送信先 | 利用する翻訳API |
| 送信目的 | 翻訳結果を取得するため |
| 保存の有無 | API側または自分のサーバーで保存するか |
| 第三者提供 | 他の目的で提供するか |
| 利用者の操作 | 翻訳ボタンを押したときだけ送信するか |
送信先が自分のサーバーではなく、第三者のサービスである場合も説明します。
外部サービス側の規約やプライバシーポリシーも確認します。
最初にデータ棚卸し表を作る
プライバシーポリシーを書き始める前に、拡張機能が扱うデータを一覧にします。
コードを見ながら、保存、送信、表示に関わる処理を確認します。
たとえば、コメント履歴を保存する拡張機能なら、次のように整理できます。
| データ | 取得方法 | 保存先 | 外部送信 | 削除方法 |
|---|---|---|---|---|
| 投稿者名 | 対象ページまたは利用者入力 | IndexedDB | なし | 履歴削除機能 |
| コメント本文 | 対象ページまたは利用者入力 | IndexedDB | なし | 履歴削除機能 |
| 記録日時 | 拡張機能内で生成 | IndexedDB | なし | 履歴削除機能 |
| ON/OFF設定 | popupで利用者が選択 | chrome.storage.local | なし | 設定初期化 |
外部APIを使う場合は、送信先と目的も追加します。
送信先
送信するタイミング
利用目的
外部サービス側での保存有無データ棚卸し表があると、書き漏らしを減らせます。
プライバシーポリシーへ書く基本項目
小規模なChrome拡張機能でも、次の項目を整理すると書きやすくなります。
| 項目 | 書く内容 |
|---|---|
| 適用対象 | どの拡張機能のポリシーか |
| 提供機能 | 拡張機能が何を行うか |
| 取得または保存するデータ | 設定値、履歴、URL、入力内容など |
| 利用目的 | なぜそのデータが必要か |
| 保存場所 | ブラウザ内、開発者サーバー、第三者サービスなど |
| 外部送信 | 送信の有無、送信先、送信目的 |
| 第三者提供 | 提供の有無、例外条件 |
| 削除方法 | 利用者が削除する方法 |
| 保持期間 | 保存期間または削除方針 |
| セキュリティ | 必要な対策を行うこと |
| 変更 | ポリシー更新時の扱い |
| 問い合わせ先 | 連絡方法 |
扱うデータが少ない場合は、簡潔に書けます。
扱うデータや外部連携が増えるほど、説明も具体的にします。

ローカル保存だけの場合の構成例
ここでは、コメント履歴をIndexedDBへ保存し、外部送信しない拡張機能を例にします。
次の文章は、そのまま公開する完成版ではありません。
実際の拡張機能名、保存するデータ、削除方法、問い合わせ先に合わせて書き換えるための構成例です。
# プライバシーポリシー
## 1. 適用対象
このプライバシーポリシーは、Chrome拡張機能「○○○○」に適用されます。
## 2. 保存するデータ
本拡張機能は、機能提供のため、次のデータを利用者のブラウザ内へ保存します。
- 投稿者名
- コメント本文
- 記録日時
- 拡張機能の設定値
## 3. 保存場所
コメント履歴はブラウザ内のIndexedDBへ保存します。
設定値はchrome.storage.localへ保存します。
## 4. 外部送信
本拡張機能は、保存したデータを外部サーバーへ送信しません。
## 5. 第三者提供
本拡張機能は、保存したデータを第三者へ提供しません。
## 6. データの削除
利用者は、本拡張機能の履歴削除機能から保存済みデータを削除できます。
また、本拡張機能を削除した場合、ブラウザ内に保存されたデータも削除されることがあります。
## 7. お問い合わせ
お問い合わせは、次の連絡先へお願いします。
連絡先:○○○○実際には、拡張機能に履歴削除機能があるか確認します。
削除機能が未実装なら、存在するように書いてはいけません。
必要な削除方法を実装してから公開します。
外部APIへ送信する場合の追記例
外部APIへデータを送信する場合は、送信先と目的を具体的にします。
たとえば、利用者が選択した文章を翻訳APIへ送る場合は、次のような項目を追加します。
## 外部サービスへの送信
本拡張機能は、利用者が翻訳機能を実行したときに、選択された文章を翻訳APIへ送信します。
送信するデータ:
- 利用者が選択した文章
送信目的:
- 翻訳結果を取得するため
送信先:
- ○○翻訳API
送信は、利用者が翻訳機能を実行した場合に限ります。第三者サービスを使う場合は、そのサービス側でデータを保存するかも確認します。
自分の拡張機能で保存していなくても、送信先で保存される場合があります。
プライバシーポリシーを公開する場所
Chrome Web Storeへ登録する場合は、利用者がアクセスできるURLでプライバシーポリシーを公開します。
自分のWebサイトやブログに、プライバシーポリシー専用ページを作る方法があります。
公開ページでは、次の点を確認します。
- ログインしなくても閲覧できる
- URLが安定している
- 拡張機能名が明記されている
- 問い合わせ先が確認できる
- 最新の内容へ更新されている
- スマホでも読める
複数の拡張機能を公開する場合は、拡張機能ごとにデータの扱いを区別できるようにします。
Developer Dashboardの開示と一致させる
プライバシーポリシーを公開したら、Chrome Web StoreのDeveloper Dashboardでもデータの扱いを確認します。
開示内容は、拡張機能の実際の動作とポリシー本文に合わせます。
確認する流れは次の通りです。
- 拡張機能が扱うデータを棚卸しする
- 保存先と外部送信先を確認する
- プライバシーポリシーを書く
- 公開URLを用意する
- Developer Dashboardでデータ利用を開示する
- 実装、開示、ポリシー本文が一致するか確認する

権限とデータ利用を対応させる
前回の記事では、権限と機能の対応表を作りました。
プライバシーポリシーを作るときは、データ利用も追加して確認します。
| 権限または保存先 | 使用する機能 | 扱うデータ | 外部送信 |
|---|---|---|---|
storage | popup設定保存 | ON/OFF設定 | なし |
| IndexedDB | コメント履歴保存 | 投稿者名、コメント本文、記録日時 | なし |
https://api.example.com/* | 外部API連携 | APIへ送る入力値 | APIへ送信 |
content_scripts.matches | ページ内処理 | 対象ページから取得する情報 | 実装に応じて確認 |
権限だけを見ても、データの扱いは分かりません。
逆に、ポリシー本文だけを書いても、コードと manifest.json が一致しているかは分かりません。
実装、権限、データ棚卸し表、Developer Dashboard、プライバシーポリシーをまとめて確認します。
よくある注意点
外部送信なしと書く前に通信を確認する
外部APIを使っていなくても、分析ツール、エラー収集、広告、外部画像、CDNなどを追加している場合があります。
コード、依存関係、ネットワーク通信を確認します。
本当に外部送信がない場合だけ、「外部送信なし」と書きます。
必要以上に広い文章にしない
将来追加するかもしれない機能を先回りして書くと、現在の拡張機能が何をするのか分かりにくくなります。
現在の実装に合わせて書きます。
機能追加時に、ポリシーを更新します。
収集と保存を区別する
Webページから一時的に読み取るデータ、ブラウザ内へ保存するデータ、外部サーバーへ送信するデータは分けて整理します。
たとえば、ページタイトルをpopupへ表示するだけなら、履歴として保存しない場合があります。
一方、コメント履歴をIndexedDBへ残すなら、保存するデータとして説明します。
削除方法を実装と一致させる
「利用者が削除できます」と書く場合は、実際に削除方法を用意します。
設定初期化、履歴全件削除、拡張機能削除時の扱いなど、利用者が確認できる形にします。
機能追加時に更新する
次のような変更を行った場合は、プライバシーポリシーを見直します。
- 外部APIを追加した
- 分析ツールを追加した
- 広告を追加した
- 保存するデータを増やした
- 保存先を変更した
- 第三者サービスを変更した
- 削除方法を変更した
公開前チェックリスト
Chrome Web Storeへ公開する前に、次の項目を確認します。
- 拡張機能が扱うデータを一覧にしたか
- 一時的に読むデータと保存するデータを分けたか
- ブラウザ内の保存先を確認したか
- 外部送信の有無を確認したか
- 外部送信がある場合、送信先と目的を書いたか
- 第三者サービス側での保存有無を確認したか
- 第三者提供の有無を書いたか
- 利用者がデータを削除する方法を書いたか
- 削除方法が実際に利用できるか
- 問い合わせ先を書いたか
- ポリシーをログイン不要のURLで公開したか
- Developer Dashboardの開示と一致しているか
manifest.jsonの権限と説明が一致しているか- 機能追加時に更新する運用を決めたか
法的な判断が必要な場合
この記事は、Chrome拡張機能を公開する前にデータの扱いを整理するための技術的な入門です。
個人情報、決済情報、健康情報、認証情報、子どもに関するデータ、業務上の機密情報などを扱う場合は、追加の検討が必要です。
対象地域、提供形態、利用者、扱うデータによって、必要な対応は変わります。
判断が難しい場合は、専門家へ確認します。
参考リンク
- User Data FAQ
- Chrome Web Store Program Policies
- Use of Permissions
- Prepare to publish: Privacy practices
まとめ
この記事では、Chrome拡張機能のプライバシーポリシーへ書く項目を整理しました。
最初に、拡張機能が扱うデータを棚卸しします。
一時的に読み取るデータ、ブラウザ内へ保存するデータ、外部サーバーへ送信するデータを分けます。
ローカル保存だけで完結する場合は、保存内容、保存場所、外部送信がないこと、削除方法を説明します。
外部APIを使う場合は、送信するデータ、送信先、利用目的、保存の有無を具体的にします。
最後に、実際の動作、manifest.json の権限、Developer Dashboardでの開示、プライバシーポリシー本文が一致しているかを確認します。
テンプレートをそのまま使わず、自分の拡張機能の実装に合わせて書き換えることが重要です。



Your Message