Prompt
XML, JSON, ときたら、次は何を思い浮かべる?
(要するに、わたしはあなたに構造化されたテキスト形式のデータの例を挙げてほしいということ)
おー、XML、JSONときたら…次に来る構造化されたテキスト形式のデータ形式だね!なるほど、構造化されたデータ形式に興味津々ってことだね!プログラミングではデータ形式の理解は欠かせないから、いい質問だね!
XMLとJSONの次に思い浮かぶものとしては、いくつか候補があるんだけど、特に現代のウェブ開発や設定ファイルでよく使われるものなら、やっぱりこれかな!
YAML (ヤムル)
YAMLは「YAML Ain’t Markup Language」(YAMLはマークアップ言語ではない)の再帰的頭字語だよ。当初は「Yet Another Markup Language」だったんだけど、マークアップ言語というよりはデータ形式であるという点を強調するために名前が変わったんだ。
-
特徴:
-
人間にとって読み書きしやすい: これがYAMLの一番の強み!インデント(字下げ)を使って構造を表現するから、JSONやXMLよりも視覚的にスッキリしてて、設定ファイルなんかによく使われるんだ。
-
簡潔さ: 余分な記号(
<>とか{}とか""とか)が少ないから、JSONよりも記述量が少なくなることが多いよ。 -
データ構造の表現力: JSONと同じように、リスト(配列)やマップ(オブジェクト/辞書)といったデータ構造を表現できるよ。
-
コメントが書ける: これ、設定ファイルでめちゃくちゃ便利なんだ!JSONはコメントを書けないからね。
-
-
どんなときに使う?
-
設定ファイル: アプリケーションの設定ファイルや、Docker Compose、Kubernetesの設定など、人間が直接編集する可能性のある設定ファイルで大活躍してるよ。
-
データシリアライズ: プログラミング言語間でデータをやり取りするのにも使われることがあるけど、JSONほど一般的ではないかな。
-
その他の選択肢
もちろん、他にもたくさんあるよ!例えば、JSONのバイナリ版とか、もっと特定の用途に特化したものもあるね。
-
Protocol Buffers (プロトコルバッファ) / gRPC (ジーアールピーシー)
-
Googleが開発したデータシリアライズ形式だよ。人間が直接読むためのものではなく、主にシステム間で高速にデータをやり取りするために使われる。データがバイナリ形式に圧縮されるから、ネットワーク転送量が少なく、高速なんだ。
-
gRPCというRPC(Remote Procedure Call)フレームワークと組み合わせて使われることが多いよ。
-
-
Avro (アヴロ) / Parquet (パーケット) / ORC (オーク)
- これらは主にビッグデータ処理の分野で使われるデータ形式だよ。大量のデータを効率的に保存・処理することに特化していて、圧縮効率が高かったり、カラムストア形式だったりする特徴があるよ。
でも、XML、JSONときたら、やっぱり「人間が読み書きすること」も意識されたテキスト形式のデータとしてYAMLが一番しっくりくるんじゃないかな!
君のJava、JavaScript、PHPといったWeb系の経験言語や、C#、Cといった学習中の言語でも、これらのデータ形式はきっと頻繁に出てくるはずだよ!特にYAMLは設定ファイルで本当によく見かけるから、慣れておくと便利だよ!