BODIK APIは、公開されたオープンデータをデータベースに登録し、APIで検索できるようにする仕組みです。
現在、2つのAPIサーバーが稼働しています。
BODIK WAPI
BODIK ODMに集約した自治体のオープンデータの中から「自治体標準オープンデータセット」のデータをデータベースに登録しています。アプリケーションからはWebAPIで利用することができます。
BODIK FAPI
BODIK WAPIと同じ仕組みで、BODIK ODMに集約した自治体の「自治体標準オープンデータセット」のデータを「FIWARE」に登録しています。WebAPIのほかに、FIWAREの連携機能でも利用することができます。
どちらもデジタル庁が公開した「自治体標準オープンデータセット」に注目し、自治体が公開した自治体標準オープンデータセットのデータファイルをデータベースに登録し、WebAPIで利用できるようにしています。
それでは「自治体標準オープンデータセット」ではないデータをAPIで利用することはできないのでしょうか?
今回は、BODIK APIの「MyAPI(試行)」についてご紹介します。
MyAPI(試行)
MyAPIは、「任意のCSVファイルを使って、独自のAPIを作成する」仕組みとなります。
シビックテックや開発者の方は、このツールを使って次のようなことができます。
- 自治体が公開しているデータをAPIでアクセスできるようにして課題解決のアプリを実証したい。
- 手元にあるCSVをAPIにすればアプリで簡単に利用できることを確認したい。
自治体の担当者の場合、次のような使い方が考えられます。
- 自治体標準オープンデータセットではないが、BODIK APIの「自治体固有のAPI」として利用したいデータがある。試しにAPIにして確認したい。
MyAPIを使う場合、いくつか注意する点があります。
- 登録したAPIには有効期限があります。
- 有効期限は「14日」に設定されています(調整中)。
- 有効期限を過ぎると、APIとデータは自動的に削除されます。
- 継続して利用したい場合は、再度CSVを登録してください。
- APIは名前で区別します。同じ名前のAPIを登録すると、上書きされます。
- MyAPIで作成したAPIは、接頭語として「trial_」が付きます。
- 他者との重複・衝突を避けるために、他と区別するような名前を付けてください。
- MyAPIで登録したAPIに別のCSVのデータを「追加」することはできません。
- 同じ名前でMyAPIを登録すると、内容が置き換わります。(古いデータは削除されます)
- MyAPIで登録したAPIを利用するときは「POSTメソッド」で呼び出します。
- 後述する「APIMAKER」の「確認」にある「地図表示」「検索」で利用するアプリを参考にしてください。
MyAPIを登録するために、APIMAKERというアプリを用意しています。
APIMAKER(試作版)
APIMAKERのURL:https://wapi.bodik.jp/apimaker
APIMAKERを起動すると、次のような画面が表示されます。
APIMAKERの使い方
- CSVを指定する方法は2つあります
- URLを指定する
- 例えば、ODCSに登録されているリソースのリンクをコピーし、「ファイルのURLを指定する」に貼り付ける
- 「URL」ボタンを押す
- ローカルのファイルを指定する
- 「CSVファイル」ボタンを押す
- ローカルのCSVファイルを選択する
- URLを指定する
- 指定したCSVファイルを表形式で表示します
- CSVの項目名と英字表記の関係を確認し、抜けている部分を指定します
- 「確認」ボタンを押して、正しく設定できていることを確認します
- インデックスの名前を入力します
- 「登録」ボタンを押して、インデックスの作成とデータ登録を実行します
- 「地図表示」あるいは「検索」ボタンを押して、登録したAPIを確認できます
手持ちのCSVをAPIにする実行例
MyAPIを作成する
1.手元のCSVを開きます。
今回はODCSの福岡市のデータセットから「地下鉄位置情報(福岡市営地下鉄)」に登録されている「福岡市営地下鉄の駅」というCSVファイルを使います。
ファイルを指定すると、CSVの内容が表形式で表示されます。表の右側では、CSVの項目名とその英字表記、データ型を指定します。
このデータファイルは、すべての項目が項目辞書にあったようで、英字表記とデータ型が自動的に設定されました。
辞書にない項目がある場合、ユーザーが指定する必要があります。
2.「確認」ボタンを押します。
すべての項目に対して、項目の英字表記とデータ型が指定されていることを確認します。
「問題ありません」が表示されたらOKです。
3.インデックス名を指定し、「登録」ボタンを押します
今回はインデックス名を「fukuoka_subway」としてみました。
システムのAPIとの重複を避けるため、インデックス名が自動的に「trial_fukuoka_subway」に変更されました。
問題なく指定したCSVファイルの内容がAPIに登録されました。APIの名前(apiname)は「trial_fukuoka_subway」になります。
MyAPIを確認する
5.登録されたAPIを地図で確認してみよう
位置情報があるデータは、APIMAKERの「地図表示」ボタンを押して、マップで確認できます。
POSTメソッド版の「API地図表示」が表示されます。
初期状態では、指定されたAPIに登録されているデータの中から10件を検索し、地図上に表示します。右側にはAPI検索に使用した情報を表示します。
6.任意の地点をクリックしてみましょう
今回は「博多駅」をクリックしてみました。
右側の「WebAPIパラメータ」でどのようなパラメータを指定してAPIを実行したのかを確認できます。
{
"select_type": "geometry", # 緯度と経度を返す
"maxResults": 10, # 最大100件返す
"distance": 2000, # 距離は2000m
"lat": 33.58945533558725, # 中心点の緯度を指定
"lon": 130.4205894470215 # 中心点の経度を指定
}
APIの実行結果は「WebAPI応答」に示したJSONで入手できます。このJSONを解析し、みつかった対象にマーカーを立てます。
7.登録したAPIを検索してみよう
APIMAKERで、「検索」ボタンを押すと、POSTメソッド版の「API検索」が表示されます。
8.条件を指定して検索してみよう
試しに「address」に「早良区」と入力して、「検索」ボタンを押してみよう。
「address」に「早良区」を含むデータが検索されます。
右側の「WebAPIパラメータ」でどのようにパラメータを指定すればいいのかを確認できます。
{
"select_type": "geometry", # 緯度と経度を返す
"maxResults": 100, # 最大100件返す
"address": "早良区" # addressに「早良区」を含むデータを検索する
}