Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle COCOA's exposure_data.json. #73

Merged
merged 5 commits into from
Jun 23, 2022
Merged

Conversation

keiji
Copy link
Contributor

@keiji keiji commented Jun 11, 2022

#70

COCOA v2.0.1が出力するexposure_data.jsonを表示する。
以前の設定画面から取得するログファイルとの互換性を考慮して、exposure_windows キーの有無によって処理を分岐するようにした。

ひとまず最低限必要な項目だけ。ScanInstanceで信号を受信している時間や電波強度などを表示することもできるけど、どのように表示するのが適切か見当が付かないので、このPull Requestではexposure_data.jsonを与えると、信号を受信した記録のある日付を一覧で表示するところまでとしたい。

検証

テストデータ

2022年5月13日, 2022年5月31日, 2022年6月11日の3日分のExposureWindowがあるexposure_data.jsonを読み込ませる。

{
  "exposure_windows": [
    {
      "CalibrationConfidence": 3,
      "DateMillisSinceEpoch": 1654952421000,
      "Infectiousness": 2,
      "ReportType": 2,
      "ScanInstances": [
        {
          "MinAttenuationDb": 14,
          "SecondsSinceLastScan": 300,
          "TypicalAttenuationDb": 15
        }
      ]
    },
    {
      "CalibrationConfidence": 3,
      "DateMillisSinceEpoch": 1654002338000,
      "Infectiousness": 2,
      "ReportType": 2,
      "ScanInstances": [
        {
          "MinAttenuationDb": 6,
          "SecondsSinceLastScan": 240,
          "TypicalAttenuationDb": 8
        }
      ]
    },
    {
      "CalibrationConfidence": 3,
      "DateMillisSinceEpoch": 1652447138000,
      "Infectiousness": 2,
      "ReportType": 2,
      "ScanInstances": [
        {
          "MinAttenuationDb": 36,
          "SecondsSinceLastScan": 300,
          "TypicalAttenuationDb": 41
        }
      ]
    }
  ],
  "generated_at": "2021-08-30T19:25:12.7970660+09:00",
  "exposure_configuration": {
  }
}

結果

  • 2022年5月31日 2022年6月11日 の2項目が表示される( 2022年5月13日 は、14日より過去なので表示対象外)
  • 日付は降順に並び替える

Screen Shot 2022-06-11 at 23 08 42

@keiji keiji marked this pull request as ready for review June 11, 2022 14:16
@ktansai
Copy link
Owner

ktansai commented Jun 13, 2022

@keiji 有山さん ご提案ありがとうございます。
フォーマッターなど、整備しておらず、ご迷惑おかけしてしまいすいません。
今日明日明後日くらいには動作確認して、問題なければ、マージさせていただこうと思います。
また、使い方の説明や、今までとの互換性、お知らせの文言などを考える必要があるかと思うので、そちらも並行して自分の方で考えてみます。
よろしくお願いいたします。

@keiji
Copy link
Contributor Author

keiji commented Jun 13, 2022

@ktansai
こちらこそ連絡が行き届かずお手数をおかけしてます。
互換性については、特にiOSのログについては、ぼくの手元では検証できていません。

(COCOAのチームとしては利用者になるべく新しいバージョンを使ってもらうのが嬉しいのですが、同時に一人の利用者としてはいきなり以前のバージョンとの互換性を失う変更は避けて欲しいという気持ちもあります)

なにか不具合があれば教えて頂けると嬉しいです。

また、接触情報の書き出し手順などスクリーンショット(iOS/Android)などもお渡しできます。
ぼくにできることがあれば、お声がけください。

@ktansai
Copy link
Owner

ktansai commented Jun 14, 2022

@keiji 手元で動かして、自分のiOS端末のログを入れてみました。
自分のログでも、結果的には正しそうな表示が見えました。今、書いていただいた処理を追っているところです。

@ktansai
Copy link
Owner

ktansai commented Jun 15, 2022

@keiji おまたせしてしまってすいません。
データの形式の意味も読み解きながら今日読んでみていただのですが、何点かよく分かってない箇所があり、理解が間違っていないかの確認も含め、質問させて下さい。

exposure_windowsの形式について大雑把な理解の確認

まず、COCOAから出力できるデータの形式についての確認なのですが、自分の理解では、
exposure_windowsの配列は、陽性登録された方と近くにいた記録が格納されていて、DateMillisSinceEpochは、その記録をunixtimeを使って、日付単位で表現しているように思えます。

