30代SEの自由帳

最初のタイトルは頓挫した

COVID19Radarのソースを追ってみる-3日目(その1)

2日目はこちら

なんかコピペミスがひどかったから、色々修正。 1記事のあたりの文章量が多いのがダメなんだよね。(言い訳) ということで、記事も分割しました。

引き続きCOCOA(接触確認アプリ)のベースとして使用されているOSS(オープンソースソフトウェア)である、COVID19Radarについて、処理を追って日本語のコメントを付けてみた。

ただ、C#の経験もFultter以外のAndroid開発の経験もなく、苦戦した挙句ざっくり理解で止めた1ので、参考程度で。

なので、同じようなことしている人がいれば即やめ。
ソースべた貼りには少し抵抗があるので、コメント付近だけ抜粋。

調査対象

PrivacyPolicyPage

[プライバシーポリシー]画面を表示。 [同意する]ボタンを押すとTutorialPage4(プライバシーについて)画面へ移動

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\Views\Tutorial\PrivacyPolicyPage.xaml
  • 遷移先:TutorialPage4
  • COCOAとの挙動差:なさそう
  • 詳細: TutorialPage1と同じ読み方なので、割愛

TutorialPage4

[接触検知をご利用いただくために]画面を表示。 [有効にする]か[あとで設定する]か選択して次の画面へ移動

OnClickEnable

権限とか設定の問題かもしれないけど、なぜかiOSAndroidで処理分かれてる。。
とりあえずAndroidの方だけ調査。

[接触の検出]設定をONに設定して、TutorialPage5(通知をご利用いただくために)画面へ移動。

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\ViewModels\Tutorial\TutorialPage4ViewModel.cs
  • 遷移先:TutorialPage5
  • COCOAとの挙動差:なさそう
  • 詳細:

    • userData.IsExposureNotificationEnabled = true; = [接触の検出]設定をONに
    • await userDataService.SetAsync(userData); = ユーザデータをアプリに保存

OnClickDisable

[接触の検出]設定をOFFに設定して、TutorialPage5(通知をご利用いただくために)画面へ移動。

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\ViewModels\Tutorial\TutorialPage4ViewModel.cs
  • 遷移先:TutorialPage5
  • COCOAとの挙動差:なさそう
  • 詳細: OnClickEnableと同じ読み方(true=ON,false=OFF)のため割愛

TutorialPage5

[通知をご利用いただくために]画面を表示。 [有効にする]か[あとで設定する]か選択して次の画面へ移動

OnClickEnable

[通知]設定をONに設定して、TutorialPage6(ご登録いただきありがとうございました)画面へ移動。

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\ViewModels\Tutorial\TutorialPage4ViewModel.cs
  • 遷移先:TutorialPage6
  • COCOAとの挙動差:なさそう
  • 詳細:
    • var notification = new NotificationRequest{~~~}=[通知を有効にしました]って通知をだす
    • IsNotificationEnabled=[通知]設定
    • 残りはTutorialPage4と同じ読み方なので割愛

OnClickDisable

[通知]設定をOFFに設定して、TutorialPage6(ご登録いただきありがとうございました)画面へ移動。

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\ViewModels\Tutorial\TutorialPage4ViewModel.cs
  • 遷移先:TutorialPage6
  • COCOAとの挙動差:なさそう
  • 詳細: OnClickEnableと同じ読み方(true=ON,false=OFF)のため割愛

TutorialPage6

[ご登録いただきありがとうございました]画面を表示。 [ホーム画面]か[使い方を学ぶ]か選択して次の画面へ移動

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\Views\Tutorial\TutorialPage6.xaml
  • 遷移先:HomePage,HelpMenuPage
  • COCOAとの挙動差:なさそう
  • 詳細: TutorialPage1と同じ読み方なので、割愛

HomePage

[ホーム]画面を表示。 [使い方],[陽性者との接触を確認する],[陽性情報の登録],[アプリを周りの人に知らせる]を選択すると次の画面へ移動

  • ファイルパス:Covid19Radar\Covid19Radar\Covid19Radar\Views\HomePage\HomePage.xaml
  • 遷移先:HelpMenuPage,OnClickExposures(),SubmitConsentPage,OnClickShareApp()
  • COCOAとの挙動差:なさそう
  • 詳細:

  • 番外:

    • Twitterで見かけた使用開始日が正しく表示されない問題について
      1. <Span Text="{Binding StartDate}" />⇒StartDateってデータを表示
      2. StartDate = userData.StartDateTime.ToLocalTime().ToString("D", CultureInfo.CurrentCulture);⇒StartDateTimeって名前の日時データを表示用の文字列に変換
      3. public DateTime StartDateTime { get; } = DateTime.UtcNow;⇒StartDateTimeってデータに現在日時(DateTime.UtcNow)を設定

    ⇒なので、単純にとるデータが現在日時固定になってるのが原因。当然最新ソースだと治ってました。

続きは次の記事へ

その2はこちら


  1. 開発環境でもインストールしてデバッグしながら、とかならもう少し理解できたんだと思うけど、開発環境入れるだけで力尽きそうだったので諦めた。。