見出し画像

東京都の新型コロナ対策サイトを支える「オープンソース」という希望

こんにちは、エンジニアのgamiです。

先週2021年1月7日に、政府は新型コロナウイルス対策で2回目となる「緊急事態宣言」を出しました。「検査陽性者の数が過去最高を更新しました」といったニュースが連日報道され、僕もほとんど家から出ずに生活しています。

僕は東京都に住んでいるので、ウイルス感染のリスクについて不安になったとき、定期的に「東京都 新型コロナウイルス感染症対策サイト」(以下、「新型コロナ対策サイト」)を見にいきます。

報道ではわかりやすい検査陽性者の数が取り上げられがちですが、サイトでは重症者や死亡者の数など、より細かいデータまで見ることができます。こうしたデータから、「陽性者数の伸びと比べると死亡者数はそこまで増えてなさそう」などを読み取って、過度に恐れすぎないようにしていたりします。

改めて「新型コロナ対策サイト」を見てみると、行政機関が作ったWebサイトとはとても思えないほどよくできています(失礼)。たとえば多くの自治体サイトではグラフが静的な画像やPDFだったりします。一方このサイトでは、推移を示すグラフにカーソルを当てるとその日の陽性者数が表示されるなど、インタラクティブにデータを見られるようになっています。また、サイト全体が英語、中国語、韓国語など複数の言語に翻訳されており、設定を切り替えるだけで表示する言語を切り替えることができます。

こうした「品質の高い」Webサイトが実現されている大きな要因の1つに、このサイトが「オープンソース」として公開され、コミュニティの力を借りて開発、改善されているということがあります。

一方、ソフトウェア開発の現場に馴染みがない人には「オープンソース」というものがどういうものか、よくわかりにくいんじゃないかと思います。そこで今回は、「新型コロナ対策サイト」を題材に、「オープンソース」というカルチャーについて一緒に考えたいと思います。

(本サイトの運営や開発に直接関わっているわけではないので、なんか間違ってたら教えてください)


誰でもソースコードが見られる

さて、Webサイトが「オープンソース」で作られているというのは、どういう状態でしょうか?最も直接的な説明は、Webサイトを動かすためのソースコードが全世界にオープンにされているということです。

実際、「新型コロナ対策サイト」のソースコードはGitHubというWebサービス上に公開されていて、次のリンクから誰でも見ることができます。

Webサイトの開発に慣れていない方がこのソースコードを読み解くのは難易度が高いと思いますが、たとえば「当サイトについて」というページに対応するソースコードを見ると、実際にWebサイトに表示されている文章がソースコード中に含まれていることがわかります。

スクリーンショット 2021-01-11 10.22.18

当サイトについて | 東京都 新型コロナウイルス感染症対策サイト

<template>
 <div class="About">
   <page-header class="mb-3">
     {{ $t('当サイトについて') }}
   </page-header>
   <static-card>
     {{
       $t(
         '当サイトは新型コロナウイルス感染症 (COVID-19) に関する最新情報を提供するために、東京都が開設したものです。'
       )
     }}<br />
     <br />
     {{
       $t(
         '東京都による公式情報と客観的な数値をわかりやすく伝えることで、東京都にお住まいの方や、東京都内に拠点を持つ企業の方、東京都を訪れる方が、現状を把握して適切な対策を取れるようにすることを目的としています。'
       )
     }}
   </static-card>
   <static-card>
...

covid19/about.vue at development · tokyo-metropolitan-gov/covid19

また東京都版「新型コロナ対策サイト」のソースコードが公開されていることで、そのソースコードを使って他の地域でも同様の「新型コロナ対策サイト」を作る動きが広がっています。東京都がソースコードを公開したことで、他の地域が同じようなWebサイトを作りたい場合でも、1から作るよりよっぽど楽に開発できるようになったわけです。これぞ「公益」という感じがします。

