本文へスキップ

YAMLフォーマッター・検証

YAML Formatter & Validator

YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。

YAMLファイルのインデントを一貫した形に直し、別のパーサなら違う読み方をする場所を教えます。コメント・アンカー・タグ・ブロックスカラーを保つYAML 1.2のリーダーなので、出力は体裁だけを直した元の文書です。コメントを捨ててしまうデータモデルを往復することはありません。

🔒 ブラウザの中だけで動きますyamlformatvalidateconfig
出力
インデント

YAML入力

.yaml ファイルを置く

このタブの中だけで読みます。アップロードはしません。

整形されたYAML

整形しました。

読めてはいますが、パーサによって解釈が分かれるところ

  • 19:22 — `no` はYAML 1.2では文字列 "no" です。YAML 1.1のパーサはこれを真偽値として読みます。両者を一致させるには、引用符で囲むか true/false と書いてください。

文書

1

キー

30

リスト項目

8

アンカー / エイリアス

1 / 1

警告

1

この整形ツールがすること、しないこと

  • · YAML 1.2のコアスキーマで読みます。 yes・no・on・off は文字列で、 0755は8進数ではなく10進数の755です。1.1のパーサなら別に読む値は、上に警告として挙げます。
  • · コメント、アンカー(&)、エイリアス(*)、タグ、そして |・> のブロックスカラーはすべて保ちます。値の順序も変えません。
  • · タブによるインデント、キーの重複、定義前に使われたエイリアス、閉じていない引用符は、いずれも行と列を付けてエラーとして捕まえます。
  • · マージキー << はYAML 1.1の機能ですが、docker-composeやAnsibleのファイルであまりに広く使われているため、JSONへの変換時には適用したうえで、そう警告します。
  • · [a, b] のようなフローコレクションの中のコメントは、付く行がないので失われます。それ以外のコメントはすべて残ります。

JSONやTOMLに変換するなら JSON ⇄ YAML変換を、スキーマと突き合わせるなら JSON Schema検証をどうぞ。

使い方

  1. マニフェストか設定を貼り付けます

    Kubernetesのマニフェスト、CIの設定、docker-composeなどです。`---`で区切られた複数の文書はストリームとして読み、別々に数えます。

  2. 一覧の書き方を選びます

    実際に議論になる唯一の設定です。`- 項目`をキーと同じ桁に置くか、1段下げるかです。どちらも正しいYAMLで、Kubernetesのマニフェストは慣例として同じ桁に置きます。

  3. 警告を読みます

    読む側がどのYAMLのバージョンを実装しているかで意味の変わる値——`yes`、`no`、`0755`——を、行と列とともに並べます。別のツールに持っていったときにデプロイを壊すのは、これらです。

  4. あるいは出力をJSONに切り替えます

    同じパース結果をJSONとして表示します。ある値が実際に何として解決されたのか——マージキーが何に展開されたのかまで——をいちばん早く確かめる方法です。

よくある質問

ここで`no`が文字列になるのはなぜですか

YAML 1.2のコアスキーマがそう定めているからです。真偽値は`true`と`false`だけです。PyYAMLがいまも既定にしているYAML 1.1は、`no`、`off`、`n`を偽として読みます。2つの解釈が食い違う値には警告の印を付けます。体裁の話ではなく、実際の動作の違いだからです。

アンカーとエイリアスは残りますか

YAMLの出力では残ります。`&res`と`*res`は書いたとおりに出て、その数も統計に表示されます。JSONの表示では展開せざるをえません。JSONには「同じノードをもう一度」と言う方法がないからです。

マージキーには対応していますか

`<<:`はYAML 1.1の機能で、1.2の一部ではありません。ただしdocker-composeやAnsibleのファイルが絶えず使うので、JSONへ変換するときは適用し、そうしたという警告を添えます。YAMLの出力では、書かれたとおりに残します。

コメントが1つ消えました。なぜですか

ほぼ間違いなく、フロー形式のコレクションの中にあったコメントです——`[a, # メモ\n b]`のような場合です。フロー形式のコレクションは1行に出力し直されるので、その中のコメントには付く先の行がありません。自分の行にあるコメントと、値の後ろに付いたコメントは、すべて残ります。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。