DevToolBoxFREE
BlogAdvertise

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
この記事は役に立ちましたか?

Stay Updated

Get weekly dev tips and new tool announcements.

No spam. Unsubscribe anytime.

Partner Picks

Sponsor this article

Place your product next to this developer topic with tracked clicks.

Ask about article sponsorship

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 の落とし穴とセキュリティ。

This site uses cookies for analytics and to display ads. By continuing to browse, you agree. Privacy Policy