プライバシーポリシー
1. 基本方針
- アカウント登録は不要です。広告、アクセス解析、トラッキング、第三者の SDK は使っていません。
- 受信したデータは、初期状態では端末の外に送信しません。
- 端末の外に送信するのは、利用者が「実測データの提供に協力する」を選んだ場合の、「4. 実測データの提供」に書いた情報だけです。
2. 端末の中だけで扱う情報
| 情報 | 使い方 |
|---|---|
| 受信した Bluetooth 信号(高度化PICS) | 信号の状態を表示するために、メモリ上で扱います。受信のみで、信号機には何も送信しません。 |
| 受信データの記録ファイル | 設定で「受信データを記録する」をオンにしたときだけ作ります。端末内(アプリの書類フォルダ)に保存し、利用者が共有しない限り端末の外に出ません。受信した信号データ(交差点 ID と、信号機が発信する交差点の位置を含む)と受信時刻を記録します。送信機は E1、E2… と表記します。利用者の現在地(緯度・経度)は含みませんが、交差点 ID、交差点の位置、受信した時刻を含むため、いつどの交差点にいたかは分かります。共有するときはご注意ください。 |
| 設定 | 表示の配色、画面を消さない設定、実測データの提供の選択などを端末内に保存します。 |
アプリを削除すると、これらはすべて端末から削除されます。
3. 位置情報
- 位置情報の利用許可は、実測データの提供に協力している場合だけ求めます。協力しない場合は求めません。
- 位置情報は、交差点から見たおおまかな方向(8 方位)を端末内で計算するためだけに使います。利用者の現在地の緯度・経度は、保存も送信もしません。
- 許可しなくても、すべての機能を使えます。その場合、方向は「不明」として送信します。
4. 実測データの提供(任意)
初回起動時に協力するかどうかを選べます。どちらを選んでも、使える機能は同じです。設定画面でいつでも変更できます。
送信する情報
協力している場合だけ、アプリが実際の信号を受信している間に、次の情報を送信します。デモや記録ファイルの再生中のデータは送信しません。
| 情報 | 内容 |
|---|---|
| 交差点 ID | 信号機が発信している 8 桁の ID |
| 受信した信号データ | 信号機が発信しているデータそのもの(交差点名、交差点の位置、信号の状態など)。間引いて送信します。 |
| 信号が変わった時刻 | 信号ごとの状態の変化(例:赤 → 青)と、その時刻(秒単位) |
| 電波強度 | 5 dB 単位に丸めた値 |
| 方向 | 交差点から見た利用者の方向と、端末の向きを、それぞれ 8 方位に丸めた値 |
| 送信機の情報 | Service UUID と、送信機の数 |
| アプリのバージョン | 例:aoshingo-ios/0.1.0 |
送信しない情報
利用者の現在地(緯度・経度)、機種、OS のバージョン、言語・地域、広告 ID、氏名・メールアドレスなどの個人情報は送信しません。なお、受信した信号データには、信号機が発信する交差点の位置が含まれます。
インストールごとに異なる値として、App Attest の鍵の ID(keyId)を送ります。送るのは鍵の登録と送信用トークンの取得のときだけで、実測データの送信には含めません(「5. 不正なデータを防ぐ仕組み」)。
送信のタイミング
受信中はおよそ 1 分ごとに、アプリを閉じたときにも、未送信のデータをまとめて送信します。1 回の送信に含めるのは最大 10 分間のデータです。送信に失敗したときは、間隔を広げながら再試行します。サーバーがその日の受け付けの上限に達しているときは、翌日(UTC)まで待ちます。送信できなかったデータは端末内に最大 50 件まで保存し、6 日を過ぎたものは送信せずに削除します。
送信には、最長 6 時間有効な送信用トークンを付けます。その間の送信には同じトークンを使うため、サーバーは受け取るときに、同じ時間帯の送信どうしを同じ端末からのものと見分けられます。サーバーはトークンを確かめるためだけに使い、実測データと一緒には保存しません。ただし、送信内容の時刻は秒単位なので、保存したデータを時刻順に並べると、同じ人が続けて通った交差点を推測できる可能性があります。
通信内容と形式の詳細は「送信 API の仕様」をご覧ください。
5. 不正なデータを防ぐ仕組み(App Attest)
偽造されたデータの混入を防ぐため、Apple の App Attest を使い、送信元が正規の Aoshingo アプリであることを確認します。
- 協力をオンにすると、アプリは端末の安全な領域(Secure Enclave)に鍵を作り、Apple のサーバーで証明を受けます。この処理には Apple のプライバシーポリシーが適用されます。
- 鍵の ID(keyId)は、協力をオンにしたインストールごとに 1 つ作られる値です。鍵の登録と送信用トークンの取得のときだけ、開発者のサーバーに送ります。
- サーバーは鍵の ID、公開鍵、署名の回数、App Attest の環境(開発用か本番か)、登録した日と最後に使われた日(どちらも日単位)を、実測データとは別の表に保存し、実測データとは結び付けません。実測データの行には、鍵の ID も送信用トークンも保存しません。
- サーバーは、最後に使われた日から 30 日を過ぎた鍵の ID と公開鍵を削除します(最後に使われてから最長で 31 日と 18 時間ほど)。
- 送信用トークンには鍵の ID を含めません。協力をオフにすると、アプリはこの鍵を破棄し、もう一度オンにすると新しい鍵を作ります。
6. サーバーでの扱い
- サーバーは Cloudflare Workers と D1 データベースで運用しています。
- 通信を届けるために Cloudflare は IP アドレスを処理しますが、サーバーのプログラムは IP アドレスや国などを示すヘッダーを読まず、記録もしません。アクセスログやトレースの記録は無効にしています。Cloudflare 自身の扱いについては Cloudflare のプライバシーポリシーをご覧ください。
- 受け取った日時は「日」単位でだけ記録します。送信内容に含まれる信号の変化や受信の時刻(秒単位)は、そのまま保存します。
- 受け取った実測データは 90 日間保存し、その後は毎日 1 回の処理で交差点ごとの集計(信号ごとの変化の回数を時間帯別に数えたもの、電波強度と方向ごとの受信回数など)に置き換えてから削除します。受け取ってから削除するまでは、最長で 91 日と 18 時間ほどです。集計には個々の送信を区別できる情報は残りません。集計は期限を定めずに保存します。
- 削除したデータも、Cloudflare D1 の復元機能(Time Travel)により、削除から 7 日間はデータベースごと削除前の状態に戻せる形で残ります。戻せるのはサーバーの運用者だけです。
7. 利用目的
- 信号の番号(1 番〜6 番)がどの横断歩道に当たるかを確かめるため
- 信号機ごとの発信間隔、送信機の数、受信できる範囲を調べるため
- 「残り目安」の表示や、信号の判定の正確さを改善するため
集計結果を公開する場合は、事前にこのポリシーを更新してお知らせします。
8. 第三者への提供
実測データを販売したり、広告などの目的で第三者に提供したりすることはありません。サーバーの運用(Cloudflare)と不正防止(Apple)のために、上に書いた範囲でこれらの事業者が処理することがあります。法令に基づいて開示を求められた場合は、法令に従って対応します。
9. 提供の停止と削除
- 設定画面で実測データの提供をオフにすると、端末内の未送信のデータはすぐに削除され、以後は何も送信しません。
- すでに送信したデータは、利用者や端末と結び付けて保存していないため、個別に探して削除することができません。受け取ってから最長で 91 日と 18 時間ほどで集計に置き換えられ、個々のデータは削除されます。
10. このポリシーの変更
内容を変更するときは、このページと GitHub のリポジトリで変更を公開し、重要な変更はリリースノートでもお知らせします。送信する情報を増やす場合は、改めて利用者の同意を得ます。
11. このウェブサイト
- このウェブサイトは GitHub Pages で公開しています。GitHub は、セキュリティのために、サイトを閲覧した人の IP アドレスを記録します。GitHub 自身の扱いについては GitHub のプライバシーに関する声明をご覧ください。
- このサイト自体は、Cookie、アクセス解析、広告、外部のフォントを使っていません。開発者がこのサイトの閲覧者の情報を集めることはありません。
- サポートページとこのページの「メールアドレスを表示」ボタンを押したときだけ、迷惑メールを防ぐために Cloudflare の Turnstile を使います。ボタンを押すと、ブラウザーは Cloudflare(challenges.cloudflare.com)からスクリプトを読み込み、ロボットによる操作でないかを確かめます。このとき Cloudflare は、確かめるために必要な情報(IP アドレス、ブラウザーや端末の情報など)を処理し、確認のために Cloudflare のドメインで Cookie やブラウザーの保存領域を使うことがあります。ボタンを押さなければ、Turnstile は読み込まれません。Cloudflare の扱いについては、Turnstile のプライバシーに関する補足(英語)と Cloudflare のプライバシーポリシーをご覧ください。
- 確認が済むと、ブラウザーは確認の結果(1 回だけ使える符号)を、開発者が Cloudflare Workers で動かしているプログラムに送ります。プログラムは、その結果が正しいことを Cloudflare に問い合わせてから、メールアドレスを返します。通信を届けるために Cloudflare は IP アドレスを処理しますが、このプログラムは IP アドレスや国などを示すヘッダーを読まず、何も保存せず、アクセスログやトレースの記録も無効にしています。
- ほかに GitHub や Cloudflare のサービスをこのサイトで使うときは、使い始める前に、サービスの名前、使う目的、そのサービスに送られる情報をこの節に書き加えます。
12. お問い合わせ
GitHub の Issue でお問い合わせください。Issue は公開されるため、個人情報は書かないでください。
公開の場所に書きにくい内容は、メールでも受け付けます。迷惑メールを防ぐため、アドレスはボタンを押したあとに表示します。表示の前に、上の「11. このウェブサイト」に書いたとおり Cloudflare Turnstile を使います。
メールでお問い合わせいただいた場合、メールアドレスと内容は、返信と対応のためだけに使い、法令に基づく場合を除いて第三者に提供しません。