2025-07-24

anond:20250723030957

JSONと比べたときの**YAMLの「闇深」仕様**、ありますね…。

YAML人間に優しいと言われながらも、その仕様ときに**悪魔的**。

以下、ITエンジニアなら一度は踏んだであろう「地雷」を、**論理的かつ少し自虐的に**まとめてみました:

---

🔥 1. インデント=構文

good:
  value: ok
bad:
 value: nightmare  # ←ここ、インデントずれてて無効。だけど一見からない。

---

💣 2. 暗黙の型推論

  • `true`, `false`, `yes`, `no`, `on`, `off` は**勝手に boolean に変換**される。
  • `2021-12-25` → 日付扱い(Date型に変換されることもある)。
  • `12345` → 数値扱い。先頭0つけると8進数として怒られるケースも。
password: no  # ← 文字列じゃなくて false になる可能性
serial: 012345  # ← 8進数!?エラー

---

🧨 3. スカラー値の地雷原(改行、引用符…)

message: |
  これは複数行の
  スカラー値です。
  • 上記はまだいいが、`>` を使うと**改行がスペースに変換される**という謎挙動も。

---

🕳 4. マージキーアンカー(& と \*)

defaults: &defaults
  timeout: 30
  retries: 3

service:
  <<: *defaults
  retries: 5  # 上書きされるが、複雑になると意図しない結果に
</pre>
	
	

---

😱 5. コメントJSON存在しない → 変換できない

---

🧠 結論YAMLは**人間に優しい顔をしたパース殺し**

  • JSON:**機械に優しい、でも硬い**
  • YAML:**人間に優しい(ように見える)、でも罠だらけ**

---

もしYAML安全に扱いたいなら、\*\*JSON supersetとしての使い方(厳格YAML)\*\*を意識したり、**JSONに寄せて書く**のが一番平和だったりします。

---

要するに、YAMLは「賢く書こうとすると沼る」。

「素直に、簡潔に、禁欲的に」が正解です。

でも誘惑が多いのよね、あの子……。

記事への反応 -
  • YAMLは人間が読みやすい、書きやすいと言われてるらしいが、JSONのほうが普通に読みやすくないか? インデントは人間に優しいという幻想を捨てよう

    • JSONと比べたときの**YAMLの「闇深」仕様**、ありますね…。 YAMLは人間に優しいと言われながらも、その仕様はときに**悪魔的**。 以下、ITエンジニアなら一度は踏んだであろう「地雷」を...

    • YAMLの良さがわからないのでいつもjson使ってる。 コメント書きたいならXMLでもいいわけだし。 また、たくさんのデータを扱う場合は、TSV(タブ区切り)が最強だと思ってる。基本的にエス...

    • JSONは、ビューアが発達したので読みやすくなった。 コメントもデータとして書いてしまえばいいし。

    • インデントズレるしネストわかりにくいから嫌い いつもChatGPTに直させてる Pythonはそんなことないんだけどな

    • 書き方が多様で嫌なんだよね。なんだよブロックスタイルとフロースタイルって

    • だから、書きやすいの方をなんで意図的に無視するんだよ JSONはダブルクォーテーションの整合性とか、ケツカンマ問題とかどうでもいいところがわずらわしいんだよ。 似たような話は...

      • どっちが書きやすいかと言われれれば、普段書いているコードと似ているJSONなんだよな なお、Python書いてた時もYAMLは書きにくかった

    • 人間社会で一般的に使われる文書の書式にYAMLの方が近い。という意味なんじゃない? 普通の文書ではJSONみたいにすべての要素をダブルクォートで囲ったりしないし、YAMLは箇条書き文書...

      • 機械で処理する必要がないものならYAMLの方がいいとは思う ただ、そういうのはmarkdownやplain-textでいいじゃん

    • YAMLまだわからん。JSONのがわかりやすくないか?

    • JSONはファイルサイズがでかい、インデントが深くなりがち、コメント書けないので嫌

    • JSONは手作業じゃなければいいけど、手作業だとカンマ一つ、クォーテーション一つで即潰れるよわよわなとこあるからなぁ

    • みんなもっと toml を書こう

    • みんなもっとhoconを使おう

    • 前提をひっくり返すようだがYAMLにしろJSONにしろ読みづらくなるのは1ファイルの行数が多いからで、10行20行レベルで収まらないならもうコードとして書いてしまいたくなる

    • やむる?

    • どっちでもええわ 使えれば

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん