COVID-19 とオープンソース

新型コロナ感染症とオープンソースソフト(Open Source Software: OSS)の絡みでいうと、ちょっと話題になったのは、東京都の新型コロナ対策サイトだろうか。

東京都公式の新型コロナ対策サイトはオープンソースで作られた!

サイトの雛形になったソースコード(日経的には「設計図」)が GitHub というサイトで公開され、修正提案なども歓迎されているため、参加はしやすい。

そこに台湾の天才デジタル大臣と名高いオードリー・タン氏が降臨したものだから、一気に盛り上がってしまった。(実際には、一文字修正しただけなんだが)

 

地域版への展開

プロジェクトが始まった当初は東京都版の多言語対応だとか「縦」方向の進化を続けていたのだが、現在(2020/03/20)は、東京都サイトのソースコードを流用しての「横」展開、つまり、各自治体バージョンの開発・公開の方向に向かっているようだ。
いくつか紹介。

・本家東京都
https://stopcovid19.metro.tokyo.lg.jp/

・神奈川は有志がつくっていたものが県公式となりました(→すみません、別物のようです。)
https://www.pref.kanagawa.jp/osirase/1369/
神奈川版の病院稼働表示は各方面からの評価も高く、

全国医療機関の医療提供体制の状況(β版)

に取り入れられたようです。これは、かっこいい。

ただ、もうこうなるとオープンソースでもなんでもない。

・アイキャッチがカッコイイと評判の北海道
https://stopcovid19.hokkaido.dev/

・三重県は高専生が立ち上げてちょっとした話題に
https://covid19-mie.netlify.com/

・千葉は、なんと

千葉県(公式) https://covid19.civictech.chiba.jp/
千葉県(非公式) https://chiba-covid19.mypl.net/
千葉市(非公式) https://stopcovid19.code4chiba.org/

三つが並行して動いている(他にもあるという説もあり)。

・3/31 にいきなり陽性者が出てちょっと驚かれた山形県
https://stopcovid19-yamagata-unofficial.netlify.app/

・新潟県(非公式)もまったり更新中
https://stopcovid19-niigata-unofficial.netlify.com/

・アクティブに図版の追加が行われている富山県。
https://stopcovid19-toyama.netlify.app/
他にも色々と動きがみられます。

ただ、栃木・茨城は何の動きもみられない(ぼそっ)。

【追記】地域版サイトは、新規のリリースや URL の異動が激しいため、『政府 CIO ポータルのページ』やここなどでチェックしてください。

 

stopcovid19.jp は自治体「公式」ではない!

横方向に広がってくると何らかの統一感が欲しいという欲求は出てくる。

Code For Japan で URL が xxxx.stopcovid19.jp となるよう開発者にサブドメインを払い出すようになった。
が、これは URL の張り替えを伴う(=一手間かかる)ことやそもそも Code For Japan とは無関係に自身のサイトを開発してしまった一般市民(高校生や大学生などはその典型でしょう)も多くいて、必ずしも浸透はしていないようだ。

Code For Japan は開発者に作成サイトを各自治体の「公式」サイトになるように奨励する傾向があるようなのだが、たとえ技術はあるにしてもぶっちゃけそこまではしたくないという人は多い。
例えば、某県では CodeFor 「某県」 が自治体にアピールしていたようなのだが、実際に自治体の側から要請を受けたのは、別の個人開発の方(といってもかなり実績のあるエンジニア)のサイト。しかし、その開発者は、メンテの煩雑さを予想してか「公式ではなく公認」程度を希望していた。行政が開示したデータとはいえ、医療に密接に関係する情報であることを考慮するとこういった態度は一つの見識だと思う。
また、別の某県では県公式HPからリンクされたのは、CodeFor の方ではなくて、有志の手によるサイトだった。

 

そういった経緯があるので、URL 末尾が stopcovit19.jp だからといって必ずしも信用できるものはないし、自治体公式でもないことや個人や小グループで開発・運用されたサイトでも信頼のおけるサイトはあるということは注意しておく必要がある。

その他、問題点

前にもちょっと触れたが、オーバーシュート時の対応が示唆された段階でもまったく動きの見られない地域もある。素(設計図)があるだけに地域版カスタマイズの敷居は低いのだが、立ち上げた地域でもそれだけでいっぱいいっぱいになっているところも目立つ。たぶん、技術者の地域間偏在・スキルの格差がこういったことの背景にあるのではないだろうか。ここらへんはいわゆる「シビックテック」の限界の一つだろう。

 

また、サイトの準備はほぼ整っているのに自治体側のデータの開示が今一つで、うまく情報を発信できない地域もけっこうある。

 

