公共交通オープデータセンターとは
公共交通オープデータ協議会に参画している事業者が持つデータを集約し一般に公開しているサービスです。
鉄道をはじめ、バス、飛行機、船舶などの静的・動的データを利用することができます。
東京都交通局のAPIを使ってみよう
事前準備物
- 公共交通オープデータセンターの開発者登録(登録はこちら)
※ユーザー登録の完了まで最長2営業日ほどかかりますが、1日後くらいには承認のメールが届き使えるようになります。 - Docker環境、docker-compose環境
アクセストークンの取得方法
① 開発者サイトにアクセスする
② アカウント欄からアクセストークンの確認・追加のページ(添付画像の赤枠)を開く
③ デフォルトアプリケーション欄のアクセストークン(添付画像の黒帯部分)をコピペ
環境構築
① GTFS簡易ツールをクローン
$ git clone https://github.com/Kaas59/GTFS-Python
② アクセストークンを環境変数に設定
# 作業ディレクトリに入る
$ cd GTFS-Python
# .envファイルを作成
$ cp .env.sample .env
# .envファイルにアクセストークンをペースト
$ nano .env
token=ここにアクセストークンをペースト
② Dockerイメージをビルド
# makeコマンド環境がある人
$ make build
# makeコマンド環境が無い人
$ docker-compose build
③ コンテナを起動
# makeコマンド環境がある人
$ make up
# makeコマンド環境が無い人
$ docker-compose up
④ コンテナにアクセス
# makeコマンド環境がある人
$ make exec
# makeコマンド環境が無い人
$ docker-compose exec python3 bash
使ってみる
今回使用するデータは「東京都交通局のバスのロケーション情報」です。
このデータは、GTFS-RTという形式で提供されている。また、データのフォーマットはGoogleが定めた「Protocol Buffers」という形式でバイナリ化されて送られてくる。そのため、そのままでは人間が読み取ることはできないのでデコーディングし理解可能な状態にする必要がある。
実際にロケーション情報を取得してみる
# makeコマンド環境がある人
$ make gtfs
# makeコマンド環境が無い人
$ python3 main.py
最後に
今回利用した公共交通オープデータセンターの他にも様々なデータを提供しているところがありますのでぜひ使ってみてください。
おまけ「今回使用したProtocol Buffersについて」
Protocol BuffersはAPIを通してデータを送信する前に特定の形式にそってエンコードされており、通常その形式がわからないとデコーディングすることはかなり困難である。しかし、公共交通オープデータセンター内でその詳細な形式は公開されていない。だが、GTFS-JPとい団体と国土交通省により日本での形式のサンプル(Googleが配布しているものと同じ)が配布されており、そちらを利用することでデコーディングを行うことが出来ます。