1 of 30

Personium Trails

PDSを使ったパンデミック拡大防止アプリ企画

Personium Project

in collaboration with

Code For Myself Project

2020年4月

2 of 30

企画概要

利用者が自身の 個人の移動履歴 を使って 、感染した人たちの匿名化された 移動履歴と対比してチェックをしてCovid-19 感染リスクレベルを見定めることができるようにする。

​

  • 利用者は移動履歴をプライベートに自分のPDSに保存できる
  • 利用者は感染リスク分析をプライベートに確認できる
  • 利用者が 感染したときは、 自身の意思に基づいて一部の移動履歴を選択して共有することができる

2

3 of 30

想定利用者: ちょっと不安な人々

  • 外出した人に匿名での自己チェック手段を提供

​

3

こないだの月曜にちょっと気分転換のために散歩にでかけた。

ちょっと 罪悪感 もあるし、そのことをみんなに しられたくはない

そのころから体調が悪い.

感染してないと思うけど. .. だけど正直なところ, ...ちょっと自信がない.

  • 心配のある人に移動履歴を匿名でチェックする手段を提供。
  • 自身の自覚症状とあわせて、病院等への連絡・検査受診に向けた判断の目安としてもらう。

とりあえず 黙っていようかな.

4 of 30

想定利用者: 感染者

  • “匿名での正確な移動履歴”の開示手段を提供する。

4

Covid-19 陽性と診断された.

みんなに伝えて警告しなくてはいけないのは分かっている。

悪いことをしたわけではないが、

どれだけの人にうつしてしまったかを考えると負い目を感じる.

  • 感染してしまった人がCovid-19の無秩序な拡散をとめるために、 個人を特定されることなく正確な移動履歴データを開示できる手段を提供。
  • 自身の影響による感染拡大(≒自責の感情)を最小化することができる。

でも、それより何より 、それが私だったってことはやはり知られたくない。

だけど、いつどこにいたのか、正確には覚えていない。

5 of 30

代表画面イメージ

5

3月11日(水)

10:00 – 12:00 自宅

12:00 – 13:00 移動

13:00 – 17:00 富士通ソリューションスクウェア

17:00 – 18:00 居酒屋 呑太郎 蒲田店

! 感染者との接触可能性高 

18:00 – 19:00 移動

3/11

17:00 – 18:00 居酒屋 呑太郎 蒲田店

3/14にCovid19 確定診断された方の行動履歴データ

16:30 – 17:30 居酒屋 呑太郎 蒲田店

感染者との接触があった可能性があります。

・Covid19 自覚症状チェックリスト

・PCR検査のご案内

・相談窓口

あなたの行動データ

6 of 30

Cell設計

  • 自身の行動履歴データは、自身の領域にのみで管理(プライバシー)
  • 感染者の匿名化行動履歴データを取得して突合して感染リスクをプライベートに評価
    • 自分の行動履歴を誰にも開示することなく、感染リスクを評価できる。

​

6

Unit

個人

Cell

集約管理Cell

​

​

​

​

​

管理者

個人

Cell

Cell管理アプリ用

Box

​

​

・・・

・・・

感染者の

匿名化行動履歴

医療機関

Cell

医療機関

Cell

・・・

・・・

個人

自身の行動履歴データ

本システム外部から

オープンデータとして

感染者匿名行動履歴を取込

マッチング

自身の行動履歴データ

感染確定診断者は

 潜伏期間中含めた行動履歴データを匿名化の上アップロード。 

(自宅座標など個人特定につながる情報は排除)

​

自動記録されるGPS情報に加えて、フロアや部屋名など

詳細情報を追加入力 

 (医療機関などがヒヤリングして入力代行するのでないと 個人にはつらいと思われる。)

マッチング

感染リスクが見える

7 of 30

画面設計について

8 of 30

初版開発の方針

  • 初版開発においては以下2種類のユーザを想定する。
    • 個人

未感染の個人

感染の疑いのある個人

感染の確定診断を受けた個人

    • データ管理者

システム管理者

各国政府などをはじめとしたパンデミック予防をミッションとする組織

​

​

​

8

9 of 30

User Scenario : Individuals

  • 未感染ユーザ
    • このアプリのことを知って、アプリのURLを開く
    • ユーザ登録をして、自身のPDSを作成
    • Google のロケーション履歴機能をONにして行動履歴をGoogleに蓄積
    • Google Takeout から自身のLocation History DataをPDSに取り込む。
    • タイムラインから自身の過去の行動における感染リスクをチェック
    • 定期的にGoogle Takeout から自身をLocation History DataをPDSに取り込む。

​

9

10 of 30

User Scenario : Individuals

  • 感染リスクを認識したユーザ
    • 自身のリスク認識を登録。

(例: 3/22日に熱海港から熱海駅行きバスに乗った。

  バスが込み合っていて、大声で話している学生がいたが、

  そこに感染者がいたかもしれない。)

    • タイムライン上の自身の過去の行動から、公開してよいレコードを選択

