6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

名大生が新型コロナウィルス(Covid-19)のためのWebAPIを開発した話

Last updated at Posted at 2020-04-10
スクリーンショット 2020-04-10 11 59 01

はじめに

名古屋大学、情報・通信工学専攻、河口研究室の修士2年生です。
タイトルの通り、新型コロナウィルスに関する情報を取得可能なWebAPIを開発しました。
先日GAEにてデプロイし、多少なりとも利用していただける方も増えてきたので、WebAPIを作成するにあたっての技術的な話からAPIの使い方などを記事にしようと思います。

Covid19 Rader for Japan APIとは

Covid19 Rader for Japan APIは日本における新型コロナウィルスの情報を取得できるREST APIです。
取得できる情報は

  • 罹患者データ
  • 都道府県毎の感染者数や入院者数、死亡者数
  • 日毎の感染者数、検査人数、死亡者数

という基本的な情報の他に

  • クルーズ船での感染者数
  • コールセンターへの問合せ情報
  • 最新の報道ニュース

なども取得できます。

本APIのGitHubはこちらです。
https://github.com/RuiHirano/covid19-rader-for-japan-api

作ろうと思ったきっかけ

作ろうと思ったのは2月の終わりごろだったと思います。その頃、新型コロナウィルスが世界のいたるところで発生してきて、インターネット上では多くの可視化サイトが開発されていました。その中でも特に、東京都の新型コロナウィルス感染症対策サイトが大きな話題となっていました。GitHubによって公開されることで世界中のエンジニアが貢献し、あっという間に素晴らしいサイトができあがりました。

オープンソースの力は偉大ですね。

また、それと同時にSignate社が独自で行っていた「Covid19 Challenge」というのをニュースでみました。Covid19 Challengeは一般の方が参加してデータセットを作成していくというもので、その時は16名ほどの貢献者が毎日更新していました。

このSignate社が公開しているデータセットを使って可視化サイトを作ってみようと思い、半日かけて可視化サイトの雛形を作成してみたのですが、結局このデータセットはサービスに使うには不向き(面倒)だという結論に至りました。(Google Spreadsheetにて書かれていたり、匿名の人が行うためデータに欠損値や間違ったデータが入っていることがあったため。)

そんな中、GitHub上で公開されているデータセットをみつけ、どうせなら誰でも使いやすい様にAPIを開発しようということで、可視化サイトの開発と並行してWebAPIの開発を行うことになりました。

本APIを使用したプロダクト一覧

Covid19 Rader For Japan

other...

もしサービスに利用した場合、ご連絡ください。追記していきます。

使い方

使い方を説明します。READMEにも書かれてるのでそちらも参考にしてください。

使用可能なデータセット

  1. Patients Data 罹患者のデータ
  2. Prefecture Data 都道府県の名前や緯度経度などのデータ
  3. DetailByRegion Data 都道府県別の統計のデータ
  4. DailyReport Data 日毎の統計のデータ
  5. DailyPositiveByPref Data 日毎、都道府県毎の罹患者のデータ
  6. DailyDeathByPref Data 日毎、都道府県毎の志望者のデータ
  7. DailyCallcenter Data 日毎、コールセンターへのお問い合わせ数のデータ
  8. DailyShip Data 日毎、コールセンターへのお問い合わせ数のデータ
  9. News Data 報道データ

Patients Data

罹患者の基本的な情報を取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/positiveDetail.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/patients

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/patients

Response:

