YAMLのインデントとホワイトスペース問題をデバッグ
パースエラーを引き起こすYAMLファイル内のタブ、ノーブレークスペース、混在インデントを検出します。YAMLの正確なホワイトスペース文字を可視化します。
Debugging
詳細な説明
YAMLとホワイトスペース:厳格な関係
YAMLはおそらく一般的に使用されるフォーマットの中で最もホワイトスペースに敏感です。インデントがスタイル的なものである多くの言語とは異なり、YAMLはインデントをコア構造メカニズムとして使用します。これにより不可視文字の問題に対して非常に脆弱になります。
YAMLのホワイトスペースルール
- インデントにはスペースのみ使用 — タブはYAML仕様で明示的に禁止
- マッピングまたはシーケンス内で一貫したインデント深度
- 末尾ホワイトスペースなし — 技術的には許可されますが、予期しないパースを引き起こす可能性
- 改行コードは一貫すべき(LF推奨)
一般的なYAMLのホワイトスペースバグ
1. インデント内のタブ文字
server:
host: localhost
\tport: 8080 # タブ文字!YAMLパーサーエラー
エラー:found character '\t' that cannot start any token
2. ノーブレークスペース
database:
host: localhost # コロンの後にスペースではなくNBSP
NBSPにより値に非標準のスペースが含まれるか、パーサーが完全に失敗します。
3. インデント深度の混在
services:
web:
image: nginx
port: 80 # 4スペースではなく5スペース — 見分けにくい!
意図したものとは異なるネスティングレベルが作成されます。
4. 末尾スペースが空値を作成
key: ··· # 末尾スペースにより空ではなく" "になる
ビジュアライザーでのデバッグ
- YAMLコンテンツをコピーしてホワイトスペースビジュアライザーに貼り付けます。
- Space、Tab、NBSPのトグルを有効にします。
- 左マージンをスキャン:インデントには青いドット(·)のみが見えるべきで、矢印(→)や度記号(°)は決してないはずです。
- インデントが一貫していることを確認 — 各レベルのドットを数えます。
- 見つかったタブやNBSPをクリーンアップし、修正されたYAMLをコピーします。
YAML FormatterでクリーニングされたYAMLのバリデーションと再フォーマットができます。
ユースケース
Kubernetesのデプロイが暗号的なYAMLパースエラーで失敗します。開発者がYAMLマニフェストをホワイトスペースビジュアライザーに貼り付けると、1行がStack Overflowの回答からコピーされたタブを使用し、残りがスペースを使用していることが判明します。タブを置換するとデプロイが成功します。