0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】データ交換フォーマット選定比較 JSON・YAML・XML から Protobuf・Parquet まで

Posted at

はじめに

API 設計、CI/CD、IoT、ビッグデータ──システム開発をしていると “データをどうやってやり取りするか” という問題が必ず出てきます。

ところが 「結局どのフォーマットを選べばいいの?」 は意外と忘れがち。そこで、業務でよく登場する代表的フォーマットを 可読性・スキーマ管理・ライブラリ対応・用途 の観点でまとめました。


1. 主要フォーマット早見表

フォーマット カテゴリ 可読性 スキーマ管理 主な特徴 代表ライブラリ/言語 想定ユースケース
YAML 階層テキスト ★★★★★ JSON Schema / YAML Schema インデントで直感的。コメントOK。 PyYAML / gopkg.in/yaml.v2 K8s マニフェスト
GitHub Actions
XML 階層テキスト ★★★☆☆ XSD / RELAX NG タグ+属性。名前空間◎。 Java JAXB / .NET System.Xml SOAP / レガシー連携
JSON 階層テキスト ★★★★☆ JSON Schema 軽量 & パース高速。コメント×。 JS 標準 / Python json REST API / Front 設定
CSV / TSV フラットテーブル ★★★★☆ なし 表形式に特化。 Python csv / Pandas データ入出力 / ETL
INI 設定ファイル ★★★★☆ なし [section] + key=value Python configparser 軽量アプリ設定
TOML 設定ファイル ★★★★★ 型付き Rust 標準。配列・日付◎。 toml (Py) / Cargo Rust プロジェクト設定
Protocol Buffers バイナリ (IDL) ★☆☆☆☆ .proto gRPC 標準。超コンパクト。 多言語 (protoc) マイクロサービス RPC
Apache Avro バイナリ (スキーマ込み) ★☆☆☆☆ Avro Schema スキーマ進化に強い。 fastavro / Kafka ストリーム処理
MessagePack バイナリ (スキーマレス) ★☆☆☆☆ なし JSON のバイナリ版。 msgpack (Py/JS) モバイル / IoT
CBOR バイナリ (スキーマレス) ★☆☆☆☆ なし IoT に最適化。 cbor2 / libcbor 組み込み
Parquet 列指向ストレージ ☆☆☆☆☆ メタデータ 列圧縮。分析特化。 PyArrow / Spark ビッグデータ分析
EDIFACT/X12 EDI 標準 ☆☆☆☆☆ 標準定義 企業間取引。 Smooks 等 受発注・請求書
RDF / Turtle グラフデータ ★★☆☆☆ OWL / SHACL トリプルで関係を表現。 rdflib / Jena ナレッジグラフ

⭐️ 可読性スコア: ★★★★★ = 人間が楽に読める / ☆☆☆☆☆ = 基本バイナリ


2. 選定フローチャート(ライト版)

  1. 手動でしょっちゅう編集する?
    Yes : YAML / TOML / INI
    No → 2 へ

  2. 低レイテンシ or 帯域制限がキツい?
    Yes : Protocol Buffers / MessagePack / CBOR
    No → 3 へ

  3. 大量データを分析基盤で扱う?
    Yes : Parquet / ORC
    No → 4 へ

  4. Web API?
    Yes : JSON(一択と言っていい)
    No → XML か EDI など業界標準に合わせる


3. 具体的なシナリオ別おすすめ

シナリオ ベストチョイス 理由
マイクロサービス間 RPC Protocol Buffers + gRPC スキーマ安全 & 転送コスト最小
Kubernetes マニフェスト管理 YAML コメント・アンカーで DRY
フロント〜バックの JSON API JSON + OpenAPI JavaScript との親和性
Raspberry Pi ↔ クラウド CBOR / MessagePack 低帯域で省電力
Hive/Spark 解析用ログ Parquet 列圧縮&スキーマ進化
EDI 受発注 EDIFACT / X12 業界標準プロトコル

4. スキーマ管理ベストプラクティス

  • JSONAJVjsonschema でバリデーション
  • XMLXSD を CI に組み込み自動検証
  • Protobuf / Avro → スキーマレジストリ(Confluent など)でバージョン管理
  • YAML も実は JSON Schema で検証可能(yaml-language-server が便利)

5. まとめ

  • 人が読む設定 : YAML / TOML
  • 機械間通信 : JSON or バイナリ系
  • データウェアハウス : Parquet / ORC
  • 迷ったら 「誰が読み書きする?」「どの言語で処理する?」 をまず考える
  • スキーマ管理テスト自動化 を忘れずに!

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?