一方、たとえば表現を変えて、「東京都のWebサイトの一部がどう動いているかを示すプログラムが全世界に公開されてしまっている」と聞いたら、なんだか「情報漏洩」っぽさを感じて怖くなるかもしれません。しかし、特にこのサイトは「東京都オープンデータカタログサイト」でもともと公開されているオープンデータを可視化することが機能の多くを占めており、個人情報が含まれるようなサイトではありません。そうした特性もあって、「ソースコードを公開することの方がメリットが大きい」という判断がされたものと思われます。

それでは、「ソースコードをオープンにするメリット」とはなんでしょうか?それを理解するために、「オープンソース」のプロジェクトの特徴を2つ紹介します。

誰でも改善提案やバグ報告ができる

「オープンソース」のプロジェクトが持つ1つ目の特徴は、議論がオープンに行われるということです。

どのくらいオープンかというと、基本的に世界中の誰でもそのプロダクトに対して改善提案やバグ報告をしたり、またその提案や報告に関する議論に参加することができます

「新型コロナ対策サイト」の場合、こうした議論は同じくGitHub上で行われています。何か問題を発見した人は、Issueと呼ばれる文書を新しく作り、その問題についての説明を詳細に記述します。その後、他の人がIssueにコメントを付ける形で議論が進み、必要ならソースコード等の修正が行われます。

たとえば、2020年8月に作成された「8月1日分を反映した感染者報告データで、7月13日分の報告内容の一部が消えている」というIssueを見てみましょう。

スクリーンショット 2021-01-11 10.40.04

このIssueでは、「グラフに表示された特定の日のデータに不備があるのではないか」という点が指摘されました。その後、実際にデータが間違っていたことがわかり、元データの修正が行われています。

このようなIssueは、GitHubのアカウントを作りさえすれば、このページから誰でも立てることができます。

スクリーンショット 2021-01-11 10.44.44

多くの人の感覚では、仕事上のアウトプットにミスがあった場合、「なるべく多くの人の目に触れないようにこっそり直したい」と思うかもしれません。しかし、なるべく早く問題を発見できるようにし改善のスピードを上げた方がいい場合、フィードバックや議論をオープンにした方がメリットが大きいことがあります

実際、「新型コロナ対策サイト」に対して作られたIssueの数は、2021年1月11日現在で1,431個に及んでいます。オープンにフィードバックを求めた結果、1,000を超える改善点について議論が発生し、それがWebサイトの品質向上につながっているわけです。

誰でも開発に参加できる

「オープンソース」のプロジェクトが持つ2つ目の特徴は、開発がオープンに行われるということです。

つまり誰もが要望を挙げられるというだけではなく、誰もが「新しい機能を追加しました!」とか「勝手にバグ直しときました!」とか「別の言語に翻訳しちゃいました!」とかできるということです。驚きですね。

「新型コロナ対策サイト」の例では、サイト公開当初に台湾のIT担当大臣 オードリー・タン氏が開発に参加したことで話題になりました。内容は、「言語選択のプルダウン、"繁体字" じゃなくて "繁體字" という表記の方がいいと思いから勝手に直したよー」といった具合です。

もちろん、「勝手に直していい」といっても、誰のチェックも受けずに実際に公開されている「新型コロナ対策サイト」の内容を書き換えられるわけではありません。こうしたオープンソースのプロジェクトには、「メンテナー」と呼ばれる管理側のメンバーがいます。ソースコードの修正自体は誰でもできるが、それを実際に採用するかどうかは主に「メンテナー」が判断するという形になっていることがほとんどです。

ソースコード修正までの流れは、ざっくりいうと次のようになっています。

誰かが、ソースコードの修正案を実際に作って公開する
「メンテナー」がそのソースコードに問題がないかチェックする
問題なければ、修正案が実際のソースコードに反映される

(こうしたやりとりも全てGitHub上でできるようになっています。GitHubすごい。)

ちなみに、ここでは便宜的に「 "開発" がオープンに行われる」という表現を使いましたが、いわゆるプログラミングスキルを使う開発以外の貢献方法もあります。たとえば「新型コロナ対策サイト」では誰でもサイトの翻訳に参加できる仕組みが提供されています。