さらに、東京都や総務省あたりはこういった取り組みに一定の理解があると思うのだが、日本医療の総元締め的存在の厚生労働省は関与はしていない。
医療に関係するソフトでありがちなのは、経産省や総務省が焚きつけても実際の医療現場からするとピンがボケていて、医療関係者や厚労省あたりからまったく相手にされず、結果、大した成果もあげられないっていうパターンだろうか。

今回のケースで言うと、厚労省が広域対策を打ち出した時点で(『新型コロナウイルス感染症の患者数が大幅に増えたときに備えた入院医療提供体制等の整備について』)、少なくとも『横展開』に関してはピンがボケた感がある。

厚労省が言いたいのは、患者搬送なども県を超えて広域で対応しなさいよってことなのだが、「自治体」だけにこだわっているとこういった変化に対応しにくい。(それだけ SARS-CoV-2 の「感染」速度が、オープンソースの「感染」速度より速かったということなんでしょうけれど)

例えば、NHK のサイトは、かなり以前からこんなマップを提示している。

交通量の影響だとか地勢学的な伝染のしやすさみたいなものがうっすらと想像できると思う。
別に NHK の回し者でも何でもないが、やはりみやすいよね。

 

オープンソースのメリットが生きた点

やはり、ソースコードを直接改変して機能追加がしやすいところだろう。

」公式をあえて強調している(↓)ような兵庫県版は(ちなみにドメインも .org)、

いち早く(本家東京より早く)病床数と入院患者数に注目、わかりやすい円グラフの形で視覚化してくれた。

こういう工夫は厚労省のお達しにも合致していて良いですよね。

 

なお、ここらへんのお話は、『新型コロナとシビックテック』あたりの記述がリアルです。

広域連携のもう一つの形 -東北・新潟共同緊急宣言-

広域連携に関連して言えば、首都圏では実際に県・都を跨いで患者の受け入れなどは行われていた。IT がどの程度関与できたかは知るよしもないが、泥臭い人海戦術で行われたと聞いている。IT で全てが解決できるわけではないのだ。

興味深かったのは、4/24 に東北6県(青森・秋田・岩手・山形・宮城・福島)と新潟県が共同で緊急宣言を発出したこと(厳密には政令指定都市である仙台市と新潟市と共同)。

ネットでは戊辰戦争になぞらえて「令和の奥羽越列藩同盟」と話題になった。

「なんで、この組み合わせ? Why?」と不思議に思った人も多いようだったが、この地域はなぜかうまく感染拡大を封じ込んでいて、他地域からの流入や地域内での往来を制限してこの地域でブロックを組んでしまえば、感染拡大をある程度は乗り切れると考えたからだろう。例えば、(引き合いに出してちょっと申し訳ない気もするんだが)新潟のお隣の富山県はかなりの間、陽性者を出していなかったのだが、3/30 に初めて観測されてから 4/25 までで累計 169 人、陽性率も比較的高めで推移している。同じ時期に初感染者を出した山形県とは対照的だ。山形県関係者の相当の努力があったのではないかと推測する。

【参考】厚労省『新型コロナウイルス陽性者数(チャーター便帰国者を除く)とPCR検査 実施人数(都道府県別)』より。ただし、1/15 – 4/21 の集計

しばしば「粘り強い」と称されるこの地域の県民気質も考慮すると、これはこれで「あり」な戦略なんではないかと思う。

 

サイトを支える技術 – Nuxt.js・Vue.js –

サイト自体は Nuxt.js (ナクストあるいはヌクストと読む)というフレームワークを使っている。技術的に感心したのは、このフレームワークのできのよさ。
各種グラフがモダンな感じで高速で描画できるのは、このフレームワークのおかげ。
ところで、最近、某先生が Laravel に凝っておられるようなのだが、最初、記事を読んだとき、正直、何のことかさっぱりわからなかった。
Laravel 自体は PHP のフレームワークで、やはりモダンな感じで洗練されている。WordPress サイトを Laravel + Nuxt で置き換えるのが最近のトレンドのようだ。

【実録】WordPressサイトをAWS+Laravel+Nuxtにフルリプレイスした話
などググればよく出てくる。

んー、私もそのうち着手しないといけないのかなあ。
しばらく WordPress + Nuxt あたりでごまかしたいんだが・・・。
とりあえず、東京都サイトのカードを WordPress に取り込むとこんな感じになる。

確かにカッコ良くはある。(もう消えてますね)

なお、そもそもサーバサイド JavaScript がわからん、という人は

イマドキのフロントエンド開発環境

あたりを参照。
node の存在意義や ES6 あたりの新しい文法の必要性あたりが理解する上でのポイントでしょうか。

ライセンスと著作権表記

