YAML クイックリファレンス
スカラー、シーケンス、マッピング、アンカー、複数行
構文
基本ルール
| Indentation | スペースのみ(タブ不可)、深さを統一 |
| # | コメント(行末まで) |
| --- | ドキュメント開始マーカー |
| ... | ドキュメント終了マーカー |
| Case sensitive | キーと値は大文字・小文字を区別 |
最小限の例
---
name: Alice
age: 30
active: true
スカラー
スカラーの型
| hello | 文字列(クォートなし) |
| "hello" | 文字列(ダブルクォート、エスケープ可) |
| 'hello' | 文字列(シングルクォート、リテラル) |
| 42 / 3.14 | 数値(整数 / 浮動小数点) |
| true / false | ブール値 |
| null / ~ | null 値 |
| 2026-03-26 | 日付(ISO 8601) |
クォートのルール
plain: no quotes needed
special: "colon: and hash # need quotes"
escape: "line\nnewline"
literal: 'no \n escaping here'
シーケンス
ブロックシーケンス
fruits:
- apple
- banana
- cherry
フローシーケンス(インライン)
colors: [red, green, blue]
matrix: [[1, 2], [3, 4]]
オブジェクトのシーケンス
users:
- name: Alice
role: admin
- name: Bob
role: user
マッピング
ブロックマッピング
server:
host: localhost
port: 8080
debug: false
フローマッピング(インライン)
point: {x: 10, y: 20}
複合キー
? [first, second]
: "compound key value"
アンカーとエイリアス
定義と再利用
defaults: &defaults
timeout: 30
retries: 3
production:
<<: *defaults
timeout: 60
参照
| &name | アンカーを定義 |
| *name | アンカーを参照(エイリアス) |
| << | マージキー — マッピングを現在にマージ |
複数行文字列
ブロックスカラー
| | (literal) | 改行をそのまま保持 |
| > (folded) | 改行をスペースに折りたたむ |
| |+ (keep) | リテラル、末尾の改行を保持 |
| |- (strip) | リテラル、末尾の改行を削除 |
| >- (fold+strip) | 折りたたみ、末尾の改行を削除 |
リテラルブロック
script: |
echo "line one"
echo "line two"
折りたたみブロック
description: >
This long text will be
folded into a single line
with spaces.
タグ
型タグ
| !!str 42 | 値を文字列 "42" に強制 |
| !!int "42" | 値を整数 42 に強制 |
| !!float 1 | 値を浮動小数点 1.0 に強制 |
| !!bool "true" | 値をブール値に強制 |
| !!null "" | 値を null に強制 |
| !!binary | Base64 エンコードされたバイナリデータ |
タグの例
port: !!str 8080
enabled: !!bool "yes"
version: !!float 3
よく使うパターン
Docker Compose
services:
web:
image: nginx:alpine
ports: ["80:80"]
environment:
NODE_ENV: production
GitHub Actions
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
ヒント
| yamllint | 構文とスタイルの YAML リンター |
| yq | コマンドライン YAML プロセッサー(jq のような) |
| Avoid Norway | NO はブール値の false — 国コードはクォートで |
| Avoid !!python | 安全でないローダーで信頼できない YAML を読み込まない |