その際にマスク有無や部屋名などGPS情報からは取得されていない情報を追加登録。

​

​

10

11 of 30

User Scenario : Individuals

  • 感染の確定診断を受けたユーザ
    • 専門家と相談のうえ自身の感染診断情報を登録。

(例: 3/27日 ○○病院での検査にてCovid19陽性

  無症状なので推定となるが、3/23日に乗った熱海港から

  熱海駅行きバスでのクラスター感染が疑われる。)

    • タイムライン上の自身の過去の行動から、公開してよいレコードを選択

マスク有無や部屋名などGPS情報からは取得されていない情報を追加登録。

    • 既にシステム入力が難しい症状になっていたときは、家族や医師等が代理で入力。

​

11

情報の信憑性の意味も含め、医師等しかるべき専門家が代理入力したり

内容の証明を行う必要があると思われる。

12 of 30

Transition 00: Intro & User PDS Creation

12

01_App Introduction

02_User Registration

&

PDS creation

10_App Top

  • For MVC implementation, we can skip the email verification etc..
  • For production, we need to enhance the flow.
  • This flow may be customized in various ways depending on the app host organization’s will

13 of 30

Transition 10: Initial Settings

  • Googleのロケーション履歴データ登録を促す

13

10_App Top

11_Google

Location History

Import

10_App Top

10_App Top:

  - Show latest log in PDS to prompt users to import / input more recent logs.

- Urges user to import Google Location History

​

ロケーション履歴データの入力・インポートは、現状ユーザにとって一番面倒な作業

(API による自動Syncができず、Google Takeout でのマニュアル作業が多い。)

せめてZipファイルのPCからのドロップだけで登録できるようにしたい。

14 of 30

Transition 30: Daily Use Flow

  • ユーザはインポート済みの自身の過去の行動履歴(Stay/Move)の日ごとのリストを確認できる。
  • 左右矢印インターフェイスで日付変更
  • Stay/Move行 タップでStay / Move の詳細表示。
  • 詳細表示画面から、エディットが可能(場所の修正、Moveタイプの修正、付加情報の追加)
  • ものによっては、関心他者(感染者・感染被疑者)との遭遇のアラートが表示されている。アラートタップで関心他者の行動詳細を表示

​

​

14

10_App Top

31_My

Stay

Details

Date Change

36_My

Move

Details

launch

33_Others

Stay

Details

38_Others

Move

Details

(Infected People

in Covid 19 context )

Modify, Add Info

32_My

Stay Edit

37_My

Move Edit

Modify, Add Info

15 of 30

Transition 50: Trails Disclosure

  • 感染の確定診断を受けたり、自身に感染の疑いを感じたときの操作

​

​

​

15

10_App Top

31_My Stay

Details

36_My Move

Details

launch

Modify, Add Info

51_My

Subjective

Info Input

52_My

Non-disclosure

Locations selection

53_My Trails

Disclosure

Candidate list

50_Disclosure

Top

54_My Trails

Disclosure

Confirmation

Perform disclosure (*1) and

Back to 50_Disclosure top

*1 いたずらによる社会不安増長や、誤操作等によるプライバシー漏洩を防ぐため、Disclosure には医療機関や自治体等による審査プロセスを経るように設定できるようにする。

New disclosure

16 of 30

Transition 60: Disclosure Modification / Revocation

  • 開示後の開示取消・修正操作

​

​

​

16

10_App Top

31_My Stay

Details

36_My Move

Details

launch

Modify, Add Info

61_My

Disclosure

Detail

53_My Trails

Disclosure

Candidate list

50_Disclosure

Top

(incl. list)

62_My Trails Disclosure Modification

Confirmation

Perform disclosure modification

(*1) and Back to 50_Disclosure top

modify

revoke

select

17 of 30

データ構造について

18 of 30

Google Location History Data

  • "timelineObjects"という配列の中に以下2種類のオブジェクトがずらりと入っている。
    • placeVisit :訪問場所
    • activitySegment : 移動
  • 【時間】

duration:  開始時刻ー終了時刻 (どちらも共通。unixtime)

  • 【空間】

placeVisitの場合 : location -> latitudeE7, longitudeE7�activitySegmentの場合: startLocation, endLocation -> latitudeE7, longitudeE7

  • 【人間向けのラベル】
    • placeVisitの場合 :  名称、アドレス
    • activitySegmentの場合 :  activityType  

それぞれ決めつけではなく、AIか何かで確率重みづけつきで、複数候補が出ている。(2016年ごろのデータだと、activitySegmentの確率はすべて0.0だが、2020年のデータだとしっかり確率が百分率で入っている)

​

18

19 of 30

Personiumに取り込むときのデータ構造案

  • 全体として
    • Google Takeout の生データ(月毎のJsonファイル)をWebDavに保存する。

年ごとのディレクトリ。月毎のファイル。

個別開示できるようオブジェクト単位で小分けにしたファイルも生成する。

    • 検索に使う項目のみをODataでインデクス作成する。

