はじめに
こんにちは。
にっしです。
東京都がOSSで開発した新型コロナウイルス感染症対策サイトの山口県版を制作しました。
3/19リリース時点では非公式でしたが、4/24に山口県公認となりました。
すでにご利用中の方もいらっしゃるかと思いますが、山口県内外の有志の方が開設・運営を行う、新型コロナウイルス感染症対策サイトがございます。
— 山口県新型コロナウイルス感染症対策本部 (@CoronaYamaguchi) April 24, 2020
データが視覚的に整理され、県内の現状把握に大変役立ちます。ぜひご活用ください。https://t.co/XdJjd42jzw#新型コロナウイルス #山口県 #yamaguchi
【ご報告】
— NSD (@nsd244) April 24, 2020
オープンデータ化 & 山口県公認 いただきました!!
この記事では、山口県コロナウイルス感染症対策サイト開発の経緯などについて語ろうと思います。
開発決意〜リリースまでの流れ
開発しようと決意したのが3/15で、実際に開発を始めたのが3/16、リリース日は3/19なので約4日でリリースまで行いました。
ゆるゆる開発したので、他の県のサイトなどと比較すると早い方ではないと思います。(1日でリリースまで行っているサイトもあるので)
開発決意
3/15、いつものようにtwitterを徘徊していると、以下のtweetを見つけました。
東京都のコロナウィルス対策サイト、ハッカソンを元に日本のエンジニアたちが作ったものが東京都に採用され、そのソースは他の自治体にも提供されている。
— TAKASU@Nico-Tech Shenzhen ニコ技深圳コミュニティ (@tks) March 8, 2020
多言語対応のうち繁体字は台湾のIT大臣が提供してくれた。
世界に誇るケースなんじゃないかなあ。https://t.co/WZtFMMxP9p
「東京都がOSSで開発して派生サイトが開発されているらしい、、、」ということで他の県の派生サイトを調べてみると、三重県版は高専生たちが開発していることがわかりました。
ついに!!!
— フレキシブル基板😱 (@FPC_COMMUNITY) March 13, 2020
「三重県版」新型コロナウイルス感染症 対策サイト立ち上げ完了致しました!!
県内の高専生4人で開発しましたが、起案からなんと1日でローンチすることができました。本当に、開発メンバーに感謝です。https://t.co/Qti5m92HPd
"僕も元高専生として負けてられないな" , ”多くの人が利用するOSSの開発に携わりたい” , ”つよつよな人たちが開発しているプロジェクトに参加して圧倒的に成長したい” という強い気持ちから、「とりあえずやろう!!!」と思い実現を決心しました。
まだ誰も山口県版を制作してないことを確認(2020/3/15時点)し、決意表明tweetをしました。
山口県版コロナウイルス対策サイト作るかあ
— NSD (@nsd244) March 14, 2020
また、code for japanのslackワークスペースに入り、山口県版の開発を始めることを宣言しました。
以上が、開発決意までの流れになります。
自分は「とりあえず行動しよう」が合言葉でチャレンジ精神が豊富な人間なので、勢い半分で開発を始めました。
2020/3/15
この日は、slackワークスペースの作成など開発する前の準備作業を行いました。
-
山口県版のワークスペースの作成(nsd)
-
東京都のリポジトリをforkして山口県版のリポジトリを作成した(nsd)
2020/3/16
この日は、東京都のリポジトリをながめてどのような議論をしているのか、システム構成はどのようになっているのか調査しました。
-
ロゴの作成(crispytaffyさん)
2020/3/17
この日は、code for japanの方が制作していただいた資料をもとに山口県版への移行作業を進めました。
- 派生版を作るときにまず、やることリストを見ながら、細かい設定の修正(nsd)
- 山口県版で表示するデータの収集・反映1(nsd, crispytaffyさん)
- プロモーション手段の提案/連絡(crispytaffyさん)
- 山口県庁への連絡(「山口県公式ウェブサイト」へのリンク)(crispytaffyさん)
2020/3/18
この日までで、フロントエンドのタスクはほぼ完了しました。
- 山口県版で表示するデータの収集・反映2(nsd)
- データ自動更新スクリプトの作成1(dream_expさん)
- facebookページの作成(crispytaffyさん)
- サイトのテスト(atososonさん)
- さくらのクラウドの契約(無償提供)(nsd)
【新型コロナウイルス感染症対応支援】
— さくらインターネット (@sakura_pr) March 14, 2020
さくらインターネットでは、新型コロナウイルス感染症に関する情報共有においてウェブサイトの構築などサーバーリソースを必要とされる方向けに、無料提供等の支援を行なっております。
例: https://t.co/Mc763heyIg
(続く 1/2)
- さくらのクラウドの環境構築・本番サーバの立ち上げ1(Tomitomiさん, nsd)
2020/3/19
リリース後にhttps化の作業をするなど少々慌てる場面はありましたが、無事予定通りリリースを行うことができました。
- さくらのクラウドの環境構築・本番サーバの立ち上げ2(Tomitomiさん, nsd)
- Let's Encryptでhttps化(Tomitomiさん)
- リリース
約4日で、山口県版新型コロナウイルス感染症対策サイトのリリースまで持ってくることができました!
— NSD (@nsd244) March 19, 2020
OSSに関わることができ、楽しかったです。
まだまだ改善点はあるため、
今後も開発を続けていきたいと思います!https://t.co/aDQH4vd1nf
※ここにすべての方のお名前を載せることはできていませんが、制作に協力していただいた方、ありがとうございました!
※追加してほしいなどの要望がありましたら追加いたします
更新の完全自動化、オープンデータ化、公認化までの流れ
3/19のリリース時点では、データを完全に手作業で入力し更新していました。
リリース後は、運用コストをなるべく減らすため、更新の完全自動化を目標に作業を行いました。
更新の完全自動化を行うにあたって、長野県版の開発者の記事を参考にしデータを外部ファイルから読み込むようにしました。
この時点ではオープンデータ化されていなかったので、新しくwebスクレイピング用のスクリプトをdream_expさんに作成していただきました。
しかし、スクレイピング先のサイトである山口県公式ページの一部削除やレイアウトの変更が不定期に行われ、そのたびに修正するという作業を行うことになってしまいました。
webスクレイピングでは運用コストが高いため、データを出している山口県庁の方にオープンデータ化の交渉をすることにしました。
(リリース直後に1度オープンデータ化の交渉を行いましたが、断られたためここでは別の部署の方に連絡を行いました)
山口県 健康福祉部 厚政課の方に連絡をとり、4/16に山口県庁に向かい詳細を直接お話をさせていただくことになりました。
この交渉には、新型コロナウイルス感染症対策サイトのためのデータ公開支援の資料を利用させていただき進めました。
交渉の結果、山口県オープンデータカタログサイトにオープンデータを公開してもらえることが決定しました。
また、県庁の方の提案で、更新の完全自動化後に公認化をしていただけることになりました。
オープンデータはcsvデータで提供していただけるようになりました。
コロナサイトでは、jsonデータを読み込ませるようにしていたため、csvデータをjsonデータに定期的に変換するためのリポジトリを作成しました。
以上の過程によって、4/19に更新の完全自動化、オープンデータ化、県公認の作業を完了することができました。
山口県版独自の実装
市区町村別陽性患者の累計データを以下のように地図形式で可視化しました。
本データの可視化を行う際に、3つの可視化手法を比較・検討いたしました。
1つ目は、地図形式です。本データにおけるこの手法の長所は、各市町村の位置関係が明快でわかりやすい点です。各市町村の位置関係を知識として持っておられる方であれば、すぐに知りたい市のデータを見つけることができます。短所は、各市町村ごとの面積が異なることによってデータの捉え方に影響が出るのではないかという点です。今回の場合ですと、山口市であれば面積が比較的面積が大きいですが、下松市であれば面積が小さい、全体でみると小さい市より大きい市が目立つため、面積が大きい市町村で感染者が多ければ、感染者が増えていると勘違いしてしまう人が増えてしまうかもしれません。また、市町村の数が多すぎると、一度にみることができる情報量が減ってしまうため見づらくなってしまう場合もあると考えています。
2つ目は、カラム地図形式(参考)です。この手法の長所は、どの市町村も大きさを均一にすることで、地図形式のように、データを全体で見た時の捉え方の歪みがなくなる点です。短所としては、各市町村の位置がわかりずらくなってしまいすぐに知りたい市町村のデータを見つけ出せない点にあります。
3つ目は、地図上で感染者数をマルの大きさで表す形式(参考)です。この手法の長所は、地図形式の長所を保ちつつ、地図形式の短所を克服している点にあります。一方、短所としては市町村データの大きさが小さすぎると他の市町村のデータと干渉してしまう可能性があるという点です。
以上の3つの可視化手法を本データにおいては検討いたしました。その結果、地図形式を採用いたしました。
理由といたしましては、本サイトは多くの山口県に関心がある方が閲覧しているため、各市町村の位置関係をわかりやすくしすぐにデータを見つけてもらえるようにしたほうがいいと思ったからです。
私自身、カラム地図を見た際に「僕の知りたい〇〇県はどこにあるんだ?」とデータの位置をすぐに見つけることができなかったことが体験としてあるため、カラム地図の採用は見送ることにしました。
地図上で感染者数をマルの大きさで表す形式では、面積が大きい市町村と小さい市町村の差が激しかったため、他の市町村データとの干渉が起こりやすいと考え、この手法も採用を見送ることにしました。
地図形式では、山口県は比較的市町村の数が少ないため、地図形式でも1度に十分な情報量を提供できると考えました。
最終的には、地図形式に各市町村名と感染者数の情報を追加したデータを可視化データとして提供しようと考えました。
可視化についての議論は今後も続けていくので、改善したほうが良いところなどあればissueを立ててくれるとありがたいです。
取材・報道
宇部日報の方では1面Topで掲載されました。
-
2020.03.21(土)宇部日報
宇部日報(nsd, Tomitomiさん, atososonさん)
-
2020.03.31(火)18:15~19:00放送 yab山口朝日放送 「Jチャンやまぐち」
「コロナ「より視覚的な理解を」山大生らがHP開発」(yab報道・YouTube) -
2020.04.01(水)07:45~08:00放送 NHK山口 「おはよう山口」
「新型コロナウイルス 感染状況まとめサイト 大学生が立上げ」 -
2020.04.01(水)12:15~12:20放送 NHK山口 「山口県のニュース」
「新型コロナウイルス 感染状況まとめサイト 大学生が立上げ」 -
2020.04.01(水)18:10~19:00放送 NHK山口 「情報維新!やまぐち」
「新型コロナウイルス 感染状況まとめサイト 大学生が立上げ」 -
2020.04.27(月)宇部日報
宇部日報(nsd, Tomitomiさん, atososonさん)
販促品の作成
制作サイトの認知度を向上させるために作成しました。
現在、山口県庁, 山口大学工学部などに掲示されています。
- 三角ポップの作成(crispytaffyさん)
- ポスターの作成(crispytaffyさん)
リンクをはっていただいたサイト(一部抜粋)
- 山口県公式ホームページ
- 山口県 新型コロナ関連情報 - Yahoo! JAPAN
- 政府CIOポータル
- StopCovid19全国版
- ITライフハック
- ニコニコニュース
- 窓の社
- 山口大学 工学部 知能情報工学科
- 山口大学 工学部
- 山口県感染症情報センター
- 山口県よろず支援拠点
- 萩市インキュベーションセンター
山口大学サテライトラボ萩 - 山口県オープンデータカタログサイト
- 山口県新型コロナウイルス感染症対策本部Twitterアカウント
すでにご利用中の方もいらっしゃるかと思いますが、山口県内外の有志の方が開設・運営を行う、新型コロナウイルス感染症対策サイトがございます。
— 山口県新型コロナウイルス感染症対策本部 (@CoronaYamaguchi) April 24, 2020
データが視覚的に整理され、県内の現状把握に大変役立ちます。ぜひご活用ください。https://t.co/XdJjd42jzw#新型コロナウイルス #山口県 #yamaguchi
まとめ
今回山口県版新型コロナウイルス対策サイトを無事立ち上げここまで運用してくることができたのは、東京都のOSSを開発してくださった方々を始め、code for japanの方々、サーバーを無償提供していただいたさくらインターネットの方々、オープンデータ化の提案を受け入れていただいた山口県庁の方々、山口県版新型コロナウイルス感染症対策サイトに関わっていただいたすべての方々のおかげです。
今回の開発・運用を通して様々な知見を得ることができ、今まで「なんとなく開発」してきたことに対する反省点などを見つけることができました。
今後も様々なサービス開発に関わっていく予定なので、今後も技術力をより磨いていきたいです。