Chienomi

毒性オープンデータ症候群

ネットトピックス

オープンデータとは一体

オープンデータは基本的には国政から出た言葉のようだ。 どうりであまり聞き慣れないと思った。

私の周囲のFacebookerたちがやたら繰り返すので何事かと思ったのだけど、まぁ、予想通りというか。

基本的にというのはどういうことかというと、そもそもの話をすれば情報に対する非占有というハッカー的な文化を別のところがかっさらって形式化したものを日本政府が流用した、というような感じで、もはや理念はどこへやらである。

だが、この話はそう簡単ではない。

「オープンデータ」の概念と価値

そもそもデータというのはなんらかの形で発生するか、蒐集されるものである。 この場合、特に蒐集されたデータが重要になる。

エンジニアは必要があればデータを用意する。 典型的な例でいえば都道府県の47選択肢があるが、あれは手打ちすることが圧倒的に多い。 手打ちがそこまで難しいとは言わないが、ミスが発生する可能性とかかる時間を考えるとしないでいいのであれば避けたい。だから近年はコピペで済ませる人も増えている(そして同じ罠にはまる人も増えている)。

この場合は47要素しかデータがないが、もっと複雑な場合もある。 場合によっては専門的なデータも、一般に有用な場合も多い。

行政はそのようなデータを非常に多く持っている。管理する必要性があって持っているのだが、そのデータを蒐集することで賃金が発生している人がいると考えて良い。 であれば、そのようなデータを民間において再度用意することは一種の車輪の再発明になる。そもそも、行政でなければ整えられないデータというのもある。

だから、「使えるか」「使いやすいか」ということとは関係なく、これらのデータを外部秘とせず共有するということは単純に価値がある。

この観点からいえばウェブというのは原則オープンデータである。 近年はウェブにおいてその利用を制限するのが当たり前になっているが、これはウェブの原理原則に反している。

オープンデータという「形式」の話はどちらかといえばウェブを中心にして考えられているらしい。 それもどうかとは思うが。

情報が入手可能かどうかという点は断絶に等しい差があるので、単純に(データの形式によらず)内部で持っているデータを公開し、その利用に制限をかけないだけでもオープンデータとしての価値があると考えて良い。 というより、ハッカーであるならばそこまでくれば如何様にでも、という話ではあるのだ。

データ形式とエンジニアの怠慢

ところが、なぜか「そのまま使えるデータでなければけしからん」という人が多いらしい。

ちょっとそれは実力と創意工夫の欠如に対する吐き気がするほどの怠慢だと思う。

たとえばこのモーメントのお話。

要は、

  1. 2016年祝日名称
  2. 2016年祝日月日
  3. 2017年祝日名称
  4. 2017年祝日月日
  5. 2018年祝日名称
  6. 2018年祝日月日

という6カラムデータになっているものに対して

祝日名称,月日

という2カラムデータにしろ、ということなのだが、 間違っていると断言できる。 いう その2カラムデータだと、祝日が廃止、あるいは追加になった場合、あるいは名称も月日も異なった場合の対応関係を確定することが不可能になる。 それは彼の用途においてはそのように用意されたデータが使いやすいのかもしれないが、それは対応関係という情報の欠損を生んでいる。 求めているケースではそれでも良いのかもしれないが、全体で見ればその欠損したデータを必要とするケースはあるわけで、配布データを欠損させることを求めるのはおかしい。

さらにいえば、確かにこのデータは恐らくExcelで読むことを前提としたゴミデータが入っている。 だが、データ解析においてノイズが乗るのは 前提の想定であり 、この場合単純に「第二カラムが所定の形式でない行を捨てる」程度の処理でクリーンアップできる。「収集したデータにノイズがなくクリーンアップの必要はない」という考えは根本的に間違っており、例え結果的にクリーンアップが必要なかったとしても、それを期待してはならない。

この程度のことができないのはエンジニアではないし、ましてやプロなどとは到底呼べない。 それでいながらこれに対して罵詈雑言を吐いた者は猛省すべきことだと思う。 だってこの程度であればデータの確認から整形まで30秒もあれば済ませられるし、整形はRubyワンライナーでいける。

$ nkf -Lu -w holiday.csv | ruby -rcsv -e 'CSV.new(ARGF, col_sep: ",", row_sep: "\n"').each {|i| i[1] =~ %r:\d+/\d+/\d+: ? print i : next }

「ダサい」のと「何を提供するか」という問題は別

そもそもオープンデータの意義としては、「内部的に使用しているデータを外部にも利用できるようにする」ことであり、これは「内部データがダサければ、ダサいものが白日のもとにさらさられる」という話ではある。 Mimir YokohamaにもInflatonにも、その気になれば外部に公開できないことはないデータというのもなくはないが、基本的にはRuby Marshal形式になっていたりする。Rubyを使う人からすれば「coolだ」と思ってもらえるだろうが、Rubyistでない人たちからすれば非難轟々だろう。 だが、私が作っているシステムはRubyで動いているわけで、Ruby Marshal形式であることは至って合理的だ。

そして、Excelを使っている人(組織)のデータであればExcelらしいデータになるのはやむを得ないと言える。

ここにあるのは、「データが入手可能で、利用可能である」という事実である。 「そこにあるものをいかに使うか」というのは技量と才覚によるものであり、どうしたって差はつく。 それを考えるべきものであり、データ側が自分の事情に合わせるべきであるというのはあまりに自己中心的思考だ。

私だって、公開されたExcelらしさ満点のCSVは「だっさいなぁ」と思う。吐き気がするくらいだ。

例えばInflaton Plutoでは日本郵便が提供している郵便番号CSVを使っているが、これは住所が3パートになっている(分けられていること自体は良いことだ)のだが、「3パートの分け方が一定でない」上に、「一番うしろのパートには “(以下にないもの)” だの “一円” だのと不規則に書いてある」という地獄のデータになっている。

これは祝日データベースと違い情報の欠損があり、さすがにそのようなケースでは私としても悪態をつきたくなる。 それでも、データとして存在するのとしないのでは大違い、できる範囲でカバーするのもハッカーでありエンジニアだ。

データを公開する、という行為に対して「使いやすいようにデータを加工して出せ」と言うのは、「公開をポリシーや情報管理上の問題」という範囲を越えて「データ形式やデータ内容にもさらなる労力を避け」と要求しているのであり、「そんなコストを払うくらいなら公開しない」という判断がなされたとしてもなんの不思議もない。をする。 実際、Mimir YokohamaにしてもInflatonにしても、直接営業的に関係ないもので外部にリソースを利用可能にするためにドキュメントを書くだけでも大変(数時間かかっているようなものも少なくない)なのに、さらにデータを整形しろ、要求するデータを出せなどと言われたら間違いなく「公開しない」という選択をする。

私にとっても、「ダサいデータはやめろ、有用なデータにせよ」とは思うが、それは提供するデータに対する話ではなくて、「Excelでデータを作るなんてうんざりだ」という話だ。 データ形式としては普通にxslxでデータが出てくることもあることを思えば遥かにマシでもある。

一方、それに対して自分の都合でflamingする人はもっとずっと吐き気のする行為であるということに気づくべきだと思う。

そして、最後にエンジニアではなく、オープンデータという言葉に酔いしれている人たちにも含めて告げよう。 「オープンデータは手持ちのデータを公開し、利用可能にするという以上の意味はない。ほしいデータがあるとか、そのまま使えるなどという幻想を抱くのは無邪気な愚者である」と。