YAMLとは?基本構文と使われる場面をわかりやすく解説
YAMLとは何か、インデントベースの構文やコメント機能、Kubernetes・GitHub Actions・Docker Composeでの使用例を初心者向けに解説します。

YAMLとは
YAML(YAML Ain't Markup Language)は、設定ファイルやデータの記述に使われるテキストフォーマットです。もともとは「Yet Another Markup Language」の略でしたが、マークアップ言語ではなくデータ指向であることを強調するために、再帰的な名前に改められました。
最大の特徴は、インデント(字下げ)で構造を表現する点です。波括弧や角括弧を使わないため、見た目がすっきりしていて、人間が読み書きしやすいように設計されています。
YAMLの基本構文
キーと値
コロンとスペースで区切ってキーと値を記述します。クォートは基本的に不要です。
name: 田中太郎
age: 30
city: 東京
ネスト(階層構造)
インデントを使って階層を表現します。インデントにはスペースを使い、タブは使えません。スペース2つが一般的です。
user:
name: 田中太郎
address:
prefecture: 東京都
city: 渋谷区
配列
ハイフンとスペース(- )で各要素を列挙します。
fruits:
- りんご
- バナナ
- みかん
コメント
# 以降がコメントとして扱われます。これは JSON にはない機能で、設定ファイルに説明を残せる大きな利点です。
# データベース接続設定
database:
host: localhost # 本番環境では変更する
port: 5432
複数行の文字列
パイプ(|)を使うと改行を保持したまま複数行の文字列を書けます。> を使うと改行が半角スペースに変換されます。
description: |
これは1行目です。
これは2行目です。
改行がそのまま保持されます。
YAMLがよく使われる場面
Kubernetes
Pod やDeployment などのリソース定義は YAML で記述するのが標準的です。コメントを残せるため、設定の意図を説明しながら管理できます。
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web
GitHub Actions
ワークフローの定義ファイル(.github/workflows/)は YAML 形式です。ジョブの依存関係やステップの記述が直感的に読めるのは、YAML のインデント構文のおかげです。
name: CI
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm test
Docker Compose
複数のコンテナをまとめて管理する docker-compose.yml も YAML 形式です。サービス間の依存関係やポートマッピングを宣言的に書けます。
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
その他
Ansible のプレイブック、Spring Boot の application.yml、OpenAPI(Swagger)の定義ファイルなど、YAML は設定記述の場面で幅広く採用されています。
YAMLの注意点
便利な反面、いくつかの落とし穴もあります。
インデントのズレが構文エラーに直結するため、エディタのインデント設定(スペース幅、タブ/スペースの切り替え)には気をつける必要があります。
また、yes/no、on/off が真偽値として解釈されるなど、暗黙の型変換が起きることがあります。ノルウェーの国コード NO が false に変換されてしまう有名な例は、YAML の仕様が抱える問題として知られています。文字列として扱いたい場合はクォートで囲みましょう。
country: "NO" # クォートがないと false になる
JSON との詳しい比較は YAMLとJSONの違い で解説しています。
YAMLとJSONの変換
YAML と JSON は表現力がほぼ同じで、相互変換が可能です。YAML で書いた設定を JSON として API に渡したい場合や、JSON のデータを人が読みやすい YAML に変換したい場合があります。
YAML to JSON を使えば、ブラウザ上で手軽に YAML から JSON への変換ができます。変換ルールの詳しい解説は YAMLをJSONに変換する方法 を参照してください。
まとめ
- YAML はインデントで構造を表現する人間に読みやすいデータ形式
- コメントが書けるため、設定ファイルに説明を残せる
- Kubernetes、GitHub Actions、Docker Compose など DevOps 領域で広く使われている
- インデントのズレや暗黙の型変換には注意が必要
- JSON との相互変換は YAML to JSON で簡単にできる