COVID19Radarのソースを追ってみる5日目(一旦終了)
4日目はこちら
引き続きCOCOA(接触確認アプリ)のベースとして使用されているOSS(オープンソースソフトウェア)である、COVID19Radarについて、処理を追って日本語のコメントを付けてみた。
ただ、C#の経験もFultter以外のAndroid開発の経験もなく、苦戦した挙句ざっくり理解で止めた1ので、参考程度で。
なので、同じようなことしている人がいれば即やめ。
ソースべた貼りには少し抵抗があるので、コメント付近だけ抜粋。
はじめに
最新ソースみてやっと理解できたけど、やっぱりXamarin.ExposureNotificationsってのが通信している箇所だった。
なんでXamarinってついてるかは不明だけど、ExposureNotificationってのがGoogleAPIと繋いでるところっぽく、それらを管理してるから複数形でXamarin.ExposureNotifications
今回は今までと違って逆追い。調べやすい かつ 気になったところから順次
あと実際に動作させることが出来ないので、挙動差の調査は割愛
そしてGoogleAPIの仕様も見つけた。
調査対象
- ソース(GitHub):https://github.com/Covid-19Radar/Covid19Radar
- リビジョン:
5a54949ddf51dbf0db58c09d4142a31c7d6630767400889696421ed3ad0e592e59821b8e354d20bc
※最新だとXamarin.ExposureNotificationsに該当するソースがUPされていたので、調査対象を最新に切り替え。(どのみち挙動差を見られないので。。)
ExposureDetectedAsync
陽性接触者情報っぽいやつ(ExposureInformation)を登録している箇所
- ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\Services\ExposureNotificationHandler.cs
- 詳細:
- [ExposureInfo]と[ExposureSummary]を保持。保持するデータの内容はGoogleAPIの仕様参照
foreach (var i in exposureInfo)
=exposureInfoの数だけくり返し処理userData.ExposureInformation
=陽性接触者情報?- add=追加(=登録)
if (userData.IsNotificationEnabled) { // [通知]設定がONの場合 // [新型コロナウイルス陽性登録者との接触の可能性]を通知 }
UploadSelfExposureKeysToServerAsync
自分が陽性者であることを登録をしている箇所
- ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\Services\ExposureNotificationHandler.cs
- 詳細:
- [TemporaryExposureKey]を送信。送信するデータの内容はGoogleAPIの仕様参照
- CreateSubmissionAsync=通信用のデータに変換しているところ。 [TemporaryExposureKey]以外にも色々送ってる
- httpDataService=たぶんサーバーと通信してるところ
FetchExposureKeyBatchFilesFromServerAsync
たぶん鍵同士の接触情報を登録しているところ?
なんか挙動が逆な(サーバーから接触情報とってる)ようにも見える。。。
仕組み的には端末で情報収集してサーバーに送るって感じのはずだからこれでいいとは思うけど、自信ない。
あと、この処理自体は呼び出しが未実装(動作しないように消されてる)だった。よく分かってないけど、実はプレビュー版ってまだ実運用始まってないってレベルなのかね?
だとしたら、何をテストしてるんだろ?
- ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\Services\ExposureNotificationHandler.cs
- 詳細:
今日のまとめ
GoogleAPIの仕様も見つけたし、気になるところは一通りみれたはずなので、COVID19Radarのソース読みは一旦終了。
当然、変なデータ送ってるところは見つかりませんでした。
ただ、どうにも実際に動いてるか分かってない感じだったから、バージョンアップしたらもう一回見てみるかな。