YAML フォーマッター

整形はこのブラウザ内で実行されます。YAML はアップロードされません。

最大100万文字、最大100ドキュメントまでの YAML を貼り付けてください。整形はこのブラウザ内で行われます。

YAML は構文には寛容ですが、インデントには容赦がありません。スペース 1 つのずれでキーが静かにリスト項目へ変わり、混在したインデントはレビューを苦行にします。このフォーマッターは js-yaml エンジン(YAML 1.2 コアスキーマ)を使って入力をブラウザ内で直接解析し、選んだインデント、コレクションのスタイル、クォート、キーの順序、行幅で出力し直します。設定ファイルがバージョン管理できれいな diff を生み、誰にとっても読みやすい状態を保てます。

YAML の整形手順

  1. 1

    YAML を貼り付ける

    1 つのストリームに最大100万文字、最大100ドキュメントまで。何もアップロードされません。解析はブラウザ内で行われます。

  2. 2

    オプションを選ぶ

    インデント幅、ブロックまたはフローのスタイル、クォート、キーの並べ替え、行幅を選べます。

  3. 3

    整形する

    ツールが各ドキュメントを正規の空白と選んだスタイルで組み立て直します。

  4. 4

    コピーしてコミット

    出力は構造的に同一の YAML なので、そのまま設定ファイルに貼り戻せます。

整形前と整形後

乱れた入力:

server:
  port:   8080
  hosts: ["api.example.com",  "api2.example.com"]
  timeout:  30
  debug: true

整形後(スペース2つ、ブロックスタイル):

server:
  port: 8080
  hosts:
    - api.example.com
    - api2.example.com
  timeout: 30
  debug: true

整形オプション

オプション デフォルト
インデント幅 2、4 2
コレクションのスタイル ブロック、フロー ブロック
クォート 最小限、ダブル、シングル 最小限
キーの並べ替え 元の順序、アルファベット順 元の順序
行幅 80、120、無制限 120

クォートのルール

たいていは最小限のクォートで十分です。裸のままでは危険な場合を除き、文字列は引用符なしのままになります。次のケースではフォーマッターが自動的にクォートを付けます:

  • 文字列としてのレガシーなブール値: yesnoonoffyn。YAML 1.2 はこれらを文字列として読みますが、多くのパーサーはいまだに YAML 1.1 に従い、クォートなしの nofalse になります。フォーマッターは出力で必ずクォートを付けるため、有名なノルウェー問題(国リストの NOfalse と読まれる)がファイルの利用者を噛むことはありません。
  • 文字列としての数値: '007''3.14'。クォートがなければ整数や浮動小数点数として解析されてしまいます。
  • :#[{ などの文字を含む、または先頭が空白の文字列。裸で出力すると構造が変わってしまいます。

毎回の整形で行われるクリーンアップ

  • 行末の空白。 削除されます。
  • 混在した、または不揃いなインデント。 選んだインデント幅に正規化されます。
  • コレクション内の空行。 削除されます。
  • インデント内のタブ。 YAML では禁止です。パーサーは行番号を示す明確なエラーで入力を拒否するので、他のパーサーに拒否されるファイルを出荷する前に修正できます。

コメント、アンカー、マージキー

整形はドキュメントモデルを正規化するため、コミット前に知っておきたい制限があります:

  • コメントは削除されます。 パーサーはドキュメントをデータに解決するので、# コメントは整形後に残りません。コメントが大事な場合はコピーを取っておいてください。
  • アンカーとエイリアスは解決されます。 エイリアスで共有されたノードは共有されたままですが、&ref_0 のような生成名で出力し直され、元のアンカー名は保持されません。
  • マージキー(<<:)は解決され、マージ済みの値を持つ通常のマッピングになります。

複数ドキュメントのストリーム

複数ドキュメントのストリームに対応しています。各ドキュメントは独立して整形され、--- 区切りで再連結されます。1 回の実行で最大100ドキュメントまでです。

よくある質問

構造と値は同一のままで、変わるのは表現だけです(インデント、クォート、フローかブロックか、並べ替えを有効にした場合のキー順)。仕様として保持されないものが 2 つあります。コメントは削除され、アンカー名は再生成されます。

裸の文字列が別の型として解析されてしまう場合、安全のためにクォートが必要です。よくあるケースは、数字だけのキーや値、:# を含む文字列、そして YAML 1.1 のパーサーが true/false と読んでしまう yesno のようなレガシーなブール値です。

できません。スタイルのオプションはドキュメント全体に適用されます。ブロックはすべてのコレクションを行ごとに展開し、フローはコレクションをインラインで表記します。比較したい場合は、オプションを変えて 2 回整形してください。

いいえ。解析と整形は、同梱の js-yaml エンジンでブラウザ内で実行されます。YAML はサーバーを経由せず、保存されず、ページのアドレスに追加されることもありません。複数ステップの画面で結果を表示するために、このブラウザのセッション内にだけ保持されます。

関連ツール