なんか XML で作られようとしている API があって、「JSON でよくね?」って話をした。
そのとき考えたことを一応メモしておく。
とりあえず JSON
Web API など、言語やサービスを越えてのデータをやり取りしたいケースはいくらでもある。
そういうときはとりあえず JSON を選択することにしている。
まぁいまどきだいたいみんなそうですよね。
なんで XML やその他のフォーマットと比べて JSON が良いと感じるのか。
根拠
- XML ほどリッチではないがほとんどの場合事足りるしわかりやすい
- だいたいどんな言語のデータ構造にもわかりやすくマッピングできる
- だいたいどんな言語でも定番のライブラリがある
- 文字コードとして Unicode を強制されるので文字コードまわりの面倒が起こりにくい
- エンコード/デコードのパフォーマンスが求められるようになったら MessagePack に移行すれば良い
あとは、まだ実践したことはないけど
- バリデーションとかに JSON Schema 使えると便利 (XML Schema は XML にしか使えないが、JSON Schema ならあらゆる用途・あらゆる言語で使えるし、データ自体は読みやすいように YAML ファイルとかで持っておくこともできる)
突っ込みどころあったらお願いします。
XML について
XML に関しては、JSON よりもリッチなデータを表現できるので、XML の方が良いケースというのも確かにあるんだろうけど、個人的にはそういうのに遭遇したことないです。
別に XML の存在意義を否定するような意図はありません。
まぁ普通の WebAPI でレスポンスが XML だったらちょっとダルイなとは思いますが。
YAML について
YAML でもいいんじゃないか、と考えた。
が、結論としては JSON の方が良いのではと思う。
良い点
- 読みやすい
- 概ね JSON と相互変換でき、JSON で表現できることは大体 YAML にも表現できる
悪い点
- 単純な「データ」ではない部分がある
- アンカー/エイリアスという仕様があり、要は変数みたいなもの (詳細はプログラマーのための YAML 入門 (初級編)を参照)
Web API の実装として、パラメータか何かで出力フォーマットを切り替えることができて、YAML でも出力できるようになっている、というのはデバッグ時に読みやすいので便利だと思う。
でもあくまでもメインは JSON。