11
9

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-19Hokkaidoデータ編②オープンデータ化+自動更新へ向けて

Last updated at Posted at 2020-03-12

もくじ

COVID-19Hokkaidoデータ編①スクレイピングなどによる初期データ作成
COVID-19Hokkaidoデータ編②オープンデータ化+自動更新へ向けて←この記事だよ!
COVID-19Hokkaidoデータ編③完全自動化

スクリーンショット 2020-03-10 17.37.10.png

①では上図V0についてまとめましたが、今回の記事はそれ以降、オープンデータポータルなど外部API活用までをまとめます。

V0での課題

V0ではデータの取得は①道ウェブサイトからのスクレイピング、②札幌市提供の静的なCSVファイルに依存していました。
これには以下のような問題があります。

  • スクレイピングしたデータではなく、ちゃんとオープンデータとして公開されているデータを使いたい
  • スクレイピングは、ウェブサイトのtable構造の変化に対し脆弱
  • CSVファイルが更新されるたびに毎回プッシュする運用の手間

ではどうなったらラクなのかというと、上図のV1以降?となっている左下のフローが実現すればとてもラクです。

現在は(おそらく)エクセルでこさえた表形式のデータを、利用者がみやすいようにPDFなどに変換して公開していたり、HTMLに直でデータが掲載されていたり、いわゆる機械判読が困難なデータに仕上がっている状況にあります(誰でもすぐ読み取れる資料を、という意図はわかります)。今回のウェブサイトも、たとえば陽性患者データすらPDFで提供されていたらデータの収集が困難だったと思います(最低限HTMLのテーブルだったから無理やり読めた)。様々な情報を生データ(CSVなど)で、オープンデータとして配布すれば、こんな良い事があるよ、と、今回の事案で多くの方に認識されればなぁ。

という私のお気持ちが実現すれば左下のカタチになるわけです。近い将来そうなったら良いなぁ。

とか余裕ぶっこいてたらなんと2日くらいしたら実現しました。

オープンデータへの移行

北海道

北海道のデータがウェブサイトだけではなく北海道オープンデータポータルにも随時更新される事となりました。北海道の担当者がこのポータルに最新のCSVファイルを随時アップロードする仕組みです。名前のとおり、ここで公開されるデータはオープンデータで、誰でも無料でCSVデータにアクセス出来ます。

札幌市

また札幌市も同様にオープンデータのポータルサイト札幌市ICT活用プラットフォーム DATA SMART CITY SAPPOROを運営しており、窓口相談件数データなどがオープンデータとして公開されました。データの作成は北海道と同じく担当者の作業。ありがたい限りです。

ものすごいスピード感でした(こういったポータルという土壌があったからこそスムーズに移行出来たんだなぁ)。行政のイメージが覆るようなスピード感に負けじと、前回のスクリプトをオープンデータポータルに対応させる修正を行いました。

https://github.com/codeforsapporo/covid19hokkaido_scraping/tree/f3923df7f6a3781e94ef5b514c9d9ec7fe5aa4b1
※本記事執筆時点のコミットまでさかのぼっています

main.pyを実行すると、settings.pyのREMOTE_SOURCESに入力されたデータを巡回してjsonなどを吐き出すようになっています。
今回公開されたCSVデータはAPIを通してファイルにアクセス出来ますが、結局CSVデータを読み出す必要があったため、API経由のアクセスではなくリソースへの直リンクです。読み込んだCSVをdictに変換し、jsonにdumpします。

本リポジトリ上で、main.pyの実行は15分おきにスケジューリングされており、gh-pagesブランチにjson類を吐き出します。
なので、各ポータルのデータが更新されれば15分以内にはjson類にも反映されます。これらjson類には外部からCORS制限なくアクセス可能(のよう)です。つまり擬似的なAPIサーバーとして機能する訳です。
フロント側で非同期通信でそれらjson類を読み出すようになれば、データ更新の完全自動化が実現します。
※現状、json生成時にバリデーションなどがないため、完全自動化にはまだリスクが高く実装はしていません

終わりに

前回まではウェブサイトのスクレイピングと静的CSVファイルでデータをこさえていましたが、北海道、札幌市それぞれの常識が覆るスピードでのオープンデータ公開により、トップの図で示された理想的なカタチが実現しました。確かに新型コロナウイルスをきっかけとした変化ですが、そもそもポータルサイトがなければこれほどスムーズな動きにはならず、そういったサイトが作られるには地道な活動があったはずです。先人の活動に感謝しつつ、より前に進められればと思う限りです。

11
9
0

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
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?