データ形式の選び方
「とりあえずCSVかJSONで」になりがちですが、使いどころで向き不向きがあります。交換・保存・分析の観点で主要フォーマットをざっくり整理します。
表形式がほしいとき
行列構造で扱うなら、テキスト系か列指向バイナリかを用途で選びます。
CSV / TSV
- 人間が読めるテキスト。CSVはカンマ区切り、TSVはタブ区切りで構造が単純。
- 欠点はエスケープや改行の扱いの曖昧さ。TSVはカンマを含む値を扱いやすいが、タブを含む値は注意。
- 一時的な受け渡しやスプレッドシート連携に便利。スキーマは別途共有する必要がある。
Parquet / Arrow
- 列指向のバイナリ。圧縮・エンコードにより分析処理が高速で、型情報を持てる。
- ビッグデータ処理(Spark/Presto/BigQuery互換など)で標準的。Arrowはメモリ表現にも使われる。
- 人間には読みにくいが、スキーマとセットで長期保存や分析に向く。
階層や柔軟な構造がほしいとき
ネストや配列を表現したいならJSON系が扱いやすいです。
JSON / JSONL
- キーと値で自由にネストでき、APIや設定で広く使われる。
- JSONL(1行1オブジェクト)はストリーミング処理や差分取得に向く。
- 型は緩いので、スキーマ定義(JSON Schemaなど)を併用すると破壊的変更に気づきやすい。
用途別のざっくり指針
読みやすさ、サイズ、速度、ツール対応のバランスで選びます。
おすすめの使い分け
- 人が直接見る・編集する:TSV/CSV(ただしエスケープに注意)
- APIや設定・ログ:JSON/JSONL(スキーマを別途管理)
- 分析・大規模処理:Parquet/Arrowなど列指向バイナリ(スキーマ込みで保存)