ゆるテックノート

データ形式の選び方

「とりあえず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など列指向バイナリ(スキーマ込みで保存)