YAMLとは
YAML(YAML Ain’t Markup Language)は、人間が読みやすいデータ記述フォーマットです。JSONやXMLと同じ目的で使われますが、インデント(字下げ)で構造を表現するため、より直感的に読み書きできます。
現在、以下の場面で広く使われています:
- Docker Compose —
docker-compose.yml - GitHub Actions —
.github/workflows/*.yml - Kubernetes — マニフェストファイル
- CI/CD — CircleCI, GitLab CI, etc.
- 設定ファイル — Prettier, ESLint, etc.
YAMLの基本構文
キーと値
name: assisty
version: 1.0
description: "無料Webツール集"
ネスト(階層構造)
server:
host: localhost
port: 3000
ssl:
enabled: true
cert: /path/to/cert.pem
注意: インデントにはスペースのみ使用可能。タブ文字はエラーになります。
リスト(配列)
fruits:
- apple
- banana
- cherry
複合構造
users:
- name: 田中太郎
age: 30
roles:
- admin
- editor
- name: 佐藤花子
age: 25
roles:
- viewer
docker-compose.ymlの書き方
基本構造
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- api
api:
build: ./api
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://user:pass@db:5432/mydb
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
よく使うオプション
| オプション | 説明 | 例 |
|---|---|---|
image | 使用するDockerイメージ | nginx:latest |
build | Dockerfileのパス | ./api |
ports | ポートマッピング | "3000:3000" |
volumes | ボリュームマウント | ./data:/app/data |
environment | 環境変数 | NODE_ENV=production |
depends_on | 依存関係 | - db |
restart | 再起動ポリシー | always |
よくある構文エラーと直し方
1. タブ文字の使用
# ❌ エラー: タブ文字
server:
port: 3000
# ✅ 正解: スペース(2つ or 4つ)
server:
port: 3000
エディタの設定で「タブをスペースに変換」を有効にしましょう。
2. インデントの不一致
# ❌ エラー: インデントが揃っていない
services:
web:
image: nginx
ports:
- "80:80"
# ✅ 正解: 同じ階層は同じインデント
services:
web:
image: nginx
ports:
- "80:80"
3. コロン後のスペース忘れ
# ❌ エラー: コロン後にスペースがない
name:value
# ✅ 正解
name: value
4. 特殊文字のエスケープ忘れ
# ❌ エラー: コロンを含む値
description: Note: this is important
# ✅ 正解: クォートで囲む
description: "Note: this is important"
5. ブール値の意図しない変換
# ⚠️ "yes", "no", "on", "off" はブール値として解釈される
country: no # false として解釈される!
# ✅ 正解: クォートで囲む
country: "no" # 文字列 "no" として解釈される
YAML vs JSON
| 特徴 | YAML | JSON |
|---|---|---|
| 可読性 | 高い(インデント) | 中程度(括弧) |
| コメント | # で記述可能 | 不可 |
| データ型 | 自動推論 | 明示的 |
| 用途 | 設定ファイル | API通信 |
| 学習コスト | やや高い | 低い |
YAMLはJSONの上位互換です。有効なJSONは有効なYAMLとしても読めます。
ツールで構文チェック
YAMLの構文エラーは目視で見つけにくいことがあります。AssistyのYAML整形ツールを使えば、リアルタイムで構文チェックと整形ができます。JSON↔YAML の相互変換にも対応しています。
まとめ
- YAMLはインデントで構造を表現する読みやすいフォーマット
- Docker Compose、GitHub Actions、Kubernetesなどで広く使用
- タブ文字禁止、コロン後のスペース必須が基本ルール
- 特殊文字やブール値に注意してクォートを使う
- 構文チェックにはYAML整形ツールが便利
この記事の内容はAssistyのYAML整形で実際にお試しいただけます。