BODIK ODM2(試験版)

BODIK ODMとBODIK API

自治体が公開したオープンデータをアプリケーションが簡単に使えるように「BODIK API」を開発し、公開しています。

BODIK APIは、次のような仕組みです。

  1. BODIK ODMに集約した自治体のオープンデータを対象にします。
  2. 自治体が公開したデータの中から「自治体標準オープンデータセット」のデータを探して、データベースに格納します。
  3. アプリケーションが使いやすいWebAPIでデータベースを検索し、結果を返します。
  4. 位置情報に基づく検索が可能です。

つまり、BODIK APIは「BODIK ODMに集約した自治体のデータをWebAPIで検索できるシステム」です。
2023年10月時点で、BODIK ODMには約360の自治体のデータが集約されています。日本には1,788の自治体があるのに、BODIK ODMでは日本の自治体の約20%しかカバーできていない。いずれは全国制覇!が「BODIKの野望」ですが、先は長い・・・・

BODIK APIが日本中で利用できるようにするには、BODIK ODMに日本中の自治体のオープンデータを集める必要があります。
これまでは、BODIK ODMに取り込めるように「自治体がCKANを使ってオープンデータを公開する」のを待っている状態でしたが、状況はなかなか改善されません。

BODIK ODMにより多くの自治体のオープンデータを取り込みたい。「待つ」だけではなく、なにかできることはないでしょうか?

ODMに集約する自治体を増やすには?

BODIK ODMにより多くの自治体のオープンデータを集めるためにできることを検討しました。

CKANで公開している自治体を網羅する

自治体のオープンデータ取組状況は、デジタル庁が発表しています。
https://www.digital.go.jp/resources/data_local_governments

この情報を参考にして、自治体のオープンデータ公開サイトを確認し、CKANでオープンデータを公開されていたら、BODIK ODMに登録する、という処理が必要です。人間による「公開サイトの確認」が必要なので、この作業を完全に自動化することは難しいのですが、できるだけシステム化して漏れをなくすようにします。

CKANではないツールで公開している自治体を取り込む

日本ではCKANではないツールを使って、オープンデータを公開している自治体もあります。有名なところでは、北海道が使っている「shirasagi」、中国地方の都道府県が使っている、shirasagiから派生した「dataeye」でしょうか?

shirasagi系は、CKAN APIと互換性のあるAPIが使えるので、このshirasagi-APIを使って、プログラムによるハーベストができます。

CMSで公開している自治体を取り込む

多くの自治体が、自治体のWebサイト(仕組みとしてはCMSと呼びます)にオープンデータを公開していますが、自治体ごとにWebサイトの構成が違います。これまでは、自治体がCKANを使ってオープンデータを公開してくれるまで待つしかなかった。

そんな中、いくつかの自治体から「自治体のWebサイトからBODIK ODCSにデータを移行したい」というお話をいただき、「スクレイプ」という技術を使って自治体のCMSから情報を取り出して、BODIK ODCSにデータを移行するという、各自治体専用の移行プログラムを開発して対応しました。
いくつかの移行プログラムを開発した経験から、次のことがわかりました。

  • 通常のCMSでは、a(アンカー)タグに「リソースファイルのリンク情報」が埋め込まれている。
  • このリンク情報からは、「リソースファイルへのパス」と「リソースの名前」というリソース情報を取得できる。
  • リソース情報が取得できれば、CKANを構成する2つの情報(「データセット」と「リソース」)のうち、「リソース」を構成することができる。
  • 1データセット1リソースならば、CKANにハーベストできる。
  • ほとんどのCMSは、階層的な構造になっており、階層構造を特定すると必要なaタグにたどり着くことができる。

この想定に基づき、CMSから情報を取り出してハーベストする「CMSハーベスト」機能を開発しました。

前提作業として、各自治体のCMSに合わせて、aタグを探す手順をスクリプトに記述します。残念ながら、この「aタグを探す手順の解析」は自動化できず、人間がCMSを解析してスクリプトにする必要あります。

後は、そのスクリプトを読みながらCMSをスクレイプする汎用システムを構築することで、CMSからのハーベストを自動化することができます。
このCMSハーベストを使っても処理できない自治体もありますが、かなりの自治体のCMSからハーベストすることができます。特に公開するデータ数の少ない自治体では有効な手段だと感じました。

新しいBODIK ODM(ODM2)の開発

これらの新しい手法を取り入れた新しい「BODIK ODM2(試験版)」を開発中です。
※2023-12-08 試験版だったODM2を「BODIK ODM」として公開しました。

専用の管理サーバー(ODM管理サーバーと呼びます)を構築し、ODM2のハーベスト機能を管理します。

  • ODM管理サーバーで全国の自治体のオープンデータ公開状況を管理します。
    • 総務省の自治体一覧を反映する。
    • デジタル庁のオープンデータ公開情報を取り込む。
  • CKANで公開する自治体のハーベスト情報をBODIK ODM2にセットします。
  • CKAN以外の手法で公開している自治体のデータをプログラムでBODIK ODM2にハーベストします。

2023年10月時点で、ODM2に1,050の自治体のオープンデータを集約することができています。日本の自治体数は1,788ですから、日本の約60%の自治体のオープンデータを集めることができています。全国制覇の目標にむけて、折返し地点を過ぎたところでしょうか?まだまだ遠いですが、ゴールが見えてきましたね。

ここで、想定外の事態が発生しました。ODMやODM2はCKANを使っています。ODM2には1,050の自治体を集めているのですが、CKANで自治体を選択する「組織」ページを表示すると、自治体数が1,000より増えません。ODM2をCKAN APIで確認すると、確かに1,050の自治体が登録されています。ここで気づきました。CKAN APIを使って自治体一覧を取得するとき、普通にAPIを呼ぶと最大1,000件しか返ってこない。それ以上を取得するにはページングする必要があります。
CKANの組織画面は、1,000以上の組織を作成するケースに対応していないようです。CKANはオープンソースですから、CKANのソースを修正して対応する予定です。

2023-11-07追記:CKANの設定を変更して、組織検索の最大件数を2,000に変更しました。組織ページの表示も改善されました。

これらのバグ対応を含め、検証が完了したら、BODIK ODM2をBODIK ODMとして公開します。

ODM2からAPI=BODIK API2

ODM2に集めたデータをAPIにすれば、APIを使える自治体が増えます。そして、いずれは全国の自治体のデータをBODIK APIで使えるようにしたい。これも「BODIKの野望」ですね。

しかし、ODM2に集めたデータをすべてAPIにすることはできません。CKANではないデータソースからも取り込まれているので、「自治体標準オープンデータセット」に該当するデータファイルを特定する仕組みを更に進化させる必要があります。今後の課題です。

今の状態で、ODM2に集められたデータをAPIにした「BODIK API2(試験版)」も開発し、公開しています。「BODIK API2を使ったサンプルアプリケーション」も公開していますので、お試しください。

ひらの