はじめに
この記事はプログラミング初心者がモチベーションを保つために学んだことなどをひたすらに書いていくものです。
多分qiitaを見ている多くの人は知っていることかもしれませんが温かい目で見てくださると何よりです。
データ形式とは何か?用途別に選び方を整理
アプリケーションや IoT、Web API、分散処理などを扱っていると
JSON / CSV / XML / Avro / MessagePack / ProtoBuf など
さまざまなフォーマットが登場します。
しかし「結局どれを使えばいいの?」という疑問はよく起きます。
そこでデータ形式の基本と、用途別の選び方を簡単に調べてみました。
データ形式とは何か?
データ形式(Data Format)とは、
データを “どう表現し、どう保存し、どう送るか” を決めるルール
のことです。
例:
- 人間が読むための形式(JSON, XML, YAML)
- 機械が効率よく処理する形式(MessagePack, CBOR, Avro, ProtoBuf)
- 表形式のデータ(CSV, Parquet)
- ビッグデータ用のカラム型形式(Parquet, ORC)
これらの形式は、用途ごとに 速度・容量・可読性・スキーマ管理 のバランスが違います。
主なデータ形式と特徴まとめ
1. JSON(テキスト)
- 読みやすい・書きやすい
- Web / API の標準
- ただし サイズが大きい・処理が遅い
2. CSV(テキスト)
- 行と列だけの単純な表形式
- Excel や DB と相性が良い
- 型情報が無く、構造が弱い
3. XML(テキスト)
- 古くからある構造化表現
- スキーマ(XSD)による厳密管理も可能
- 冗長で重い
4. MessagePack / CBOR(バイナリ)
- JSON の構造をそのまま軽量化 した形式
- IoT やモバイル通信に向く
- スキーマ無しでも使える
5. Avro(バイナリ)
- スキーマ必須で強い型保証
- Kafka やデータ基盤でよく使われる
- サイズ効率が良いが処理はやや重い
6. Protocol Buffers(バイナリ)
- Google 製
- 最速・最小クラスのバイナリ形式
- gRPC の標準
- スキーマ必須(proto ファイルが必要)
7. Parquet(カラム型フォーマット)
- データ分析・DWH で最強
- 列指向で圧縮率が高い
- バッチ処理向けでリアルタイム用途には不向き
データ形式の評価軸
一般に、データ形式は以下の4つで比較できます:
| 観点 | 説明 |
|---|---|
| 可読性 | 人間が内容を理解できるか(JSONが最強) |
| サイズ効率 | データがどれだけ小さくなるか |
| 処理速度 | エンコード/デコードが速いか |
| スキーマ | 型管理が必要か、強い保証があるか |
可読性が高い形式は 遅くて重い
高速で軽量な形式は 読めない・スキーマが必要
というトレードオフがあります。
用途別のおすすめ形式
開発初期・デバッグ
- JSON
- YAML
- CSV
IoT / モバイル通信
- MessagePack
- CBOR
(軽量で JSON 互換の感覚で使える)
リアルタイム通信・RPC
- Protocol Buffers
(gRPC標準。速度◎・サイズ◎)
大量データのバッチ処理・保存
- Avro
- Parquet(分析用)
Web API / REST
- JSON 一択(標準・互換性が高い)
一問一答:どれを選ぶべき?
- 軽くしたいけど JSON のまま使いたい → MessagePack / CBOR
- 型を厳密に管理したい → Avro
- 高速で通信したい → ProtoBuf
- 表形式で扱いたい → CSV / Parquet
- とりあえず動かしたい → JSON
まとめ
データ形式には万能なものはなく、
使う場面に応じてベストが変わる のが特徴です。
- JSON → 人間に優しい
- MsgPack / CBOR → JSON 互換で軽い
- Avro → スキーマ管理+高圧縮
- ProtoBuf → 高速・軽量な通信
- Parquet → 分析特化
要件(可読性/速度/サイズ/スキーマ)を整理したうえで
形式を選ぶのがもっとも現実的と言った結論になりました。