オープンデータを一括管理できるツール dim の紹介をします。
dim(ディム)はオープンデータ全般に活用できるツールとして、
TIS株式会社がOSSとして、GitHub上で公開しているプロダクトになります。
GTFS形式のデータを扱う上でも効果的であると考えているため、
本Webサイト上で記事を投稿させていただくことになりました。
本記事の構成
まず初めに、dimとはどういったツールなのかを説明していきます。
その後、本Webページにて公開されている公共交通データを使いながら、
より具体的にdimの使い方について解説を進めていきます。
また、GTFS形式のデータを扱う上で効果的と考えられる点についても触れます。
最後に、現在dimへ実装を進めている
GTFS形式のデータに特化した新機能についてご紹介してきます。
どんな課題感にアプローチしたツールなのか?
dimについて解説する前に、オープンデータを利用する時のことを考えてみます。
ほとんどの場合、データを集める段階では、以下の手順を繰り返し行うと思います。
Google等で欲しいデータを検索
見つけたデータをブラウザからダウンロード
データを確認(データに不備がある場合や欲しいデータでない場合は1に戻る)
データを加工(文字コード変換・フォーマット変換など)
プロジェクトのディレクトリ、データベースへデータを投入
個人でとりあえず活用してみるという位であれば、特に管理は必要ないかと思います。
しかし、複数人開発、中長期開発、GitHub上でのOSS開発などを行う際に、
「どこからデータを取ってきたっけ?」、「どのデータにどんな前処理をしたっけ?」
「メンバーへのデータの共有が面倒」 となることがあります。
上記の課題を解決するツールがdimです!
オープンデータもパッケージマネージャ(apt, npm, pip など)と同じように、
npm install xxxxxのようにデータのインストールが可能で、
package.jsonやpackage-lock.jsonに、
諸元情報(取得元URL, 行った後処理 など)を管理できるdimを開発しました。
特徴① データ検索・取得・処理・記録の一連のプロセスに対応
対話型コマンドによって一連の動作を1つのコマンドで実行する機能にも対応しています。
特徴② 汎用的なデータ加工処理を搭載
オープンデータを利活用する際によく使う加工処理を搭載しています。
実行した加工処理は対象のデータに紐づけられ記録され再現することが可能です。
また、自作で作成したスクリプトをdimの記録対象として登録することも可能です。
特徴③ 既存のデータ諸元ファイルより1stepでデータ準備
すでに記録が行われたデータ諸元ファイルを使い、1stepでデータの準備が可能です。
データ諸元ファイルに基づいて自動で必要なファイルをダウンロード
それぞれのファイルに対応した加工処理を実行する
データ諸元ファイルをGitHubに公開するなどして、
オープンデータ本体をリポジトリに含まずとも必要な情報をシェアができます。
(package.jsonなどをGitHubに公開するのと同じ形です。)
こんな特徴も!
AI(GPT-3)を使い、データの加工処理/可視化処理などのコードを自動生成する機能
ご興味のある方はQiita記事をご覧いただければと思います。
dim × 公共交通オープンデータ
公共交通オープンデータを利活用する際にも有効と考えられる機能を紹介します。
データのインストール
「合同会社やんばる急行バス」のデータをインストールしてみます。
ダウンロードページのURLを指定し、-nで管理するための名前を指定します。
また加工処理としてzip解凍を指定しておきます。
dim install https://www.ottop.databed.org/transitfeed/1360003007856 -n "yanbaru_kyuko_bus -p unzip"
インストールすると以下のような形で
dim.jsonとdim-lock.jsonに諸元情報が記録されます。
dim.json
{
"fileVersion": "1.1",
"contents": [
{
"url": "https://www.ottop.databed.org/transitfeed/1360003007856",
"name": "yanbaru_kyuko_bus",
"catalogUrl": null,
"catalogResourceId": null,
"postProcesses": [
"unzip"
],
"headers": {}
}
]
}
dim-lock.json
{
"lockFileVersion": "1.1",
"contents": [
{
"name": "yanbaru_kyuko_bus",
"url": "https://www.ottop.databed.org/transitfeed/1360003007856",
"path": "./data_files/yanbaru_kyuko_bus/1360003007856",
"catalogUrl": null,
"catalogResourceId": null,
"lastModified": null,
"eTag": "W/\"741218ae289ffaa60e283e0c7c9c2382\"",
"lastDownloaded": "2024-03-18T00:47:18.674Z",
"integrity": "436f8440fcdc933b1ac889b7459138e7c80ae285",
"postProcesses": [
"unzip"
],
"headers": {}
}
]
}
また、このdim.jsonファイルを共有することで、
dim.jsonが格納されているファイル上でdim installのコマンドを入力するだけで
一発で記録されているデータが加工処理もされた状態でインストールされます。
ここが効果的!
1度dim.jsonファイルを作成してしまえば、
本サイトで公開されている51個のデータを一つずつインストール必要はなく、
dim installのコマンドを入力するだけで、
加工処理まで完了したデータを準備することが可能です。
もちろん、他のサイトから取得したデータもまとめて記録しておけます。
データの更新
データに更新があるかを確認
以下のコマンドで、dim.jsonに記録されたデータへ更新があったか確認できます。
dim verify
データが最新の場合
データに更新があった場合
更新があったデータをアップデート
管理しているファイルを以下のコマンドで、アップデートできます。
dim update
特定のファイルのみアップデートすることもできます。
dim update yanbaru_kyuko_bus
ここが効果的!
公共交通オープンデータはダイヤ改正なども含め、データの更新が頻繁かと思います。
dim verifyを使えば、1つずつ更新を確認する必要がなく、
どのデータに更新があったかが一目でわかります。
さらにdim updateを使うことで一発で、
最新データのインストールと加工処理を実行することができます。
今後の開発について
今後、TIS株式会社では、
今回紹介したdimにGTFS形式データへ特化した機能を実装しようとしています。
どのような機能を考えているか?
以下の機能の実装を検討しています。
更新差分を一目見てわかる形で出力する機能
時刻表で可視化
路線図で可視化 など
管理しているGTFS形式データの有効期限を確認する機能
管理しているGTFS形式データのバリデーション
2つ以上のGTFS形式データをマージする機能
更新差分を一目見てわかる形で出力する機能の実装を行なっています。
GTFS形式のデータが更新された際にどこがどう変化したのか
diffを使っても分かりずらいという課題感があると考えています。
この課題を解決するために、
時刻表に関連するデータであれば時刻表の形
路線図に関連するデータであれば路線図の形
というように更新差分を可視化して分かりやすくできないかと実装を進めております。
現状、お見せできるレベルでの実装は進んでいないのですが、
続報をお待ちいただければと思います。
まとめ
オープンデータを一括管理することができるツール「dim」をご紹介しました。
dimはGitHubにOSSとして公開されています!
「もっとこうして欲しい!」や「こんな機能があれば!」のような
Issueもコントリビュートも大歓迎です!
↓是非一度、覗いてみてください。
今回ご紹介した機能の他にも様々な機能がありますので、
公共交通オープンデータを扱う上でも非常に効果的です!
データの諸元情報(取得元、施した加工処理 など)を記録しておける
dim.jsonを共有し、dim installを実行するだけで、データの準備が完了する
dim verifyを実行することで更新のあったデータがどれかがすぐにわかる
データに更新があれば、dim updateを実行し、データの更新と加工処理を行える
GTFS形式のデータに特化した機能を開発中です!
更新差分を一目見てわかる形で出力する機能の実装を進めています
今後、進捗があり次第、記事を投稿させていただく予定ですので、
引き続き、楽しみにお待ちいただけますと嬉しいです。
デジタル社会サービス企画ユニット デジタル社会サービス企画部
宮岡 時生