インデントで階層構造を表す YAML のサンプル。FormatArc の YAML to JSON 変換ツールで構文チェックした画面インデントで階層構造を表す YAML のサンプル。FormatArc の YAML to JSON 変換ツールで構文チェックした画面
公開日: 2026-03-20更新日: 2026-06-02

YAMLとは?基本構文・コメント・Kubernetes での使われ方

YAMLとは何か、インデントで階層を表す構文、JSON にはないコメント、.yml と .yaml の違い、Kubernetes や GitHub Actions での使い方を解説します。書いた YAML はブラウザに貼るだけで構文チェックできます。

TL;DR — 30 秒でわかる YAML

  • YAML はインデント(字下げ)で階層を表すデータ形式です。文字列・数値・真偽値・null・配列・マッピングという、JSON と同じデータモデルを扱えます。
  • 波括弧やカンマがないぶん人が読み書きしやすく、設定ファイルの記述に広く使われます。
  • Kubernetes・GitHub Actions・Docker Compose・Ansible はいずれも YAML 前提です。
  • JSON にはないコメント・複数行文字列・アンカー(再利用)が書けます。
  • YAML を JSON に変換したいときは FormatArc の YAML to JSON 変換ツール に貼り付ければ、ブラウザ内で完結し、エラー時は行番号付きで問題箇所が表示されます。

YAMLとは

YAML(YAML Ain't Markup Language)は、設定ファイルやデータの記述に使われるテキストフォーマットです。もともとは「Yet Another Markup Language」の略でしたが、マークアップ言語ではなくデータ指向であることを強調するために、再帰的な名前に改められました。

最大の特徴は、インデント(字下げ)で構造を表現する点です。波括弧や角括弧を使わないため、見た目がすっきりしていて、人間が読み書きしやすいように設計されています。

同じデータを YAML と JSON で書き比べると、違いがひと目でわかります。

name: Alice
age: 30
isStudent: false
{
  "name": "Alice",
  "age": 30,
  "isStudent": false
}

YAML は波括弧・キーのクォート・カンマを省き、代わりにインデントで構造を示します。手で編集する設定ファイルでは、この見やすさが効いてきます。

YAMLの基本構文

キーと値

コロンとスペースで区切ってキーと値を記述します。クォートは基本的に不要です。

name: 田中太郎
age: 30
city: 東京

クォートが必要になるのは、別の型として解釈されてしまう値(version: "1.0"country: "NO"zip: "07030")や、-:[{# のような特殊文字で始まる値です。それ以外はクォートなしで書けます。

ネスト(階層構造)

インデントを使って階層を表現します。インデントにはスペースを使い、タブは使えません。スペース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 になる

アンカー・マルチドキュメント・チョンピングなど構文ごとの書き方を体系的に確認したい場合は YAML 書き方ガイド を参照してください。

JSON との詳しい比較は YAMLとJSONの違い で解説しています。

YAMLとJSONの変換

YAML と JSON は表現力がほぼ同じで、相互変換が可能です。YAML で書いた設定を JSON として API に渡したい場合や、JSON のデータを人が読みやすい YAML に変換したい場合があります。

YAML to JSON を使えば、ブラウザ上で手軽に YAML から JSON への変換ができます。変換ルールの詳しい解説は YAMLをJSONに変換する方法 を参照してください。

逆方向の変換には JSON to YAML 変換ツール が使えます。JSON の API レスポンスや設定をブラウザ内で読みやすい YAML に変換でき、Kubernetes マニフェストや Docker Compose の作成に便利です。変換ルールの詳細は JSON を YAML に変換する方法 で解説しています。

よくある質問

YAML は何の略ですか?

「YAML Ain't Markup Language」の略です。もともとは「Yet Another Markup Language(また別のマークアップ言語)」でしたが、マークアップ言語ではなくデータ記述のための形式であることを示すために、再帰的な名前に改められました。

YAML はプログラミング言語ですか?

いいえ。YAML はデータのシリアライゼーション(直列化)フォーマットで、設定ファイルやデータの受け渡しに使います。条件分岐やループといった制御構文はありません。

.yml.yaml に違いはありますか?

ありません。どちらの拡張子も YAML パーサーはまったく同じように扱います。公式仕様では .yaml を推奨していますが、1 文字短い .yml も広く使われています。

なぜ Kubernetes や GitHub Actions は YAML を使うのですか?

人が読み書きしやすく、コメントで「なぜこの値なのか」を残せるためです。波括弧やカンマがないぶん、手で編集する設定ファイルに向いています。

YAML と JSON はどう違いますか?

データモデルは同じですが、YAML はコメント・複数行文字列・アンカー(再利用)が書け、構造をインデントで表します。JSON はより厳格でパースが速く、API のやり取りに向いています。並べた比較は YAMLとJSONの違い で解説しています。

country: NO と書いたのに false になってしまうのはなぜですか?

YAML 1.1 系のパーサ(PyYAML など、いまも広く使われています)は、クォートなしの NO を真偽値 false として解釈します。これは「Norway problem」と呼ばれる有名な落とし穴です。country: "NO" のようにクォートすれば文字列のまま残ります。詳しくは YAML 書き方ガイド で解説しています。

まとめ

  • YAML はインデントで構造を表現する人間に読みやすいデータ形式
  • コメントが書けるため、設定ファイルに説明を残せる
  • Kubernetes、GitHub Actions、Docker Compose など DevOps 領域で広く使われている
  • インデントのズレや暗黙の型変換には注意が必要
  • JSON との相互変換は YAML to JSON で簡単にできる

関連記事