インデントで迷う瞬間
YAML を書いていると、こんな疑問にぶつかります。
「リストの前って、スペースを入れるの?行頭から
-で始めていいの?」
検索しても、どちらの例も出てくる。そして最初に感じるのは——どっちが正しいんだ? という混乱です。
答え:どちらも正しい
インデントあり:
items:
- apple
- banana
- grapeインデントなし:
items:
- apple
- banana
- grapeどちらも YAML として正しく、まったく同じ構造として解釈されます。
YAMLのリストは、インデントではなく ハイフン(-)によって構造を表現しているからです。
つまり、インデントの有無は構文上は無関係です。
技術的な仕組み:キーとリストの違い
YAML で階層を決めるのはインデントですが、リストだけはハイフンが階層の印になります。
a:
- 1
- 2
b:
- 3これは次の書き方と完全に等価です。
a:
- 1
- 2
b:
- 3つまり、キーはインデントが命、リストはハイフンが命。構文的に壊れるのは前者だけなんです。
見た目の哲学:インデント派 vs 非インデント派
どちらを選ぶかは、文法ではなく美意識の問題になります。
| スタイル | 特徴 | 向いている場面 |
|---|---|---|
| インデントあり | 構造がきれいにそろい、安心感がある(インデントがあるのが正しいと思う安心感) | 階層が多い設定や共同編集 |
| インデントなし | 行頭に-が並び、リスト構造がすぐ目に入る | シンプルな構成や短い定義 |
人間の視覚は、左端に並ぶ記号をリスト構造として最速で認識します。つまり「非インデント派」は、構文よりも読むスピードと視覚的リズムを重視しているとも言えます。
ツールが作る無機質な YAML
手で書くときは整えていても、ツールが吐き出す YAML を見るとこうなっていたりします。例えば、kubectl の -o yaml などもそうなっています。
values:
- one
- two
- threeこれは間違いではなく、単に「出力最適化」された結果です。
ツールは人間の美意識よりも、構文の最小限性を優先します。
つまり、YAML の世界では「正しい書き方」ではなく「読みたい書き方」が存在するのです。
結論:たった 2 スペースの思想
結局のところ、YAML のリストのインデント問題は文法ではなく感性の問題であり、どっちでも良いですが、あえていうなら、そのツールの出力に合わせて書いたほうが個人的には好きですね。比較もやりやすいので。
こういう割とどうでもいいことを言語化して基底とするのは結構大事だったりします。

