本文へスキップ
Case Converter Online
ja

YAML整形・検証ツール

YAML を貼り付けると、インデントとスペースを整えたり、デプロイ前にエラーがないか確認したりできます。コメントは残り、問題は行と列で報告されます。

YAML を貼り付けるか、「サンプル」を押してください。Ctrl+Enter で整形できます。処理はすべてブラウザ内で行われます。

YAML整形ツールでできること

YAML は、Docker Compose ファイル、Kubernetes のマニフェスト、GitHub Actions のワークフロー、Ansible のプレイブック、そして多くのアプリの設定ファイルで使われている形式です。構造をインデントで表すため、スペースが1つずれただけでファイルの意味が変わったり、デプロイが止まったりします。このツールは YAML のインデントとスペースをそろえて書き直し、厳密なパーサーでチェックするので、問題をパイプラインではなくここで見つけられます。

操作は2つです。

  • 整形:インデント、コロンやハイフンの後のスペース、[ ] と { } の中のスペースをそろえます。
  • 検証:ファイルを解析して最初のエラーを報告します。正しい場合は短い概要を表示します。

使い方

  1. 左のボックスに YAML を貼り付けます。貼り付けた時点で整形されます。.yaml や .yml のファイルには ファイルを開く を、例を見たいときは サンプル を使うこともできます。
  2. インデント(スペース2つかスペース4つ)と 行の幅 を選びます。
  3. "text" より 'text' を使うプロジェクトなら、シングルクォート をオンにします。
  4. 整形 または 検証 を押します。Ctrl+Enter で最後の操作をもう一度実行できます。
  5. コピー を押すか、ダウンロード で .yaml ファイルとして保存します。

整形前と整形後

スペースがばらばらで、インデントがスペース4つの Docker Compose ファイルです。

version:   "3.8"
services:
    web:
        image:   "nginx:latest"
        ports:
            - "80:80"
        environment:
            - DEBUG=false
    db:
        image: postgres:16

スペース2つで 整形 した結果です。

version: "3.8"
services:
  web:
    image: "nginx:latest"
    ports:
      - "80:80"
    environment:
      - DEBUG=false
  db:
    image: postgres:16

フロー形式のコレクションはスペースが均等になります。tags: [ api, v2 ] と limits: {cpu: 1, memory: 512} は次のようになります。

tags: [api, v2]
limits: { cpu: 1, memory: 512 }

コメントは残ります。行末コメントの前の余分なスペースは整えられますが、コメントはその行に残ります。

# Database settings
db:
  host: localhost # local only
  port: 5432

シングルクォート をオンにすると、name: "web" は name: 'web' になります。"it's here" のようにアポストロフィを含む文字列は、エスケープが不要になるようダブルクォートのまま残ります。

検証で見つかるエラー

ツールによって YAML パーサーの厳しさは異なります。このツールは、ほかのツールでは通ってしまう問題も指摘します。以下は実際に表示されるメッセージです。

問題 メッセージ
同じキーが2回ある 3行目、1列目:Map keys must be unique
インデントにタブを使っている 2行目、1列目:Tabs are not allowed as indentation
1行だけスペース1つ分深くインデントしている 2行目、9列目:Nested mappings are not allowed in compact mappings

エラーの本文は YAML ライブラリのメッセージをそのまま表示するため、英語のままです。

特に重要なのは重複キーのチェックです。name: web、port: 80、name: api のようなファイルでは、多くのローダーが警告なしに最後の name だけを残します。入力欄で表示 を押すと、その行へ移動します。

--- で区切られた2つのドキュメントを含む正しいファイルでは、検証 が 正しい YAML です。ドキュメントは2件です。 と報告します。

ヒントと制限事項

  • キーの並べ替えや値の変更は行いません。yes、on、010 も書いたとおりに残ります。
  • 長い文字列の折り返しは変えません。折り畳み(>)ブロックやリテラル(|)ブロックの中身もそのままです。
  • アンカーとエイリアス(&name、*name)も書いたとおりに残ります。
  • YAML には一般的に使われる圧縮形式がないため、「圧縮」ボタンはありません。コンパクトなデータが必要な場合は、JSON YAML 変換ツール で YAML から JSON の方向に変換してください。

YAMLを整形するほかの方法

VS Code:Red Hat の YAML 拡張機能を入れると、整形機能と、Kubernetes のマニフェストなどに対するスキーマチェックが使えるようになります。インストール後に「ドキュメントのフォーマット」を実行してください。

yq:Go 版の yq(Mike Farah 作)は YAML を読み込んで書き直します。yq '.' file.yaml は、ファイルを yq 自身の一貫したスタイルで出力します。同じツールで値の検索や編集もできます。

Prettier:プロジェクトですでに Prettier を使っているなら、.yaml と .yml のファイルをこのページと同じルールで整形できます。

yamllint:ファイルを書き直さずにスタイルと構文をチェックする Python 製のツールで、CI で使うと便利です。

関連ツール

JSON と YAML を相互に変換するには JSON YAML 変換ツール を使ってください。JSON ファイルには JSON整形ツール を、Maven や Android などの XML 設定ファイルには XML整形ツール をお使いください。

YAML整形ツールのよくある質問

YAML のインデントにタブを使えないのはなぜですか?

YAML の仕様では、インデントにタブ文字は使えず、スペースしか認められていないからです。そのため「インデント」のメニューにはスペース2つとスペース4つしかなくタブの選択肢がありません。検証でもタブはエラーとして報告されます。

コメントは残りますか?

はい。コメントは元の位置に残ります。このツールが変えるのは、スペース、インデント、行のレイアウトだけです。キーと値の順序もそのままです。

重複したキーは見つけてくれますか?

はい。1つのマッピングに同じキーが2回出てくると、Map keys must be unique のようなエラーが2つ目のキーの行とともに表示されます。多くの YAML ツールは黙って最後の値だけを残すため、ミスが見過ごされることがあります。

複数のドキュメントを含むファイルも扱えますか?

はい。--- で区切られたドキュメントはまとめて整形され、「検証」ではいくつのドキュメントが見つかったかが表示されます。

Kubernetes の Secret や CI の設定ファイルに使っても安全ですか?

YAML はブラウザ内で処理され、アップロードされることはありません。ただし、会社のポリシーで禁止されている場合は、実際に使っている秘密情報をどの Web ページにも貼り付けないようにしてください。

その他のコード・データツール

すべてのツールを見る