接触確認アプリ #COCOA のリスク評価の情報源を整理します。
まず、いま使われている ExposureConfiguration というclass は「非推奨」となっています。
developers.google.com/android/refere…
この ExposureConfiguration では、4つのリスク値の掛け算で、リスクスコアが求まります

RiskScore =
attenuationScore * daysSinceLastExposureScore * durationScore * transmissionRiskScore

github.com/google/exposur…
4つのリスク値のパラメーターはこちらに定義されています。

github.com/cocoa-mhlw/coc…
先ほどのgoogle/exposure-notifications-internalsのL76では

riskScore >= configuration.getMinimumRiskScore

で4項目の掛け算の結果、MinimumRiskScore以上であれば掛けた結果、未満なら0が入ります。
COCOAでは、9月18日にAppleからの指示に応じて現在のパラメーターとなり、MinimumRiskScoreはcocoaでは21となりました。

リスク(濃厚接触)ありは21以上、なしは0です。

github.com/cocoa-mhlw/coc…
COCOAの ExposureNotificationHandler.cs L78
DurationScores = new[] { 0, 0, 0, 0, 1, 1, 1, 1 },

接触時間で、左から
0分 → 0
0分 <= 5分 → 0
5分 <= 10分 → 0
10分 <= 15分 → 0
15分 <= 20分 → 1
20分 <= 25分 → 1
25分 <= 30分 → 1
30分以上 → 1

です
developers.google.com/android/refere…
TransmissionRiskScores という、アプリとOSが通信できる値は実質未使用で全て7ですので、4つリスク値の掛け算の結果、15分以下はRiskScoreは0となります。

15分より長い接触でないと、RiskScoreは0で濃厚接触ありにならないです。
COCOAの ExposureNotificationHandler.cs L77
AttenuationScores = new[] { 1, 2, 3, 4, 5, 6, 7, 8 },

73以上 → 1 なし
73 >= Attenuation > 63 → 2 なし
63 >= Attenuation > 51 → 3 あり
51 >= Attenuation > 33 → 4 あり
と続きます
attenuationScore=3
durationScore=1
transmissionRiskScore=7

3×1×7=21のときRiskScoresはMinimumRiskScore以上になります。

Attenuationの値の意味を調べます。
こちらの実測値によると、
shizuk.sakura.ne.jp/bluetooth/beac…

73以上 → 1 なし [約3m超]
73 >= Attenuation > 63 → 2 なし [約1mから約3m]
63 >= Attenuation > 51 → 3 あり [約35cmから約1m]
51 >= Attenuation > 33 → 4 あり [約10cmから約35cm]
なので、1mより近いAttenuation63(-63dBm)から濃厚接触になります。

このリスク値の計算が理屈にあっているのは2020年8月から9月にかけてささやかですが私としては検証済みで、不具合は別のところ(今の開発会社さんが手を入れていないところ)と思われます。
引き続いて「transmission_risk_levelの値について」
github.com/cocoa-mhlw/coc…
を見直したら、私が間違えていたことに気づいた。

上述したTransmissionRiskScoresは全て 7 で固定かと思っていたら、診断キーの設定値が0だと1に上書きされるのか。

これが不具合の原因だ。気づかなかった。
毎日、通知サーバーにアップされるZIPファイルの中身で、陽性者さんが陽性登録してくれると、1つのキーが[001]の中身になる。
[transmission_risk_level ]:[0]
で、確かに、すべて0。

(このrolling_start_interval_numberが接触日[キーの開始時刻])
zaruudon さんによると、このL69-L72で、

通知サーバーからの診断キーのtransmission_risk_level が 0 だと、

COCOAの ExposureNotificationHandler.cs で設定された

transmissionRiskScore = 7が、1に上書きされてしまうと。

そうするとriskScoreは1/7になってMinimumRiskScoreを超えない。
MinimumRiskScoreを超えないということは、通知の不具合でなく、一切、濃厚接触の表示がされない。

対処法としては、
案1 診断キーのtransmission_risk_level を1にするか、
案2

MinimumRiskScore = 3,
TransmissionRiskScores = new int[] { 1, 1, 1, 1, 1, 1, 1, 1 },

にするか。
zaruudonさんのコメントいただけました。

Google確認で、Configration.json を修正と。

github.com/cocoa-mhlw/coc…

ただ、Appleの方にも影響がでてしまう。

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with ケイバリュエーション(鈴木健治)

ケイバリュエーション(鈴木健治) Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!