本文へ移動
Develop Tools
← 使い方ガイドへ戻る

YAMLの構文エラーを見つける方法|エラー行・インデントをチェック

YAMLが読み込めないときは、見た目だけで原因を決めずParserが最初に停止した行・列を確認します。前行の構造破損が次の行で検出されることもあるため、周辺の階層を一緒に見ます。

YAMLを解析し、Validまたは行・列付きエラーへ分岐する確認手順
YAMLを解析し、Validまたは行・列付きエラーへ分岐する確認手順

YAMLを整形・構文チェックする

現在のYAMLをBrowser内で解析し、行・列付きの構文エラーを確認してから整形またはJSON変換できます。

YAML整形・構文チェック・JSON変換ツールを開く

結論:最初のErrorと一段上の階層から確認する

構文チェックを実行すると、現行ツールはError Code、日本語Message、Parser詳細、行・列、該当行、Caretを表示します。Jumpボタンで入力位置へ移動し、同じ階層のSiblingと空白数を比較します。

よくある原因はTab、Indentずれ、MappingのColon、SequenceのDash、閉じQuote・Bracket不足、Block Scalarの追加Indent、Duplicate Keyです。Messageだけで断定せず周辺を確認します。

症状から確認箇所を絞る

症状主な候補先に見る場所
BAD_INDENT空白数・Tab同じ階層のSibling
MISSING_CHARQuote・Bracket不足直前のScalar
DUPLICATE_KEY同じMapping内のKey重複表示行と同名Key
UNRESOLVED_TAGCustom TagTag定義と利用先
Unexpected token記号・構造破損直前行から表示位置

修正後は再チェックする

一つ目のエラーでParserが止まると、後続エラーがまだ表示されないことがあります。一箇所を直すたびに再チェックし、Errorが0になったら整形結果と元データを比較します。

DevelopToolsのYAMLツールで確認できること

ツールは貼り付け・.yaml・.ymlのYAMLをBrowser内のyaml 2.9.0で解析します。YAML 1.2 coreと1.1を切り替え、整形、構文チェック、YAML→JSONを実行します。

項目現行ツールの対応
入力貼り付け、.yaml・.ymlファイル選択、1ファイルのDrag & Drop
整形2・4スペース、改行維持・LF・CRLF、行幅なし・80・120、末尾改行
検証行・列・文字位置、抜粋とキャレット、エラー・警告一覧、重複キー検出
構造コメント、空行、アンカー、エイリアス、複数ドキュメント、Block Scalar
変換YAML→JSON。単一文書は値、複数文書は配列として出力
未対応JSON→YAML、Kubernetes等のSchema検証、Custom Tagの実行、外部参照の取得

整形後はコメント位置が変わる場合があります。JSON変換ではコメント、アンカー名、YAML固有表現が失われるため、元ファイルと結果を比較します。

YAML構文とサービス固有ルールを分ける

YAML ParserがValidと判定するのは、Mapping、Sequence、Scalar、Indentationなどの文法として読み込めるという意味です。apiVersionが実在するか、GitHub Actionsのjobs配下に必要なキーがあるか、Compose Specificationに適合するかまでは判定しません。

Kubernetesではkubectlのserver-sideまたはclient-side validation、GitHub ActionsではWorkflow Syntax、Docker ComposeではCompose Specificationと実行時のエラーを別に確認します。まずYAML構文を直し、その後に利用先固有の検証へ進むと原因を切り分けやすくなります。

「YAMLとしてValid」と「Kubernetes・GitHub Actions・Docker Composeの設定としてValid」は同じではありません。

構文エラーを安全に切り分ける共通手順

  1. 元のYAMLを複製し、Access Token、Password、Secretなどをマスキングします。
  2. YAML 1.1または1.2を利用先へ合わせて選び、最初に構文チェックします。
  3. 最初のエラー行・列だけでなく、その直前のインデント、Quote、Colon、Dashを確認します。
  4. 一箇所を修正して再チェックし、新しいエラー位置へ進みます。
  5. 必要ならJSONへ変換し、MappingとSequenceの親子関係を括弧で確認します。
  6. 構文Valid後に利用先固有のValidatorや実行コマンドで意味を検証します。

Parserが停止した位置は、構造を壊した文字そのものではなく「それ以上解析できなくなった位置」の場合があります。前行と一段上の階層も確認します。

機密YAMLと大きなファイルを扱う注意点

入力、ファイル読込、解析、整形、JSON変換、コピー、保存はBrowser内で完結します。LocalStorageに保存するのはインデント、改行、YAML Version、Theme、Font、Editor Sizeなどの設定だけで、YAML本文や処理履歴は保存しません。

処理はWeb Workerを優先します。50万文字を超える入力ではEditorの構文色分けを省略しますが、整形・検証・変換は継続します。全入力、構文木、出力をMemoryへ保持するため、処理可能なSizeは端末とBrowserの空きMemoryに依存します。

  • Secret、Token、接続文字列、個人情報は共有前にマスキングする
  • 大きなファイルは対象Documentを分け、他の重いTabを閉じる
  • 元ファイルを残し、別名保存した結果を差分確認する
  • Custom Tagや外部Resourceをツールが実行・取得するとは考えない

YAMLと利用先仕様の一次資料

YAML文法はYAML 1.2.2公式仕様、Parser挙動はyaml公式Documentを基準にします。Kubernetes、GitHub Actions、Docker Compose、yqは各公式Documentで固有の構造やCommandを確認します。

具体例:行・列から閉じQuote不足を探す

name: "billing の次行でErrorになるYAMLを使います。まず元データを残し、Secretなどをテスト用の値へ置き換えます。

表示行の直前へ戻ってDouble Quoteを閉じ、再チェックします。最後にScalar値、次行のKey、Error件数、利用先のValidationを確認し、修正前後で意図しない値変更がないか比較します。

  1. YAMLを貼り付けるか、.yaml・.ymlファイルを1件読み込みます。
  2. 利用先に合わせてYAML 1.2または1.1を選び、構文チェックします。
  3. 行・列とキャレットが示す位置の前後を確認します。
  4. 一箇所を修正し、必要ならJSON変換で階層を見ます。
  5. 再チェックしてValidになった後、別名で保存します。

整形とJSON変換は自動修復ではありません。変換結果を仕様書、元データ、利用先のValidatorと照合してください。

よくある質問

入力したYAMLはサーバーへ送信されますか?
送信されません。入力、ファイル読込、解析、整形、JSON変換、コピー、保存はブラウザ内で処理します。LocalStorageへ残るのは表示・整形設定だけです。
構文チェックがValidならKubernetesやGitHub Actionsでも動きますか?
保証されません。YAML構文の確認後に、Kubernetes API、GitHub Actions Workflow Syntax、Compose Specificationなど利用先固有の検証が必要です。