FormatArcかんたんデータ変換
YAML入門データ形式

YAMLとは?基本構文と使われる場面をわかりやすく解説

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

FormatArc YAML to JSON の変換結果

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/noon/off が真偽値として解釈されるなど、暗黙の型変換が起きることがあります。ノルウェーの国コード NOfalse に変換されてしまう有名な例は、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 で簡単にできる

関連ツール

YAML → JSON