YAML教
moriteppei.iconYAML教って何?
もち.icon「YAML教」っていうのはYAML(YAML Ain't Markup Language)というデータ記述言語を盲目的に崇拝してるかのような人たちを揶揄した言い方。YAMLはシンプルで人間に読みやすい構文を持ってて、設定ファイルやデータの表現にめちゃくちゃ使われてる。でも、インデントに敏感だし、仕様がちょい複雑だったりして、エラーの原因にもなりがち。だから「そんなに崇めなくても…」っていう反動から、「YAML教(の信者)」というジョークが生まれた。「JSONでよくね?」とか「TOML派は異端?」みたいな小競り合いの中で出てくる感じ。
moriteppei.iconそもそもJSONとかyaml(ヤムルでいいんか?)とかは何なの?データフォーマット?
もち.iconざっくり言うとJSONもYAML(ヤムルでOK)も、「データの構造を記述するためのフォーマット(=書き方のルール)」*だよ。言語っていうより、「データの入れ物の形式」。
データ構造:
プログラミングの中で使われる「データの並べ方」そのもの(例:配列、辞書、ツリー)
データフォーマット:
それを人間やコンピュータが読み書きできるように表現した形式。
JSONやYAMLはこの「フォーマット」にあたる。
もち.iconたとえば「森さんのプロフィール」を記録するとなったとき:
code:json{
{ "name": "森哲平",
"age": 45,
"likes": "グレイトフル・デッド", "占い"
}
code:yaml
name: 森哲平
age: 45
likes:
- グレイトフル・デッド
- 占い
見ての通り、YAMLの方が「人間が読む用」にチューニングされてる。JSONは「機械にとって扱いやすい」。中身は同じ、ただの表現の違い。
moriteppei.iconJSONのほうが機械だと扱いやすいのはなんで?
もち.icon構文がシンプルで曖昧さがないから。YAMLは人間に優しく作られてるぶん、
インデントでネストを表す(でもインデントミスに超弱い)
コメントが書けたり、複数の書き方があったりする(自由すぎ)
結果としてパーサー(読み取りソフト)作るのがめんどくさい&エラー出やすい。
それに対してJSONは:
波カッコ {} とカンマ , とコロン : のルールしかない
データ型も限られてる(数値、文字列、配列、オブジェクト、true/false/null)
書き方が厳格(""必須、コメントNG)
[だから機械的に「読みやすい」&「チェックしやすい」。
moriteppei.iconフォーマット、他には何があるの?あと、有名なの、世界でいくつくらいあるの?
もち.icon世界のデータフォーマット 有名順ランキング(実用編)
ランク フォーマット 主な用途 特徴
1位 JSON Web API / 設定ファイル 軽い・扱いやすい・速い
2位 YAML 設定ファイル(Kubernetes等) 人間に優しいがミスしやすい
3位 XML 古いシステム / 文書定義 機能豊富・でも冗長
4位 CSV 表データ(ExcelやDB) シンプル・でも曖昧な構造
5位 TOML Rust/Python系の設定ファイル YAMLより明快な構文
6位 INI Windows系の設定ファイル 古参・セクション式
7位 Protocol Buffers バイナリ通信(gRPCなど) 高速・軽量・要スキーマ
8位 MessagePack バイナリJSON互換 JSONの高速バージョン
9位 Avro ビッグデータ/Hadoop系 スキーマ付きバイナリ
10位 NDJSON ログ処理・ストリーム処理 1行=1JSON。ログ向け
正直、100種以上は余裕である。マニアックなもの含めたら200〜300種くらいは存在してる。でも実際に「エンジニアが日常的に触る」のは上位10種くらいで9割カバーできる。