技術メモなど

ほぼ自分用の技術メモです。

スクレイピングで旭川市の新型コロナウイルス感染症に関する非公式オープンデータを作ってみた

新型コロナウイルス感染症に関する各関係者の努力には本当に頭が下がる思いで、コロナ禍が早く収束して欲しいと願うばかりなのですが、そんな中、各自治体の新型コロナウイルス感染症に関する情報を収集しようとした時に、機械的に処理しやすい形で情報が提供されていない現状があるという話を目にすることがあります。

現在各地のシビックテック団体や有志のエンジニア等により、地域ごとの情報提供サイトも立ち上げられています。

このような取り組みにおいて障壁となっているのが、国や自治体が公表している情報が機械判読しにくい、データの形式が揃っていないといった課題です。

自治体が共通の様式かつ機械判読性が高いデータ形式で公開することによって、より早くサイトが開発でき、更新もしやすくなるため、行政の公式情報を迅速に多くの人へ届けることにつながります。

新型コロナウイルス感染症対策のためのデータ公開支援 - Code for Japan

Code for Japan新型コロナウイルス感染症対策に関するオープンデータ項目定義書を公開していますが、各自治体の保健所は業務が逼迫していて、なかなかここまで手が回らないのが現実なのではないかと思います。

自分の住む旭川市もそうで、北海道全体の新型コロナウイルス感染症の情報については、北海道新型コロナウイルスまとめサイト北海道オープンデータポータルCSV形式のテキストファイルやJSON形式のWeb APIといった再利用しやすい形式で取得できるようになっていますが、旭川市公式ホームページで情報が公開されているものの、今のところオープンデータのような形では提供がされていません。

ただ、旭川市公式ホームページの新型コロナウイルス感染症に関する情報のページのHTMLはある程度規則性があり、スクレイピングすればうまく情報が拾えそうだったので、新型コロナウイルス感染症対策に関するオープンデータ項目定義書のうち、データセット No.01 陽性患者属性のみですが、CSV形式のテキストファイルを、非公式のオープンデータとしてダウンロードできるようにしたものを作りました。(旭川市単独のデータの需要があるのかは分かりませんが、少しでも誰かの何かの役に立てば……。)

ash-unofficial-covid19.herokuapp.com

https://ash-unofficial-covid19.herokuapp.com/012041_asahikawa_covid19_patients.csv

ただし、以下のデータ項目は旭川市公式ホームページからスクレイピングで取得することが困難だったため、北海道オープンデータポータルの陽性患者属性CSVから値を逆輸入?して取得しています。(旭川市公式ホームページに北海道の識別番号の記載があったので、北海道のオープンデータと紐付けできました。)

  • No.6 発症_年月日
  • No.10 患者_職業
  • No.11 患者_状態
  • No.12 患者_症状
  • No.13 患者_渡航歴の有無フラグ

スクレイピングPythonとBeautifulSoupを使い、DBはPostgreSQL、WebサーバはFlaskでHerokuにデプロイしています。Heroku Schedulerで1時間おきに情報を更新しています。ソースはGithubに上げています。

github.com

なお、本非公式オープンデータは個人で勝手に開発したもので、旭川市は一切関係ありません。また、内容の正確性は保証できませんのでご注意ください。

今回のスクレイピングについては、情報解析のための複製等に該当し著作権の問題は生じないと考えていますが、もし問題があればすぐに停止するつもりです。

情報解析のための複製等(第47条の7)

コンピュータ等を用いて情報解析(※)を行うことを目的とする場合には,必要と認められる限度において記録媒体に著作物を複製・翻案することができる。 ただし,情報解析用に広く提供されているデータベースの著作物については,この制限規定は適用されない。 ※情報解析とは,大量の情報から言語,音,映像等を抽出し,比較,分類等の統計的な解析を行うことをいう。

著作物が自由に使える場合 | 文化庁