YAMLを使い始めたばかりの方にとって、正しい書き方・書式を把握することは非常に重要です。
「インデントは何スペース?」「配列はどう書くの?」「改行はどう扱うの?」といった疑問を持つ方も多いでしょう。
本記事では、YAMLの基本的な記法・インデントのルール・配列・マッピング・複数行文字列・アンカーまで、実際のコード例を使ってわかりやすく解説していきます。
YAMLの基礎をしっかりと固めたい方はぜひ最後までご覧ください。
YAMLの基本的な書き方と構造
それではまず、YAMLの基本的な構造と記法について解説していきます。
YAMLのドキュメントは「マッピング(key: value)」「シーケンス(リスト)」「スカラー(単一の値)」の3種類を組み合わせて構成されます。
【YAMLの3つの基本構造】
# マッピング(オブジェクト)
name: tanaka
age: 30
# シーケンス(リスト)
fruits:
– apple
– banana
– cherry
# スカラー(文字列・数値・真偽値)
message: “Hello, World!”
count: 10
active: true
この3つの基本構造の組み合わせで、どんな複雑なデータでも表現できます。
インデントのルール(最重要)
YAMLで最も重要なルールがインデントです。
インデントはスペース(半角空白)のみ使用し、タブ文字は絶対に使ってはいけません。
インデントの幅は2スペースまたは4スペースが一般的ですが、一貫していれば何スペースでも構いません。
同じ階層のキーは同じインデント幅で揃える必要があります。
【インデントの正しい例】
user: # 階層1
name: tanaka # 階層2(2スペース)
address: # 階層2
city: Tokyo # 階層3(4スペース)
インデントのズレはYAMLのバグの最大原因であるため、エディタのYAML対応機能で視覚的に確認する習慣をつけましょう。
コロン(:)の使い方
マッピング(key: value)では「:(コロン)」の後に必ず半角スペースが必要です。
「name:tanaka」(スペースなし)は文字列として扱われる場合があり、マッピングと認識されないことがあります。
値が続く場合は「key: value」、値が次の行に来る場合は「key:」と書きます。
ダッシュ(-)によるシーケンスの書き方
シーケンス(リスト・配列)は「-(ダッシュ)+ スペース + 値」の形で書きます。
【シーケンスの書き方】
# ブロックスタイル(推奨)
colors:
– red
– green
– blue
# フロースタイル(インライン)
colors: [red, green, blue]
フロースタイルはJSONに近い書き方で、短いリストに使うと見やすくなる場合があります。
複数行文字列の書き方
続いては、YAMLで複数行の文字列を扱う方法を確認していきます。
YAMLでは複数行の文字列を表現するための2つの記法があります。
リテラルブロック(|)の使い方
縦棒(|)を使うと、改行を保持したまま複数行の文字列を書けます。
【リテラルブロック(|)の例】
message: |
1行目
2行目
3行目
→ 実際の値:「1行目\n2行目\n3行目\n」
シェルスクリプト・SQLクエリ・マルチラインの説明文など改行を保持したい場合にリテラルブロックが最適です。
折りたたみブロック(>)の使い方
大なり記号(>)を使うと、改行をスペースに変換した文字列として扱われます。
【折りたたみブロック(>)の例】
description: >
この文章は
折り返しがあっても
1行にまとめられます
→ 実際の値:「この文章は 折り返しがあっても 1行にまとめられます\n」
長い説明文をYAMLの幅に合わせて折り返して書きたい場合は折りたたみブロックが便利でしょう。
クォートの使い分け
YAMLの文字列では、状況によってクォートが必要になります。
| 状況 | クォートの必要性 | 例 |
|---|---|---|
| 通常の文字列 | 不要 | name: tanaka |
| 特殊文字を含む | 必要 | url: “https://example.com” |
| 真偽値と区別したい文字列 | 必要 | flag: “true” |
| 数値と区別したい文字列 | 必要 | code: “123” |
| エスケープシーケンスを使う | ダブルクォート必要 | text: “Hello\nWorld” |
シングルクォート(’)は文字列をそのまま表現しエスケープが効かず、ダブルクォート(”)はエスケープシーケンスが使えます。
YAMLの高度な記法
続いては、より高度なYAMLの記法を確認していきます。
ネストされた構造の書き方
マッピングやシーケンスは自由にネストできます。
【ネストした構造の例】
company:
name: Example Corp
employees:
– name: Tanaka
role: Engineer
– name: Yamada
role: Designer
複雑なデータ構造も、インデントによる階層表現で自然に書けるのがYAMLの強みです。
マルチドキュメントYAMLの書き方
1つのYAMLファイルに複数のドキュメントを含める場合は「—(ドキュメント区切り)」を使います。
【マルチドキュメントYAMLの例】
—
name: document1
—
name: document2
Kubernetesのマニフェストファイルでは複数のリソースを1つのYAMLファイルに「—」で区切って記述することがよく行われます。
アンカーとエイリアスの活用(再確認)
繰り返し使う設定はアンカー(&)とエイリアス(*)で定義・参照できます。
マージキー(<<:)を使うと継承のような記述ができるため、環境別設定の管理に非常に便利です。
まとめ
本記事では、YAMLの基本記法・インデントのルール・シーケンス・複数行文字列・クォートの使い分け・ネスト・マルチドキュメントまで詳しく解説しました。
YAMLはインデントとコロン・ダッシュという基本ルールを覚えるだけで、直感的に構造化されたデータを書けるフォーマットです。
インデントはスペースのみ・コロンの後はスペース・複数行文字列はリテラルブロックを使うというルールを押さえておけば、YAMLの基本は完全に習得できます。
ぜひ実際に設定ファイルを書きながら、YAMLの書き方に慣れてみてください。