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は設定ファイルで本当によく見かけるから、慣れておくと便利だよ!