�

19

20 of 30

Box構造 

  • Box名: app-personium-trails
    • ルートには検索用のodata空間と、年ごとのディレクトリ

⇒100年生きても101エントリ

    • 年ごとのディレクトリの中に月ごとのディレクトリと、データソース(Google等)のオリジナルファイル

⇒ 13エントリ

    • 月ごとのディレクトリの下に以下2種のファイル

・s_{滞在開始unix時間}.json

・m_{移動開始unix時間} .json

​

​

20

imported

2019

2019_JANUARY.json

2019_FEBRUARY.json

…

odata

2019

01

s_1577860874057.json

m_1577863715251.json

s_1577865156530.json

…

02

s_

…

2020

Box: app-trails

1ディレクトリあたりの子要素上限が1000程度であっても何とかなる構造。

21 of 30

OData構造

  • 以下2つのEntityType (set) を定義

21

Prop Name

Desc

Sample

__id

Uuid

​

startTime

Unix time

1577860874057

endTime

Unix time

1577863715251

latitudeE7

緯度 x 10^7

344765260

longitudeE7

経度 x 10^7

1355952250

name

Name of the Place

瀧谷不動明王寺(瀧谷不動尊)

placeId

GoogleのplaceId

ChIJU7Nq1_3VAGARofUKBlHEnSo

Stay (PlaceVisited)

Move (ActivitySegment)

Prop Name

Desc

​

__id

Uuid

​

startTime

Unix time

​

endTime

Unix time

​

sLatitudeE7

緯度 x 10^7

​

sLongitudeE7

経度 x 10^7

​

eLatitudeE7

緯度 x 10^7

​

eLongitudeE7

経度 x 10^7

​

​

​

​

検索や一覧表示に用いない付加情報は、WebDAVファイルに書くようにする。 

Google実装に依存しない命名

22 of 30

感染者情報Cellに保存するもの

  • 個人セル同様のデータ構造で保管する。
    • コピー・同期処理はシンプル
  • 但し以下の情報を付加
    • 排菌確率

マスク有無/しゃべっていたかどうか?

その時点での感染確率(いつ感染したかはわからない)

    • 感染者概要メモ(各Stay/Move毎のメモと、人単位のメモ)

上記確率情報はどうしても不安定であるため、本アプリによるスクリーニングは、あくまで感染リスクの一次フィルタリングにしかならない。

その感染者の状況に関する自然言語でのメモ(専門家が記述)を付加し、アプリによるスクリーニングで感染者との近接がヒットした人にのみこれを表示。

そのメモ情報を読むことで、無用な心配・不安をあおらないようにする。

​

22

23 of 30

マッチングアルゴリズム案

  • 自身のStayレコード全てに対して、感染者情報CellのStayテーブルにodataクエリをかける。
    • 空間的近接  AND 時間的近接
    • 空間的近接:

placeIdでの完全一致 or (x のrange and yのrange)

    • 時間的近接:

感染者StartTime < 自分EndTime and 感染者EndTime > 自分StartTime - R

R = ウィルス残留時間 (1h – 3d)

  • Moveレコードとのマッチングは少し難しい
    • Moveの種別が自動車や自転車である場合は感染リスクゼロとして評価。

タクシー⇒ 自動車の移動と認識されているので、自身でタクシーとしてマークしてもらう。 

    • 公共交通機関(電車・バス・船舶・航空機)は事前にデータ変換を行ってから評価

駅/停留所ごとのセグメントに分割し、車両番号情報などを付加

​

​

23

24 of 30

性能面での今後の拡張

  • 検索によるサーバ負荷が重くなったときは、以下2案のいずれかを実施
    • 感染者情報CellのミラーCellを複数持って負荷分散
    • まとめて感染者データを取得してローカルで付け合わせするようなロジックに変更
    • 一般的な人は1日 あたり Stay は1-10 程度(平均は3-4程度か?)

​

24

25 of 30

ポイント

  • Google Mapのロケーション履歴データは結構すごい
    • ハンバーガーを開いて、タイムラインを選ぶ。
    • このデータは、Google TakeoutでZipファイルで取得できる。
    • Zipファイルの中身のデータ構造については、code4myselfプロジェクトの方がよく知っていると思われる。

​

25

26 of 30

MyData vs Covid-19

​

​

  • World wide news on Covid-19

​

27 of 30

COVID-19 App List

28 of 30

Shared URLs

29 of 30

30 of 30

企画概要

  • 個人が行動履歴データ(時刻・移動経度)をPDSに保管
    • GPS座標と時刻のデータ
    • Googleのロケーション履歴からGoogle Takeoutでデータを取得
  • 中央管理された感染者行動履歴とPDS内でプライベートに突合
    • 検査必要性を知ることができる
  • 感染が分かった人は行動データの一部を管理者に開示
    • 過去すべての行動記録ではなく、潜伏期間として想定される期間のみのデータ
    • 管理者は感染者行動履歴を適切に匿名化して全体に共有

​

​

30