福野泰介の一日一創 - create every day

CSVが熱い!Simple Data Format(SDF)とは?

2013/06/06
#opendata 

LODIの深見さんによるイギリスで開催された「W3C/ODI/OKF共催Workshop “Open Data on the Web”」のレポートに興味深い記述がありました。SDF(= Simple Data Format)です。

こちらの仕様「Simple Data Format (SDF) — Open Data Protocols - Simple Open Standards for Open Data」をまとめると・・・
- SDFは表形式のデータを表すフォーマット
- CSVをデータに使い、JSONをデータの定義に使う
と、非常にシンプルです。

また、データの定義方法も下記のようになかなか分かりやすいです(一部ちゃんと見てないので?付きですが)
- string: 文字列
- number: 数値(少数含む)
- integer: 整数
- date: 日付(時間含まず)ISO6801フォーマット(YYYY-MM-DD)
- time: 時間
- datetime: 日時、UTCで記述、ISO8601フォーマット(YYYY-MM-DDThh:mm:ssZ)
- boolean: 二値 (1/0 または true/false)
- binary: バイナリデータ(base64)
- object: JSONエンコードしたオブジェクト
- geopoint: 緯度経度({ lon: ..., lat: ... } / [lon,lat] / "lon, lat" のいずれかを使う
- geojson: の形式
- array: 配列(JSON?)
- any: その他の形式(?)
JSON Table Schema — Open Data Protocols - Simple Open Standards for Open Dataより)

今後、いろいろと使われていく中で、スキーマにURLを書いてよりデータ形式をはっきりさせたり、言語設定ができて、国際対応できたりするようになっていくことでしょう。

ひとまず、CSVにこのように日が当たったのは非常に良いことです。Excelなどの表計算ソフトからも簡単に書きだし、読み込みができ、大量のデータもコンパクトに転送することができます。

世界標準にしようとしているこのSDFに合わせるために下記をちょっとだけ気にして作成すると、より多くの人に使ってもらえると思います。
- ファイル名はアルファベットを使い、拡張子は小文字で".csv"とする
- 文字コードを"UTF-8"として保存する(SJISは日本語圏以外では化けてしまいます)
- ヘッダの項目名を重複させない
- ヘッダの項目名はアルファベットを使いスペースではなく . - _ で区切る
- 項目内に改行を含めない
- 改行は\r\nを使う(\nだけでもいいことにはなってますが、Windowsでも扱いやすいように)

試しに、今週末福井で開催される青空マーケットイベント「マルシェワンダーランド」のデータをSDFにしてみました。
- http://fukuno.jig.jp/2013/data/fukui-marche2013/datapackage.json
- http://fukuno.jig.jp/2013/data/fukui-marche2013/fukui-marche2013.csv
CSVファイル+ちょっと説明を書くだけなので簡単です。
SDF対応にする前のバージョンですが、データを使った表示例、マルシェワンダーランドマップ

手軽なCSVによるオープンデータはオススメです!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像