YAML実行環境横断事前チェック
GitHub Actions workflow、Docker Compose、Kubernetesマニフェスト、一般的なYAMLを貼り付け、構造や曖昧な値が読み手のツールによって異なって動作する箇所を確認します。YAML意味差チェッカーのYAML 1.1/1.2スカラー曖昧性(Norway問題など)をそのまま再利用し、アンカー/エイリアス、マージキー、タブ、重複キー、flow形式など実際のYAML利用者に関係する構造検査を追加します。
ブラウザー内でローカルに処理します。ファイルがアップロードされることはありません。
使い方 ツール
- YAMLを貼り付けるか.yaml/.ymlファイルを読み込みます。内容はブラウザー外へ送信されません。
- 「YAMLを確認」を選びます。
- 指摘ごとに影響する実行環境・ツールと理由を確認します。
- タブから空白への変換、曖昧スカラーの引用など、安全な書き換えだけを利用してください。アンカー、マージキー、重複キーは要求していない構造変更を避けるため指摘のみです。
前提条件
- スカラー曖昧性検査(規則1)はYAML意味差チェッカーと同じYAML 1.1対YAML 1.2 Core Schema比較を直接再利用します。たとえばGitHub Actions matrixの`flag: on`のような環境固有の問題として説明します。
- 構造検査(アンカー/エイリアス、マージキー、タブ、重複キー、flow形式)は意味差チェッカーと同じ限定的なブロックマッピング範囲に対するパターン/インデント検査で、完全なYAMLパーサーではありません。
- 「影響あり」はKubernetesのマージキー非対応やkubectlのエイリアス制限など、広く文書化された実際の制約を示し、全ツール全バージョンの監査ではありません。
出典と参考データ
方法論
2段階で解析します。まず各plainスカラーをYAML 1.1とYAML 1.2 Core Schemaで解決(YAML意味差チェッカーと同じロジック)し、差があれば実行環境上の意味を説明します。次に実際のYAML利用者で差がある構造を検査します:アンカー/エイリアス(再帰展開による資源枯渇防止のため制限するツールがある)、マージキー(YAML 1.1拡張でYAML 1.2仕様外、Kubernetesや厳格パーサーは非対応)、タブインデント(YAML仕様で禁止)、同一マッピングの重複キー(仕様未定義で多くは最後の値を黙って保持)、ブロック文書内のflow形式(低信頼度の参考情報)。
計算例
GitHub Actions matrixでフラグに見える値
入力項目: flag: on
結果: YAML意味差ツールのNorway問題検出を再利用し、YAML 1.1は`on`を真偽値true、YAML 1.2は文字列`on`と解釈します。matrix/env値なら文字列を意図した可能性があります。
Docker Composeのマージキー
入力項目: <<: *defaults
結果: マージキーはYAML 1.1拡張でYAML 1.2仕様外、Kubernetes処理や複数の厳格パーサーでも非対応のためエラーとして指摘します。自動修正せず、移植可能にするにはアンカー内容を手動で展開してください。
タブでインデントされたKubernetesマニフェスト
入力項目: \tname: demo
結果: タブは推奨されないだけでなくYAML仕様で禁止されるためエラーとして指摘し、各先頭タブを空白2つへ変換します。
実用的なアドバイス
- マージキーとタブインデントは必ず修正してください。仕様で禁止されるか、Kubernetesや厳格パーサーなど利用ツールが非対応としています。
- kubectlやセキュリティ重視のYAMLローダーを通す場合、YAML爆弾状の資源枯渇を防ぐためアンカー/エイリアス展開を制限することがあるので確認してください。
- 再利用スカラー曖昧性規則(規則1)で指摘された値はYAML意味差チェッカーと同様に再確認し、文字列の意図なら引用符で囲みます。
よくある間違い
- Docker Composeで使えたマージキーはKubernetesでも使えると思うこと。Kubernetesはマージキー対応を削除しました。
- ブロックをコピー後に元のキーを削除・変更し忘れ、最後の値を黙って保持する重複キーを作ること。
- タブインデントからコピーしてタブと空白を混在させること。一部パーサーは許容しますが多くは拒否し、エディターでは同じ見た目になる場合があります。
よくある質問
YAML意味差チェッカーと重複しているのはなぜ?
重複実装ではなく再利用しています。規則1はスカラー解決ロジックを直接呼び出し、意味差チェッカーが対象外とする構造検査(アンカー、マージキー、タブ、重複キー、flow形式)を追加します。
マージキーはエラーでアンカー/エイリアスは警告なのはなぜ?
マージキーはYAML 1.2仕様外でKubernetesなどが明示的に非対応とし、失敗の可能性が高いです。アンカー/エイリアスは有効な基本YAML機能で広く使われますが、安全上の理由で制限するツールもあり、確実性は低いリスクです。
アンカー、マージキー、重複キーを自動修正しないのはなぜ?
アンカーの展開内容や重複キーのどちらが意図されたかなど、文書の意味を理解する必要があります。機械的なテキスト変更では決められないため推測せず、手動対応を説明します。
最終確認日: 2026-09-26
限定的なパターン構造検査とスカラー曖昧性比較の再利用であり、完全なYAMLパーサーや個別ツールの厳密な動作検証ではありません。flow形式内部のスカラー曖昧性は検査せず、重複キーは文書ツリーでなくインデントからマッピング階層を推定します。
テーマとツールの設定、保存済みリストと最近使用したリストは、このブラウザー内にのみ保存されます。