YAML は、設定ファイルでよく使われる読みやすいテキスト形式です。 Docker Compose、Kubernetes、GitHub Actions、CI/CD の定義など、開発の周辺ではほぼ避けて通れません。
インデントが構造そのもの
JSON の {} に相当するものが、YAML では半角スペースによる字下げです。ここから最大の注意点が出ます。
タブ文字は使えません。 見た目は揃っていても、タブが混ざった瞬間にパースエラーになります。エディタでタブをスペースへ変換する設定を入れておくのが確実です。
型を勝手に推測する
YAML は書かれた値から型を判定します。これが事故のもとになります。
| 書いた値 | 解釈される型 |
|---|---|
yes / no / on / off |
真偽値(文字列ではない) |
1.10 |
数値の 1.1(末尾の0が消える) |
08 |
環境により数値/エラー |
NO |
国コードのつもりでも真偽値 |
バージョン番号を 1.10 と書いて 1.1 になる、国コードの NO(ノルウェー)が false になる、というのは実際に起きます。文字列として扱わせたいときは引用符で囲むのが唯一の確実な対策です。
長い文字列の書き方
複数行を扱う記法が2つあり、混同しやすいところです。
|(リテラル)… 改行をそのまま保持する。スクリプトを書くときはこちら>(折りたたみ)… 改行を空白に変換して1行にまとめる
CI の実行コマンドを > で書くと、複数行のコマンドが1行に潰れて動きません。
実務で見るポイント
- 保存前に構文チェックを通す。インデント1つのずれで全体の意味が変わる
- コメント(
#)が書けるのが JSON との大きな違い。設定の理由を残せる - 同じキーを2回書くと後勝ちで、警告も出ないことがある。長いファイルでは要注意