WHO COVID-2019 データを取得するパッケージを作ってみた

no extension

ちょっと思いついて WHO COVID-2019 データを取得するパッケージを作ってみた。

ろくすっぽテストもしてないが,汎用で使えるとも思えないし,まぁいいだろう。

WHO Coronavirus Disease (COVID-19) Dashboard” で公開されている CSV データを取ってくるだけの簡単なお仕事である。

それだけではナニなので,簡単な集計もできるようにした。 たとえば

package main

import (
    "bytes"
    "fmt"
    "io"
    "os"
    "time"

    "github.com/spiegel-im-spiegel/cov19data"
    "github.com/spiegel-im-spiegel/cov19data/client"
    "github.com/spiegel-im-spiegel/cov19data/filter"
    "github.com/spiegel-im-spiegel/cov19data/histogram"
    "github.com/spiegel-im-spiegel/cov19data/values"
    "github.com/spiegel-im-spiegel/errs"
)

func getHist() ([]*histogram.HistData, error) {
    impt, err := cov19data.NewWeb(client.Default())
    if err != nil {
        return nil, errs.Wrap(err)
    }
    defer impt.Close()
    return impt.Histogram(
        values.NewPeriod(
            values.NewDate(2020, time.Month(9), 1),
            values.NewDate(2020, time.Month(9), 28),
        ),
        7,
        filter.WithCountryCode(values.CC_JP),
        filter.WithRegionCode(values.WPRO),
    )
}

func main() {
    hist, err := getHist()
    if err != nil {
        fmt.Fprintf(os.Stderr, "%+v\n", err)
        return
    }
    b, err := histogram.ExportCSV(hist)
    if err != nil {
        fmt.Fprintf(os.Stderr, "%v\n", err)
        return
    }
    if _, err := io.Copy(os.Stdout, bytes.NewReader(b)); err != nil {
        fmt.Println(err)
    }
    // Output:
    // Date_from,Date_to,Cases,Deaths
    // 2020-09-01,2020-09-07,3991,84
    // 2020-09-08,2020-09-14,3801,79
    // 2020-09-15,2020-09-21,3483,58
    // 2020-09-22,2020-09-28,2991,48
}

てな感じに書けば,9月の日本のデータを7日ごとに集計できたりする。

このパッケージで集計したデータを使えば

Confirmed COVID-2019 Cases in Japan

なんてなグラフも描ける。

元々は SARS-CoV-2 ウイルス感染の動向をチェックするために,ネットの隅っこで

を作って手作業でチマチマ集計していたのだが,徐々に自動化できるようになったので,データ取得部分を外だしにしてパッケージ化したというわけ。

「とりあえず動いてるからいいか」とあまりテストを書いてないし,設計も雑で如何にもやっつけなコードだけど,よろしかったらどうぞ。

ブックマーク

参考図書

photo
プログラミング言語Go
アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
丸善出版 2016-06-20 (Release 2021-07-13)
Kindle版
B099928SJD (ASIN)
評価     

Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら

reviewed by Spiegel on 2021-05-22 (powered by PA-APIv5)