構文
基本ルール
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 に強制
!!binaryBase64 エンコードされたバイナリデータ
タグの例
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 NorwayNO はブール値の false — 国コードはクォートで
Avoid !!python安全でないローダーで信頼できない YAML を読み込まない