Closed keiji closed 2 years ago
@keiji 丁寧な経緯をありがとうございます。
TransmissionRiskLevel = 0の場合、COCOA1(Android)は1を採用する、という挙動は、お示しいただいたGoogle側のinternalの処理なので、信頼性・安定性がどの程度なのか(日本に告知なく変更されたりしないのか)、若干不安を感じました。
もうひとつずらして全面的にCOCOA側で管理できないものかなと思いつつ、とりあえず感じた不安をお伝えします。
@kvaluation ありがとうございます。ご指摘の通りだと思います。 kvaluationさん提案のパラメーターは次の通りになると理解しています(認識に誤りがあれば教えてください)。
TransmissionRiskLevel
を1
(RISK_LEVEL_LOWEST)とする。TransmissionRiskScores
を次の通り変更する。 "TransmissionRiskScores": [
0, <- Android(TransmissionRiskLevel = 1)
0, <- iOS(TransmissionRiskLevel = 1)
7,
7, <- Android(TransmissionRiskLevel = 4)
7, <- iOS(TransmissionRiskLevel = 4)
7,
7,
7
],
Androidでは0番目の要素の値を、iOSでは1番目の要素の値を見ることになります。どちらも0(1から0に変えました)となり、接触は発生しない扱いにできると考えています。
この内容で変更を提案します。 その上で、たとえ最小であっても(接触として取り扱わない目的であっても)、感染リスクが存在するレベルを設定することについて調整が不明瞭な部分があることを、あらかじめお伝えしておきます。
ひとまずPull Requestを作ります。状況についてはまたご報告しますね。
ありがとうございます。認識に相違ありません。
旧: 設定した発症日または診断日3日前より過去の診断キーについてはTransmissionRiskLevelに0を設定 新: 1に設定
情報共有として。
google/exposure-notifications-internals リポジトリはすでに一年以上更新されておらず、実装とはすでに乖離があると言う認識です。 更新を反映しないという意図の Google の中の人のコメントも有ったはずですが、こちらは探し切れていません。
本 Issue で取り扱っている部分に差異があるかまでは分かりません。
ひとまずPull Requestは出しました。
設定の意味合いはともかく、より確実に期待される挙動を維持できるという点でご提案を取り込むべきと判断しました。
個人的には、v2.0リリース後、挙動が確認できた時点で、なる早でv2.0.0未満のサポートを終了して強制アップデートを促したい、その時までの繋ぎの設定の数値の意味合いにこだわりすぎないでよいとは思っていますが、言葉の意味合いの論点があることは認識しておきます。
サーバー側の挙動について一通りテストした結果をコメントしておきました。 記録として残します。
https://github.com/cocoa-mhlw/cocoa/pull/795#issuecomment-1018616726
こちら完了しているのでCloseします。
COCOAにとって因縁のあるTransmissionRiskScoresの変更に関することなので、経緯を記録する意味でもIssueにします。
Update
https://github.com/cocoa-mhlw/cocoa/issues/792#issuecomment-1018313189 の指摘を受けて、診断キーの
TransmissionRiskLevel
を1
に、TransmissionRiskScores
を次の通りとしました。変更内容
COCOA1向けの設定ファイルの
TransmissionRiskScores
を次のように変更します。変更目的
TransmissionRiskLevel
に0を設定した診断キーファイルについて、iOS版のCOCOA1で接触を発生させないため。背景
ExposureWindow mode(ENv2)導入に伴い、端末内のTEKをすべて送信する仕様に変更しています(COCOA1は、設定した発症日または診断日3日前からに限定)。
COCOA1系では、これまで遭遇しなかった時期の(本来は接触とされないはずの日の)診断キーについて接触確認をすることになります。そのため、ENv2用の陽性登録APIではCOCOA1向けに、設定した発症日または診断日3日前より過去の診断キーについては
TransmissionRiskLevel
に0
を設定して生成するようにしています。https://github.com/cocoa-mhlw/cocoa/blob/d6ff39a6c640aa6f90b68818362e4d03b413d985/src/Covid19Radar.Api/V3DiagnosisApi.cs#L79-L88
TransmissionRiskLevel = 0
は、過去に不具合の原因になった値です。TransmissionRiskLevel 0
は、Appleでは、ExposureConfiguraion
のTransmissionRiskLevelValues
の何番目の要素の値(各要素の値は0−8
)を採用するかを示します。 一方、GoogleではRISK_LEVEL_INVALID
として定義されています。14 にもあるとおり、AndroidではriskScoreを計算するための
transmissionRiskScore
がExposureConfiguration
の設定値に従って設定されるのはTransmissionRiskLevel
が1-8
の場合で、0
だった場合はtransmissionRiskScore
は1
として計算されます。( https://github.com/google/exposure-notifications-internals/blob/aaada6ce5cad0ea1493930591557f8053ef4f113/exposurenotification/src/main/java/com/google/samples/exposurenotification/matching/RiskScoreCalculator.java#L69-L72 )
transmissionRiskScore = 1
では、当時設定していた(現在設定している)minimumRiskScore
以上になることがなく、これより「Android版で接触確認が機能しない問題」が発生しました。現在は
TransmissionRiskLevel
に4
を設定した診断キーを配信することで、問題そのものは解決したと認識しています。変更について
さて、今回のケースは、COCOA2によって提出され、COCOA1では接触確認をしたくない時期の診断キーについて
transmissionRisk
に0
を設定して配信することで、接触とならないようにします。Android版ではこの施策で足りるのですが、iOSのExposureNotificaiton APIは、Androidと仕様が異なり、
TransmissionRiskLevel = 0
の場合はTransmissionRiskScores(TransmissionRiskLevelValues)
の0番目の値が使われます。現在配信している設定では0番目の値に
7
が設定されているので、TransmissionRiskLevel
に0
を設定していても、TransmissionRiskLevel = 4
として配信した場合と同様の接触基準となります。https://github.com/cocoa-mhlw/cocoa/blob/d6ff39a6c640aa6f90b68818362e4d03b413d985/documents/static/exposure_configuration/Xamarin.ExposureNotification/Configration.json#L7-L16
この課題を解決するため、COCOA1向けの設定ファイルの
TransmissionRiskScores
の0番目の要素に1
を設定するものとします。値を
0
ではなく1
としているのは、Android版の挙動に合わせるためで、0
が設定する値として不適切であるという事実はありません。設定変更の影響範囲
TransmissionRiskLevel = 4の場合
COCOA1(Android)
TransmissionRiskLevel = 4の場合、COCOA1(Android)は
TransmissionRiskScores
の3番目の要素(7
)を採用します。 0番目の要素を1
に変更することで、COCOA1(Android)に影響することはないと考えています。COCOA1(iOS)
TransmissionRiskLevel = 4の場合、COCOA1(iOS)は
TransmissionRiskScores
の4番目の要素(7
)を採用します。 0番目の要素を1
に変更することで、COCOA1(iOS)に影響することはないと考えています。TransmissionRiskLevel = 0の場合
COCOA1(Android)
TransmissionRiskLevel = 0の場合、COCOA1(Android)は
TransmissionRiskScores
を参照せず、1
を採用します。 この場合、現在設定しているminimumRiskScore
を超えず、接触は発生しません(意図した挙動)。COCOA1(iOS)
TransmissionRiskLevel = 0の場合、COCOA1(iOS)は
TransmissionRiskScores
の0番目の要素(1
)を採用します。 この場合、現在設定しているminimumRiskScore
を超えず、接触は発生しません(意図した挙動)。COCOA2への影響
COCOA2はExposureWindow mode(ENv2)に移行しており、配信する設定値も別ファイルに分離されています。
COCOA1の設定変更がCOCOA2に影響することはないと考えています。