オープンソースの世界でも、「議論に参加すること」と「開発に参加すること」または「翻訳に参加すること」などは、そこまで区別されていません。こうしたプロジェクトへの貢献活動は全て一様に「コントリビュートする」と呼ばれ、コントリビュートする人のことは広く「コントリビューター」と呼ばれます。

「オープンソース」のメリット、デメリット

ここまで「新型コロナ対策サイト」を題材に、「オープンソース」という形式でプロジェクトを進めることの実態について説明してきました。最後に、こうした形式でプロジェクトを進めることの主なメリットやデメリットを整理します。

わかりやすいメリットとして、オープンソース・プロジェクトの特性をうまく活かすことができると開発や改善のスピードが上がる、という点があります。クローズドで開発をする場合、全て自分たちで開発者を募り、改善サイクルを回す必要があります。対して、議論や開発をオープンにしてコミュニティをうまく広げていくことで、プロダクトの改善に関わる人を増やすことができます。

また、そのプロジェクトを所有する団体にとってのイメージアップにつながるという点もあります。特に東京都のような自治体にとっては「どれだけ透明性が高いか」という点が市民からの評価ポイントになったりします。その点で、あらゆる活動をオープンにしながら進めるオープンソース・プロジェクトとの相性が良かったということもありそうです。

一方、オープンソース・プロジェクトにはデメリットというか、難しいポイントもあります。一言でいうと、オープンソースという文化に理解がある人がオーナーシップを持って進めないとプロジェクト推進が難しいということです。コミュニティに開かれたプロジェクトはそれだけ関わる人が増えるので、適切にマネジメントすることも難しくなります。コミュニティの意見を尊重しながら、目的やビジョンをブレさせることなく最終的な意思決定をしていく。プロジェクトを管理するメンバーには、そんな難易度の高い判断が求められます。

東京都の「新型コロナ対策サイト」の場合は、オープンソース文化に深い理解があるであろう元ヤフー社長の宮坂学副知事が提案し、一般社団法人コード・フォー・ジャパンが実際のサイト制作を担当したようです。

この強力なタッグがあったからこそ、オープンソース・プロジェクトとしての成功例が実現したように見えます。闇雲に方法だけを真似しても、とても同じ成果を上げられるものではありません

オープンソースという発明

今回の記事は、「オープンソース」という言葉で表現される文化やプロジェクトの進め方について、その価値や難しさを伝えたくて書きました。

理解のハードルを下げるために「新型コロナ対策サイト」を題材にして紹介しましたが、他にも世界中のあらゆるソフトウェアがオープンソース・ソフトウェア(OSS)として公開されています。中には民間企業が自社の大切なソースコードの一部を世界に公開する例も多くあり、特にソフトウェア産業においてオープンソース・コミュニティはビジネスの上でも欠かせない存在になっています

また、オープンソース的なプロジェクトの進め方は、ソフトウェア開発以外にも転用できるものです。代表的な例として、みんな大好きWikipediaでも有志のコミュニティメンバーによって日々多くの記事が書かれています。何かを作り日々改善したいと思ったとき、それを誰がどう作るかというHowの話はとても重要です。本当に良いものを生み出し維持し続けるためのHowを考える上で、コミュニティをベースとしたオープンソース・プロジェクトの進め方というのは、大いに参考になると思います。

なお、個人や企業がオープンソースに関わるモチベーションなど、オープンソースについては書くべきテーマがまだまだあります。今回は長くなったので、それはまた別の機会に書きますね。

ここから先は

0字
同僚と飲むビール1杯分の金額で、飲み会で愚痴るよりもきっと仕事が楽しくなる。そんなコラムを月に3〜4本お届けする予定です。

【初月無料】デジタル時代の歩き方について考えたことを発信します。ソフトウェアの時代とは何か。エンジニアの頭の中はどうなっているのか。NoC…

サポートをいただけると、喜びドリブンで発信量が増えます!初月無料のマガジン『仕事を楽しくするデジタルリテラシー読本』もおすすめです!