新型コロナウイルス接触確認アプリ「COCOA」のAndroid版で、通知が来ないなどの不具合が発覚しました。ソフトウェア開発をしている立場から言えば、それなりの確率で十分に起こりえる問題に見えます。
COCOAの機能は、コロナウィルスの検査で陽性になった人と濃厚接触になった人に通知を送るというものです。もちろん両者がCOCOAの動作するスマートフォンを持っている必要があります。濃厚接触の定義はマスクを外した状態で1m以内に15分いて会話などをした場合(2021年2月10日時点)です。
このアプリの機能は、通勤電車やレストランなどで見知らぬ人と濃厚接触に近い状態になった履歴を保存して、その中にコロナ感染者が発生した場合に通知で知らせてくれるというものです。通知を受けた人は感染した可能性を考慮して行動することができ、感染拡大を抑制する効果が期待できます。
COCOAアプリの入ったスマホどうしが近づいた場合、互いの固有なコードを教えあい、それをストックします。COCOAの入ったスマホの中には、自分が近接した他のスマホの固有なコードが次々と保管されてゆきます。15分の接近状態を確認するためには相当膨大なデータを収集することになるでしょう。
さて、コロナで陽性になった人は、自分のCOCOAに陽性申告すると自身のコードをサーバーに送ります。COCOAのユーザーは定期的に陽性者のコードをサーバーから取得し、スマホ内に一致するコードが見つかったら、陽性者と濃厚接触があったと通知が出るという仕組みです。
サーバーのシステムは不具合のなかったiOS版と共通なので、そこに問題はありません。Android端末にだけ通知に不具合があったということは、Android端末の中の収集データがきちんとできていなかった可能性が高いと思われます。
時間をかけて収集する膨大なデータの処理がこのアプリの肝心な部分です。このようなシステムは構造的に短期間の正確なテストが難しく、Androidのように端末に様々なバリエーションがある今回のような場合、何らかの不具合が出る確率はそれなりに高いと云えます。
これに携わった開発関係者は大変でしょうが、修正開発がうまくいくことを願っています。
以下余談です
このアプリ、実は自身の端末の固有のコードを10分〜20分毎に変更する仕様になっています。おそらく固有のコードの更新と時間の経過を関連付けて、各々のスマホ端末の時刻設定の影響をなくそうというアイデアでしょう。
しかし、こういう人間の直感に合わない(個人のコードがどんどん変わる)データ仕様は人間がデータの羅列を見てもすぐに状況を理解しづらい点が弱点です。不具合を起こしたときにデータを見てもはっきりとした原因をつかみづらくなり、テストの段階で不具合の見落としにつながります。
以上勝手な考察ですが、開発者としては教訓になります。
※ここで記載しているプログラムの仕様は、GoogleStoreでのアプリの説明資料に基づいています。