YAML意味差チェッカー

YAML文書を貼り付けると、パーサーがYAML 1.1またはYAML 1.2のタグ解決規則に従う場合に値がどう異なるかを確認できます。構文検証ではなく、意味の差を調べます。

ブラウザー内でローカルに処理します。ファイルがアップロードされることはありません。

使い方 ツール

  1. YAMLを貼り付けるか.yaml/.ymlファイルを読み込みます。データはブラウザーから外へ送信されません。
  2. 「YAMLを確認」を選びます。
  3. 指摘された値ごとにYAML 1.1と1.2での意味と影響を確認します。
  4. 提案された移植可能な表記を使うか、曖昧さを除いた修正版全体をコピーします。

前提条件

出典と参考データ

方法論

文書中の各plainスカラーをYAML 1.1のタグ解決正規表現とYAML 1.2 Core Schema正規表現で個別に解決します。型または値が異なる場合に指摘します。真偽値・nullの不一致は真偽判定を暗黙に逆転させるため「問題となる可能性が高い」、数値・タイムスタンプの不一致は値や型を変えるため「要確認」として示します。

計算例

有名な「Norway問題」

入力項目: country: NO

結果: YAML 1.1ではNOを真偽値false、YAML 1.2では文字列「NO」と解釈します。問題となる可能性が高い差として指摘し、`country: 'NO'`を提案します。

先頭ゼロ付き数値

入力項目: retries: 0123

結果: YAML 1.1では0123を8進数(83)、YAML 1.2では10進数(123)と解釈します。同じ文字列が異なる数を意味します。

実用的なアドバイス
よくある間違い

よくある質問

なぜ`enabled: yes`がtrueになるのですか?

YAML 1.1の真偽値語一覧では、大文字・小文字を問わず`yes`をtrueに解決します。YAML 1.2 Core Schemaが真偽値として認識するのはtrue/falseだけなので、同じ文字列は`yes`という文字列になります。

YAMLのNorway問題とは?

ノルウェーのISO国コードNOは、YAML 1.1でfalseとして認識される語でもあります。そのため引用符のない`country: NO`は、1.1パーサーでは`country: false`に変わります。

値を引用符で囲めば常に安全ですか?

はい。引用されたスカラー(`"yes"`、`'NO'`)はすべてのYAMLスキーマで明示的な文字列になります。このツールはすでに引用済みの値を指摘しません。

PyYAMLが`yes`や`no`を真偽値にするのはなぜですか?

一般的なPyYAML SafeLoaderはYAML 1.1式の真偽値解決を適用し、plainな`yes`をtrue、`no`をfalseとします。そのため`country: NO`は真偽値として読み込まれる場合がありますが、YAML 1.2 Core SchemaではNOは文字列です。このツールは公表スキーマ規則を比較するもので、PyYAMLや特定ローダーの設定を実行・検証しません。

最終確認日: 2026-09-25

完全なYAMLパーサーではなく、スカラー解決チェッカーです。flow形式、ブロックスカラー、アンカー/エイリアス、マージキーは解析しません(より広い検査にはYAML Cross-Runtime Preflightを参照)。また公表スキーマ同士を比較し、仕様と異なることもある個別ライブラリの実動作は再現しません。

テーマとツールの設定、保存済みリストと最近使用したリストは、このブラウザー内にのみ保存されます。