[
    {
        "id":"ID01001",
        "date":"2020/01/28",
        "prefecture":"北海道",
        "residence":"国外(武漢市)",
        "age":"40代",
        "sex":"女性",
        "attribute":"来日観光客",
        "prefecture_number":"北海道1",
        "travel_or_contact":"渡航歴",
        "detail":"中国(武漢)",
        "src":"https://www.mhlw.go.jp/stf/newpage_09158.html",
        "onset":"2020/01/26",
        "symptom":"1",
        "death_or_discharge_date":"",
        "comment1":"",
        "comment2":"",
        "outcome":"",
        "outcome_src":""},{"id":"ID01002",
    },
    {
        "date":"2020/02/14",
        "prefecture":"北海道",
        "residence":"札幌市",
        "age":"50代",
        "sex":"男性",
        "attribute":"来日観光客",
        "prefecture_number":"北海道2",
        "travel_or_contact":"",
        "detail":"",
        "src":"http://www.pref.hokkaido.lg.jp/hf/kth/kak/hasseijoukyou.htm",
        "onset":"2020/01/31",
        "symptom":"1",
        "death_or_discharge_date":"",
        "comment1":"",
        "comment2":"",
        "outcome":"",
        "outcome_src":""
    },
...

Prefecture Data

都道府県の名前、緯度経度などを取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/prefectures.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/prefectures

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/prefectures

Response:

[
  {
    "id": 1,
    "name_ja": "北海道",
    "name_en": "Hokkaido",
    "regions": "0", 
    "lat": "43.46722222",
    "lng": "142.8277778",
  },
  {
    "id": 2,
    "name_ja": "青森",
    "name_en": "Aomori",
    "regions": "1", 
    "lat": "40.78027778",
    "lng": "140.83194440000003",
  },
  ...
]

DetailByRegion Data

都道府県毎の感染者数、入院者数、退院者数、死者数を日毎に取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/detailByRegion.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/detail-by-region

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/detail-by-region

Response:

[
    {
        "date":"20200319",
        "prefecture":"北海道",
        "cases":153,
        "hospital":77,
        "discharge":69,
        "deaths":7
    },
    {
        "date":"20200319",
        "prefecture":"愛知県",
        "cases":123,
        "hospital":106,
        "discharge":3,
        "deaths":14
    },
  ...
]

DailyReport Data

日本全体の日毎の詳細な情報を取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/resultDailyReport.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/daily/report

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/daily/report

Response:

[
    {
        "Date":"2020-02-06",
        "PcrD":"132",
        "PositiveD":"16",
        "SymptomD":"16",
        "SymptomlessD":"0",
        "SymptomConfirmingD":"0",
        "HospitalizeD":"9",
        "MildD":"0",
        "SevereD":"0",
        "ConfirmingD":"3",
        "WaitingD":"0",
        "DischargeD":"4",
        "DeathD":"0",
        "PcrF":"566",
        "PositiveF":"9",
        "SymptomF":"5",
        "SymptomlessF":"4",
        "SymptomConfirmingF":"0",
        "HospitalizeF":"9",
        "MildF":"7",
        "SevereF":"0",
        "ConfirmingF":"2",
        "WaitingF":"0",
        "DischargeF":"0",
        "DeathF":"0",
        "PcrX":"",
        "PositiveX":"",
        "Symptom":"",
        "Symptomless":"",
        "SymptomConfirming":"",
        "Hospitalized":"",
        "Mild":"",
        "SevereX":"",
        "Confirming":"",
        "Waiting":"",
        "DischargeX":"",
        "DeathX":"",
        "PcrY":"31",
        "PositiveY":"10",
        "DischargeY":"",
        "SymptomlessDischarge":"",
        "SymptomDischarge":"",
        "SevereY":"",
        "DeathY":"0",
        "Pcr":"729",
        "Discharge":"4",
        "PcrDiff":"",
        "DischargeDiff":""
    }
  ...
]

DailyPositiveByPref Data

都道府県毎の罹患者数を日毎に取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/byDate.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/daily/positive-by-pref

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/daily/positive-by-pref

Response:

[
    {
        "date":"20200330",
        "hokkaido":"",
        "aomori":"",
        "iwate":"",
        ...
        "tokyo":"1",
        "kanagawa":"1",
        "niigata":"",
        "oita":"",
        "charter":"",
        "quarantine_officer":"",
        "cruise":"1"
    },
  ...
]

DailyDeathByPref Data

都道府県毎の死者数を日毎に取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/death.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/daily/death-by-pref

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/daily/death-by-pref

Response:

[
    {
        "date":"20200330",
        "hokkaido":"",
        "aomori":"",
        "iwate":"",
        ...
        "tokyo":"1",
        "kanagawa":"1",
        "niigata":"",
        "oita":"",
        "charter":"",
        "quarantine_officer":"",
        "cruise":"1"
    },
  ...
]

DailyCallCenter Data

日毎のコールセンターへの問合せ件数などを取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/callCenter.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/daily/callcenter

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/daily/callcenter

Response:

[
    {
        "date":"20200128",
        "call":"99",
        "fax":"",
        "mail":"",
        "line":"3"
    },
    {
        "date":"20200129",
        "call":"250",
        "fax":"",
        "mail":"",
        "line":"3"
    },
  ...
]

DailyShip Data

クルーズ船(ダイヤモンドプリンセス号)の統計データを取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/shipDailyReport.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/daily/ship

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/daily/ship

Response:

[
    {
        "date":"20200205",
        "pcr":"31",
        "positive":"10",
        "discharge":"",
        "symotomless_discharge":"",
        "symotom_discharge":"",
        "severe":"",
        "death":"0"
    },
    {
        "date":"20200206",
        "pcr":"",
        "positive":"",
        "discharge":"",
        "symotomless_discharge":"",
        "symotom_discharge":"",
        "severe":"",
        "death":"0"
    },
    ...
]

DailyNews Data

日毎の報道の情報を取得できます。

Dataset

https://github.com/swsoyee/2019-ncov-japan/blob/master/Data/mhlw_houdou.csv

Endpont: https://covid19-rader-for-japan.appspot.com/api/v1/news

$ curl https://covid19-rader-for-japan.appspot.com/api/v1/news

Response:

[
    {
        "id":"1",
        "date":"20200116",
        "title":"新型コロナウイルスに関連した肺炎の患者の発生について(1例目)",
        "Link":"https://www.mhlw.go.jp/stf/newpage_08906.html"
    },
    {
        "id":"2",
        "date":"20200124",
        "title":"新型コロナウイルスに関連した肺炎の患者の発生について(2例目)",
        "Link":"https://www.mhlw.go.jp/stf/newpage_09079.html"
    },
...
]

おわりに

WebAPI, Webサイトともに新型コロナウィルスによる影響がなくなるまで更新し続けるつもりです。
多くの方に利用していただいて様々な形で役に立てたら幸いです。

貢献のお願い

Contributerとして手伝っていただける方を募集しています。使用言語はgolangです。
また、同時にフロントエンドの新型コロナ情報サイトも作成しています。フロントエンドではReactを使用しています。そちらも貢献していただけると助かります。

Web REST API
https://github.com/RuiHirano/covid19-rader-for-japan-api
Webサイト
https://github.com/RuiHirano/covid19-rader-for-japan

6
4
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?