こちらに、自分のiOS端末から取れたデータがあるのですが、
https://github.com/ktansai/COVID-19-ExposeChecker/wiki/%E3%83%86%E3%82%B9%E3%83%88%E7%94%A8%E3%83%87%E3%83%BC%E3%82%BF(iOS---COCOA-2.0.1-log)

このデータから、DateMillisSinceEpochを抽出してソートして、UnixTimeを変換したものをSpreadSheetにまとめてみました。

結果として、
このシートでいうところの、このDate (B列) にある日付 = COCOAで陽性者登録を行った人のスマートフォンと通信をした記録がある日付ということで
理解は正しいでしょうか?
例えば、上部の2022/03/24、3件あるのは、この日に3件の記録があるということになる感じでしょうか?もし理解が何か間違えていたらご指摘いただけると助かります。

質問点(自分が理解できていない点)

次に、このデータに関して何点か、質問があります。

データの保管期間

このデータは2022/06/14にエクスポートしたものなのですが、3/24から記録が残っているようです。
これは、COCOA 2.0.0にアップデート/インストールしてから、ずっとデータが蓄積されているものでしょうか?
もし、保管期間の上限というか、データが数ヶ月より前 OR 件数が増えると、古いものから消えていく、のようなことがあったら、教えていただきたいです。

同日の接触の記録に、同一人物との接触が含まれるか

先程のSpreadsheetのデータを見ると、3/24に3回記録がありますが、これは、別々のユニークな端末と3回すれ違ったという理解になりますでしょうか?
それとも、同一端末でも、時間を開けて、3回通信しても、記録されるものなのでしょうか?
COCOAログチェッカーでは、いままで、記録の件数を表示していたので、将来的に、そういった表現をする可能性も考えて、確認したいと思ったところです。

その他のプロパティについて

exposure_windowsを見ていたところ、
Infectiousnessや、ReportTypeScanInstancesCalibrationConfidence など、がどういった意味や条件で設定されているかが気になりました。
いったん、簡単な表示としては、有山さんが提案してくださったように、表示しないという選択でよいかと思っているのですが、
現行のOSのログベースの解析のときもあったのですが、
ユーザーの方々から、データの形式について、質問が来ることがくることが想定されるので、その場合の参照先を提供したり、間違えない情報を展開できれば、と思い、何か参考になる仕様書というか、定義のようなものがわかるものがありましたら、お教えいただけると助かります。
daily_summariesについても、もし、何か参考になるものがあったらお教え下さい。(細かな計算式などまでは完全に理解しなくて良いと思っているのですが、概要だけでも抑えておきたい所存です。)

その他

(COCOAのチームとしては利用者になるべく新しいバージョンを使ってもらうのが嬉しいのですが、同時に一人の利用者としてはいきなり以前のバージョンとの互換性を失う変更は避けて欲しいという気持ちもあります)

たしかに、何か、古い解析が使えなくなってしまうの微妙 & 使い方説明などが混乱する未来が見えるので、基本的に、新方式で表示して、旧式に意図的に切り替えるようなページ遷移やボタンを用意しようと思います。
ですので、新方式での解析は、過去との互換性はそこまでケアしなくても良いように持っていこうと思います。(旧方式で使いたい方は、旧方式を使っていただく)

例えば、OSの設定からは解析不能だった
「14日に限らず表示」、「日別の記録件数」など、パッと、見れたら安心する & 気が引きしまる意味のあるデータの見せ方が思いつきます。
リスクに関しては、自分も表現が難しいと思う&開発が大変になってしまうので、保留(やるとしても今後の課題)にしたいなと思っています。

質問&お返事が長くなってしまって、すいません。
自分も仕事終わりの時間や、土日にしか作業ができない事情もあり、急ぎませんので、時間がある時に、教えていただけると助かります。

@ktansai
Copy link
Owner

ktansai commented Jun 23, 2022

@ktansai
Copy link
Owner

ktansai commented Jun 23, 2022

説明やアナウンスなど、リリース前の調整は別PRで対応予定で、一旦このPRはマージします

@ktansai ktansai merged commit b7e6f83 into ktansai:master Jun 23, 2022
@keiji keiji deleted the handle_cocoa_log branch June 23, 2022 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants