BODIK ODM2(試験版)
BODIK ODMとBODIK API
自治体が公開したオープンデータをアプリケーションが簡単に使えるように「BODIK API」を開発し、公開しています。
BODIK APIは、次のような仕組みです。
- BODIK ODMに集約した自治体のオープンデータを対象にします。
- 自治体が公開したデータの中から「自治体標準オープンデータセット」のデータを探して、データベースに格納します。
- アプリケーションが使いやすいWebAPIでデータベースを検索し、結果を返します。
- 位置情報に基づく検索が可能です。
つまり、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を使ったサンプルアプリケーション」も公開していますので、お試しください。
ひらの