BODIK ODCSに登録されたデータをAPIに変換
BODIK ODCSは、自治体がオープンデータを公開するためのオープンデータ連携基盤を、無償で提供するクラウドサービスです。
九州地区と関西地区を中心に多くの自治体にご利用いただいています。
ODCSでは、「ファイル」としてデータを公開していただいていますが、そのままでは使い勝手に課題があります。
特にアプリが使う場合、対象となるデータを特定し、ファイルとして読み取る処理を各アプリで実施しなければいけません。自治体さんがファイルを変更したり、アプリが対象とする自治体を変更する場合は、データの特定、内容確認からやり直しになります。
このような場合、WEB-APIとしてデータが検索できるようになると、アプリから使いやすくなります。
そこで、ISITでは、ODCSに公開されているデータの中から、まずは、推奨データセット(デジタル庁が自治体のオープンデータの中で優先的に公開を推奨するデータ)に注目し、推奨データセットと思われるデータをAPIで利用できるようにするAPIサーバーの仕組み(WAPIと呼んでいます)を構築しています。
WAPI
さきほど「思われる」としたのは、ODCSのデータを眺めても、今のところ、「これが推奨データセットのデータです」と特定できる情報がありません。そのため対象となるデータセットを検索します。検索条件としては「データセットの名称」を使っています。
推奨データセット | 検索文字列 |
---|---|
AED設置箇所一覧 | AED |
介護サービス事業所一覧 | 介護サービス |
医療機関一覧 | 医療機関一覧 |
文化財一覧 | 文化財一覧 |
観光施設一覧 | 観光施設一覧 |
イベント一覧 | イベント一覧 |
公衆無線LANアクセスポイント一覧 | 公衆無線LAN |
公衆トイレ一覧 | 公衆トイレ一覧 |
消防水利施設一覧 | 消防水利施設一覧 |
指定緊急避難場所一覧 | 指定緊急避難場所 |
地域・年齢別人口 | 年齢別人口 |
公共施設一覧 | 公共施設一覧 |
子育て施設一覧 | 子育て施設一覧 |
例えば、推奨データセットの「公共施設一覧」の場合、データセットのタイトルに「公共施設一覧」という文字列が含まれるデータセットを探し、その中に「CSV」のリソースファイルがあったら、そのCSVファイルを推奨データセットの「公共施設一覧」とみなして読み取り、APIサーバーのデータベースに登録します。
また、「思われる」データなので、推奨データセットに定義された項目通りになっていないかもしれない。また、推奨データセットとして公開されたデータであっても、自治体ごとに事情があり、内容が異なることがあります。
- 推奨データセットの定義書どおりのCSVになっていない場合がある
- 自治体によっては、CSVに項目がない場合もあるし、項目があっても中身がブランクかもしれない
公開されたデータを利用するとき、このCSVの「項目のブレ」が問題となることがあります。そこで、私は割り切りました。
推奨データセットに定義された項目がCSVにない場合は、その項目はブランクとします。また、定義書にない項目がCSVにあった場合は、無視します。この割り切りにより、APIサーバには推奨データセットに揃えた形式でデータが登録され、データを取り出すときも推奨データセットの項目通りに取り出すことができるようになりました。
開発当初、「いろいろ問題はあるけど、とりあえず今の状態でAPI化してみよう」ということで「かってにAPI」と呼んでいました。
自治体ごとのAPI化状況は、こちらのサイトで確認することができます。
自治体別データセット一覧:https://wapi.bodik.jp/dataset
この「ODCSからAPIサーバーへのデータ登録」の仕組みは自動化されており、ODCSに新規登録・更新されたデータは夜間バッチでAPIサーバに取り込まれ、翌日にはAPIとして利用できるようになります。
課題
WAPIは、ODCSに公開されたデータを「かってに」API化しているので、データの精度・品質に課題があると認識しています。この課題解決のためには、自治体の皆さんのご協力が必要です。
データセットの特定
WAPIの仕組みでもお話しましたが、現在はデータセットのタイトルを文字列検索して対象のデータを探しています。そのため、想定外のCSVファイルが「見つかって」データベースに登録される場合があります。このようなことがないように、対象となるデータセットには専用のタグ付けを計画しています。推奨データセットとタグの関連は次のようになります。
推奨データセット | タグ |
---|---|
AED設置箇所一覧 | 推奨データセット, AED設置箇所 |
介護サービス事業所一覧 | 推奨データセット, 介護サービス事業所 |
医療機関一覧 | 推奨データセット, 医療機関 |
文化財一覧 | 推奨データセット, 文化財 |
観光施設一覧 | 推奨データセット, 観光施設 |
イベント一覧 | 推奨データセット, イベント |
公衆無線LANアクセスポイント一覧 | 推奨データセット, 公衆無線LAN |
公衆トイレ一覧 | 推奨データセット, 公衆トイレ |
消防水利施設一覧 | 推奨データセット, 消防水利施設 |
指定緊急避難場所一覧 | 推奨データセット, 指定緊急避難場所 |
地域・年齢別人口 | 推奨データセット, 地域・年齢別人口 |
公共施設一覧 | 推奨データセット, 公共施設 |
子育て施設一覧 | 推奨データセット, 子育て施設 |
CSVの精度向上
せっかくオープンデータとして公開していただいたデータですが、推奨データセットに定義されている項目と違っていると、APIとして利用するときに問題となる可能性があるので、推奨データセットに合わせていただく必要があります。
お手元のCSVと推奨データセットの定義書との違いは、弊所が公開している「バリデータ」を使うことで確認することができますので、お試しください。
バリデータ:https://utility.bodik.jp/validator
バリデータ以外にも、オープンデータの品質向上に役立つツール群(BODIK Utility)を公開していますので、ぜひご利用ください。ユーティリティのご紹介は別途計画します。
APIの利用
公開したAPIは次のページで試すことができます
APIを試す:https://wapi.bodik.jp/docs
API化することで、アプリケーションで使いやすくなります。
地図アプリ
推奨データセットの中の位置情報を持つデータを使って、地図上にマーカーを表示する地図アプリを作ってみました。
地図アプリ:https://wapi.bodik.jp/map
下の例では、ISITの近く(半径2000m)にあるAEDの設置箇所を検索した結果を地図にプロットしてみました。
左上のドロップダウンで、「データの種類」「表示するデータ件数」「検索する範囲」を切り替えることができます。また、スワイプ・スクロールで地図の表示場所を動かし、クリックするとその地点を中心に検索しますので、ご自分のお住まいの場所でお試しください。

統計情報
「地域・年齢別人口」を使って、人口ピラミッドを表示するサンプルも作ってみました。
人口ピラミッド:https://wapi.bodik.jp/chart_population

ひらの