DevToolBox無料
ブログ

YAML構文と検証:よくあるエラーと修正方法

9分by DevToolBox

YAMLはDocker、Kubernetes、CI/CDパイプラインなど多くのツールで使用される設定フォーマットです。人間に優しい構文にもかかわらず、間違いやすい部分があります。

YAMLの使用場所

  • Docker Compose
  • Kubernetesマニフェスト
  • GitHub Actions / GitLab CI
  • Ansible Playbook
  • 設定ファイル

基本構文ルール

インデント

YAMLはスペース(タブは不可)でインデントします:

# ✅ Correct (2-space indentation)
server:
  host: localhost
  port: 8080
  database:
    name: myapp
    pool: 10

# ❌ Wrong (tab characters or inconsistent spaces)
server:
	host: localhost    # Tab character - INVALID!
   port: 8080        # 3 spaces - inconsistent!

キー・バリューペア

コロンとスペースで区切ります:

# ✅ Correct
name: John Doe
port: 8080

# ❌ Wrong - missing space after colon
name:John Doe

複数行文字列

YAMLは2つのブロックスカラースタイルを提供します:

# | (literal block) - preserves newlines
description: |
  This is line one.
  This is line two.
  Each newline is preserved.

# > (folded block) - folds newlines to spaces
description: >
  This is a long paragraph
  that will be joined into
  a single line.

データ型

構文
Stringplain, "quoted", 'quoted'name: John
Integer42, 0xFF, 0o77port: 8080
Float3.14, .inf, .nanpi: 3.14159
Booleantrue/falsedebug: true
Nullnull, ~, (empty)value: null
DateYYYY-MM-DDdate: 2026-02-10

「ノルウェー問題」

YAML 1.1では`NO`がboolean `false`として解釈されます。引用符を使いましょう:

# ❌ YAML 1.1 interprets these as booleans!
country: NO        # → false
answer: yes        # → true
switch: on         # → true

# ✅ Fix: quote the values
country: "NO"      # → string "NO"
answer: "yes"      # → string "yes"
switch: "on"       # → string "on"

コレクション

# List (sequence)
fruits:
  - apple
  - banana
  - cherry

# Nested map
database:
  host: localhost
  port: 5432
  credentials:
    user: admin
    password: secret

# Inline / Flow style
fruits: [apple, banana, cherry]
point: {x: 10, y: 20}

よくある10のエラー

#エラー原因修正
1タブ文字エラータブ文字でインデントスペースに置換
2不統一なインデント2スペースと4スペースの混在統一したインデントを使用
3コロン後のスペース欠落`key:value`と書くコロン後にスペースを入れる
4引用符なしの特殊文字:や#を含む値に引用符なし特殊文字を含む文字列を引用
5ブール値の暗黙変換yes/no/on/offがブール値に引用符で囲む
6コロンを含む文字列URLの2番目のコロンで切れる値全体を引用
7重複キー同じキーが2回出現重複キーを削除
8末尾の空白値の後に不可視のスペースエディタで末尾空白を削除
9リストインデントエラーリスト項目が親キーと揃っていないインデントレベルを揃える
10ドキュメント区切り欠落複数ドキュメントに`---`なし`---`を追加

YAML vs JSON vs TOML

機能YAMLJSONTOML
Comments# supportNone# support
Multi-line strings| and >\\n only""" triple quotes
Data typesRich (dates, etc.)Basic (6 types)Rich (dates, etc.)
ReadabilityHighMediumHigh
Machine parsingComplexSimpleMedium
Best forConfig filesAPIs, data exchangeApp config

ベストプラクティス

  • CI/CDでYAMLリンターを使用
  • エディタで空白文字を表示
  • 2スペースインデントを使用
  • 誤解される可能性のある文字列を引用
  • スキーマバリデーションを使用
  • ファイルを小さくモジュラーに

FAQ

YAMLでタブは使えますか?

いいえ。YAMLはインデントにタブ文字を厳格に禁止しています。

シングルクォートとダブルクォートの違いは?

シングルクォートはリテラル文字列、ダブルクォートはエスケープシーケンスを許可します。

YAMLでnullを表現するには?

`null`、`~`、または空の値を使用します。

なぜYAMLは"NO"をfalseとして扱うのですか?

YAML 1.1仕様がyes/no等をブール値として扱うためです。YAML 1.2ではtrue/falseのみ認識します。

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

最新情報を受け取る

毎週の開発ヒントと新ツール情報。

スパムなし。いつでも解除可能。

Try These Related Tools

YMLYAML Validator & FormatterY{}JSON ↔ YAML ConverterTYTOML ↔ YAML🐳Docker Compose Generator

Related Articles

JSON to Dart: Flutter モデルクラス完全ガイド

JSONをFlutter用のDartモデルクラスに変換する方法。fromJson、toJson、null safety、json_serializable。

Docker Compose YAML検証:よくある10の構文エラーと修正方法

Docker Compose YAMLエラーで時間を無駄にしない。よくある10の構文ミスを特定・修正する方法。

JSON Schema バリデーション:型、ツール、ベストプラクティス

JSON Schema バリデーションのすべて:基本型から高度なパターン、バリデーションライブラリ、TypeScript や API との統合まで。

JSON-YAML 変換オンラインガイド:構文、ツール、ベストプラクティス

JSON と YAML の変換完全ガイド。構文比較、js-yaml、PyYAML、yq CLI、Kubernetes、Docker Compose、YAML の落とし穴とセキュリティ。