とても良いテーマです。 YAML(YAML Ain’t Markup Language)はシンプルに見えて奥が深く、 特に設定ファイル(Kubernetes、GitHub Actions、Docker Composeなど)で頻繁に使われます。
以下に、YAMLを使いこなすための主要なポイントを整理して挙げます。
1. インデント(字下げ)を絶対に正確に# OKapp: name: myapp version: 1.0# NG(タブ使用や不揃い)app: name: myapp # タブ version: 1.0 # 不揃い
2. 配列(リスト)と辞書(マップ)の違いを理解YAMLの基本構造は リスト(-) と キー・値(:) の組み合わせです。 # 配列(リスト)fruits: - apple - banana - orange# 辞書(マップ)person: name: Taro age: 30
3. スカラー値(文字列・数値・真偽値)の扱いに注意文字列は基本的にクォート不要ですが、 特殊文字(:, #, ?, *, |, >など)が含まれるときは "..." で囲む。 真偽値や数値は自動的に型推論されるが、意図的に文字列扱いにしたいときはクォート必須。
version: "1.0" # 文字列扱いdebug: true # 真偽値port: 8080 # 数値
4. 複数行の文字列は | と > を使い分ける# | : 改行を保持description: | This text has line breaks.# > : 改行をスペースに変換summary: > This text will be joined into one line.
5. アンカー(&)とエイリアス(*)で重複を減らす設定を再利用する際に非常に便利。 default: &base image: python:3.12 restart: alwaysweb: <<: *base ports: - "8080:80"worker: <<: *base command: ["python", "worker.py"]
→ &base で定義したブロックを *base で再利用。
6. コメント(#)を積極的に使う設定ファイルとして長く使う場合、コメントで目的を残すのが大切。 # データベース接続設定database: host: localhost port: 5432
7. 型や構造を意識して書くYAMLは柔軟すぎて、意図せず構造が変わることがあります。 → JSONに変換して検証すると安全です。 cat config.yaml | yq -o=json
8. ツールを活用するlint / validateツール:
yamllint, yq, yaml-language-server エディタ支援: VS Code なら「YAML extension」を入れてスキーマ補完を有効化。
9. スキーマ(構文定義)を理解するKubernetesやGitHub Actionsのように、YAML自体ではなくその上の構文ルールが存在します。 → 「YAMLが正しくても、ツールが理解できない」ことがある。 → 公式ドキュメントで対応スキーマを確認する習慣をつける。
10. 一度 JSON に変換してみる癖をつけるYAMLはJSONのスーパーセットなので、変換して確認すると構造理解が深まります。 yq -o=json config.yaml
まとめ| ポイント | 内容 |
|---|
| インデント | スペースで統一、ズレは致命的 | | 構造 | リストと辞書を明確に区別 | | 文字列 | クォートの使い方に注意 | | 複数行 | ` | | 再利用 | & と * を活用 | | コメント | 意図を明示する | | 検証 | JSON変換やlintツールで確認 |
|
この記事へのコメント