なお、東京都のソースコード自体は MIT ライセンスというもので公開されています。
著作権表記はどの団体も (C) 開発・リリースした団体 としている。プロジェクトに貢献した人(contributor などという)は多すぎるので Web ページには表記せず、「設計図」を納めたサイト(リポジトリ)に別ファイルに記載されてます。
当然だと思うのだが、これを違うと解釈する人たちもいるので、念のため。

 

 

猪股弘明(精神保健指定医)

 

STOPCOVID19 サイトのデータの解釈など

東京都のサイトから派生した STOPCOVID19 各地域版で表示できるデータには限りがあります。
ここではデータの読み方や有用と思われる指標などを解説していきます(『新潟県新型コロナウイルス感染症対策サイト』を意識していますが、考え方はどのサイトのデータでも適用できると思います)。

日毎の陽性者数を追っていってもいいのですが、もう一歩踏み込んでみましょう。

陽性率

例えば、

検査陽性者数 / 検査人数 x 100 [%]

などという指標も興味深いですね。陽性率などと呼ばれています。
ほぼどの自治体も1日あたりの検査人数と陽性者数を発表してくれています(新潟県などは検査「件数」だけなのがちょっと残念なのですが、これでも「まあまあ」代用がききます)。

ただし、地域によっては検査した日と結果が判明した日は違っていたりするので、実際計算する際は、数日間の平均を取るなどして工夫は必要です

試しに新潟県と東京都の陽性率を算出しグラフ化してみました。
ただし、東京都では陽性者数>検査人数 となる日があるので、直近3日平均としました。
・東京都:陽性者数(直近3日の合計)/検査人数(直近3日の合計)
・新潟県:陽性者数(直近3日の合計)/検査件数(直近3日の合計)
です。新潟県では 4/17 に陽性者が 6 人に増え、驚かれた方も多いかもしれませんが、まだ 3 %台です。東京都では、50 %を上回る日も多く(検査した 2 人に 1 人は陽性)、状況は若干違うようです。
5/8 東京都福祉保健局から公式の陽性率が発表されました。

検査機関によっては、毎金曜日に(事後的に)集計が計上されるため、検査数(分母)が実際の数値より小さいため、ちょっとおかしな数値になっていたようです。それでも 10 %を超える日(かなり感染の勢いが強い)が続いていたことがわかります。また自粛のおかげでしょうか、(第一の)ピークは過ぎたように見えます。

 

検査は PCR という手法を用いますが、この検査方法は精度が 100 %ではありません。偽陽性や偽陰性といった問題があるのですが、ここではその説明はひとまず省いて、まずまず信用できるものとします。

1日に検査を100 件実施したとして、陽性者数がゼロならばまずは安心ですね。日本の検査方針は、新型コロナが疑われる人を優先にしておこなわれていますから、それでゼロならば、その地域ではそれほど感染の流行はみられていないと解釈できます。

数日おきに陽性者が1人出るかどうかといった程度でも、極端に心配する必要はないでしょう。この状態ならば、発見できた陽性者の濃厚接触者をさらに調べ、適宜、隔離などの措置をこうじることで、感染の拡大を防ぐことができるからです。

ですが、陽性者数が 10, 15, 30 … と増えてきたらどうでしょう?
(陽性率はもちろん 10[%], 15[%], 30[%] … )

(実際にはいつも検査数が 100 ということはないですから、大雑把な%で見るといいかと思います。この数値が日に日に増えてきたら、要注意!)

これは大雑把にはその地域での感染伝播の勢いを意味しており、心配する必要があるでしょう。行動パターンを変えた方がいいです。具体的には「不要不急の外出を控える」、「止むを得ず外出したとしても三密(密閉・密集・密接)を避ける」といったことを徹底することです。

 

潜在的な陽性者数(これは推測するしかありません)

日本は PCR の検査を疑いのある人にのみ実施することで、検査による感染の拡大リスク(例えば、医療機関でウイルスをもらってきてしまう可能性だってあります)を抑えてきました。しかし、3月末頃より都市部では特に感染経路が不明な陽性者が増えてきました。このタイプの陽性者は、

・(まだ検査されていないが既に感染している)周囲の人から感染した

・知らず知らずのうちに周囲の人を感染させている

と考えるのが自然ですから、実際の陽性者数は報告されている数値よりも大きいと考えられます。

このような地域にお住まいの方はより強い注意が必要でしょう。

国勢調査のように無作為にサンプリングして、国や自治体レベルでの陽性者数を推測することは原理的にはできますが、現在(2020/4/6)のところ、このような方向性の検査は実施されていません。

精度はひとまずおくとして、潜在的な陽性者数を統計的な手法で推定することはできます。具体的な出典は控えますが(推定ですので値はまちまちです)、現在のところ、報告されている陽性者数の数倍程度と見積もられています。

 

 

猪股弘明(医師:新潟県出身)

(適宜改変)