YAML

人間が読みやすいデータシリアライゼーション形式で、設定ファイルや CI/CD の定義に広く使われる

データ形式運用
YAML」の技術書を見る (9 冊) →

YAML とは

YAML (YAML Ain't Markup Language) は、インデントベースの人間が読みやすいデータシリアライゼーション形式である。Kubernetes マニフェスト、GitHub ActionsDocker ComposeCloudFormation など、設定ファイルのデファクトスタンダードだ。

基本構文

基本構文の例を示す。

# 文字列
name: Alice
message: "Hello, World"

# 数値・真偽値
age: 30
active: true
score: 3.14

# 配列
tags:
  - typescript
  - aws
  - kubernetes

# オブジェクト (マップ)
address:
  city: Tokyo
  zip: "100-0001"

# 複数行文字列
description: |
  これは複数行の
  文字列です。
  改行が保持されます。

# 折りたたみ文字列
summary: >
  これは長い文章ですが
  1 行に折りたたまれます。

JSON との比較

JSON との主な違いを以下に比較する。

観点YAMLJSON
可読性高い (インデントベース)中程度 (括弧ベース)
コメント# で可能不可
データ型暗黙的 (曖昧)明示的
用途設定ファイルAPI、データ交換
パース速度遅い速い

YAML の落とし穴

暗黙の型変換

# ❌ 意図しない型変換
version: 1.0    # float (文字列ではない!)
country: NO     # boolean false (Norway ではない!)
zip: 01onal    # 8進数として解釈される場合がある

# ✅ クォートで文字列を明示
version: "1.0"
country: "NO"
zip: "01234"

インデントエラー

# ❌ タブ文字は使えない (スペースのみ)
items:
	- item1    # タブ → パースエラー

# ✅ スペース 2 つ
items:
  - item1

使われる場面

使われる場面を以下に示す。

ツールファイル
Kubernetesdeployment.yaml, service.yaml
GitHub Actions.github/workflows/*.yml
Docker Composedocker-compose.yml
CloudFormationtemplate.yaml
ESLint.eslintrc.yml

TOML との比較

TOML との主な違いを以下に比較する。

観点YAMLTOML
ネストインデント[section]
型の厳密さ曖昧厳密
用途CI/CD、K8sRust (Cargo.toml)、Python (pyproject.toml)

マルチドキュメント

マルチドキュメントの例を示す。

# 1 つのファイルに複数のドキュメント
apiVersion: v1
kind: ConfigMap
metadata:
  name: config
---
apiVersion: v1
kind: Service
metadata:
  name: my-service

--- で区切ることで、1 ファイルに複数の Kubernetes リソースを定義できる。

さらに掘り下げるなら関連書籍が参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事