YAMLフォーマッター:オンラインでYAMLのフォーマット、検証、整形
YAML(YAML Ain't Markup Language)は、クラウドネイティブエコシステムの設定形式として選ばれるようになりました——Kubernetesマニフェスト、Docker Composeファイル、Ansibleプレイブック、GitHub Actionsワークフロー、CI/CDパイプラインはすべてYAMLで記述されています。人間に優しい構文(ブラケットなし、単純な文字列にはクォート不要、コメント可能)は設定用にJSONよりも読みやすくなっていますが、構造を定義するためにインデントに依存しているため、特にエラーが発生しやすくなっています。2スペースが期待される場所での単一のタブ文字や、間違ったネストレベルでのキーの位置ずれが、設定全体のセマンティクスをサイレントに変更したり——または12行目で発生した問題に対して47行目で不可解な解析エラーを引き起こしたりする可能性があります。当YAMLフォーマッターは、一貫した2スペースインデントで乱雑なYAMLを整形し、正確なエラー位置と平易な英語の説明で構文を検証し、YAMLとJSONの間で双方向に変換します。一般的な落とし穴——インデントに使用されたタブ(YAMLはタブを禁止)、同一ドキュメント内の一貫性のないインデント、重複キー(YAMLはサイレントに上書き)、ノルウェー問題('NO'のようなクォートなしの国コードがブール値falseとして解釈される)——を検出します。このツールはマルチドキュメントYAMLファイル(---で区切られたもの)を処理し、アンカー、エイリアス、タグ、複数行文字列スタイルを含むYAML 1.2仕様をサポートしています。すべての処理はブラウザ内で実行されます——Kubernetesシークレット、デプロイメント設定、CI/CD認証情報がお使いのマシンから外部に出ることはありません。
YAMLフォーマッター
無料 · 登録不要
ステップバイステップガイド
YAMLを貼り付け、入力、またはアップロード
YAMLをエディタに貼り付けるか、.yaml / .ymlファイルをアップロードします。エディタにはスカラー、キー、シーケンス、アンカーの構文ハイライトが含まれます。マルチドキュメントYAML(3つのハイフン---で区切られたドキュメント)が検出され、各ドキュメントが独立してフォーマットされます。このツールは文字列フィールドに埋め込まれたYAML(例:CloudFormationテンプレート)も処理し、埋め込みYAMLを抽出してフォーマットします。
フォーマットと検証
「フォーマット」をクリックして、一貫した2スペースインデント、適切なクォーティング(曖昧な値に必要に応じてクォートを追加)、正規化されたアンカー/エイリアス参照でYAMLを整形します。バリデーターは自動的に実行され、以下をフラグ付けします:タブ文字(正確な行と列)、一貫性のないインデント、重複するマッピングキー、YAMLの暗黙的な型強制によって誤って解釈される可能性のある値。各エラーは修正提案付きでエディタの位置にリンクします。
JSONに変換またはダウンロード
「JSONに変換」ボタンを使用して、YAMLから同等のJSONを生成します——ツールやAPIがJSON入力を要求するが、設定をYAMLで書くことを好む場合に便利です。逆方向(「JSONから変換」)も利用可能です。フォーマットされたYAMLを.yamlファイルとしてダウンロードするか、クリップボードにコピーするか、解析されたデータ構造をインタラクティブツリーとして表示します。
ヒントとベストプラクティス
YAML 1.2(2009年)は最も悪名高いYAMLの落とし穴を解決しました:YAML 1.1では、クォートなしの「yes」、「no」、「on」、「off」、「true」、「false」はブール値として解釈されます。「NO」(ノルウェー)や「YES」のような国コードはブール値のfalseとtrueになります——このバグはあまりに一般的で「ノルウェー問題」と呼ばれています。YAML 1.2は「true」と「false」(大文字小文字区別なし)のみをブール値として認識します。当フォーマッターは曖昧な値を検出し、クォートすることを推奨します。
YAMLインデントの黄金律:ネストレベルごとに2スペースを使用し、絶対にタブを使用しないこと。YAML 1.2はインデント用のタブ文字を明示的に禁止しています(タブにはインデント値がありません——パーサーの列カウンターでは0として表示されます)。スペースをタブに変換したソース(一部のチャットアプリケーション、Webフォーム、PDF)からYAMLをコピーした場合、バリデーターはすべてのタブをその正確な位置でフラグ付けします。
YAMLアンカー(&)とエイリアス(*)を使用すると、値を一度定義し、同じドキュメント内で複数回参照できます。例えば:`defaults: &defaults timeout: 30 retries: 3` はアンカーを定義し、`service_a: <<: *defaults` はそれらのデフォルトをservice_aにマージします。これはDocker Composeでサービス間で共通の設定を共有するため、およびKubernetesで大きなマニフェストの繰り返しを減らすために広く使用されています。
YAMLの複数行文字列には2つのスタイルがあります:リテラルブロックスカラー(|)は改行を保持します——シェルスクリプト、SQLクエリ、または改行が重要なコンテンツに使用します;折りたたみブロックスカラー(>)は改行をスペースに折りたたみます(HTMLのように)——長い段落、説明、またはリフローすべきテキストに使用します。デフォルトの末尾改行動作を|-(末尾改行を削除)または|+(追加のものを含めて末尾改行を保持)で上書きします。
YAMLのコメント(# コメント)サポートは、設定ファイルにおけるJSONに対する唯一最大の利点です。コメントを使用すると、値が選ばれた理由を文書化し、Jiraチケットにリンクし、TODOをマークし、自明でない設定を説明できます——すべてパーサーを壊すことなく。JSONやJSON5の回避策("__comment": "explanation"のようなもの)はハックです。YAMLではコメントは第一級市民です。
YAMLマージキー(<<)は、あるマッピングのキーを別のマッピングにマージする特別なマッピングキーです。YAML 1.1仕様の一部であり、YAML 1.2コアには含まれていませんが広くサポートされています。Docker Composeはサービステンプレートを定義するためにアンカーと共にマージキーを多用しています。ただし、マージキーにはネストされたマッピングに関する既知のエッジケースがあります——ディープマージとシャローマージの期待について明示的になってください。
デプロイ前にCI/CDでYAMLファイルを検証してください。ローカルテストでは通るがCIでは失敗する不正な形式のYAMLは開発者の時間を無駄にします。YAMLリントステップをパイプラインに追加してください:`yamllint .` または `python -c "import yaml; yaml.safe_load(open('config.yaml'))"`。当オンラインバリデーターはGitHub Actionsと統合されました——YAML設定の検証ステータスを表示するバッジをリポジトリに追加してください。
「YAMLからJSONへの変換エラー」という不可解なメッセージで起動に失敗するKubernetesポッドをデバッグする場合、問題はほぼ常にマニフェスト内のYAMLフォーマットエラーです。当フォーマッターはインデントエラー、重複キー(YAMLでは最後の値がサイレントに優先されます——不可解に無視される設定の一般的な原因)、間違ったネストレベルに配置されたフィールドを検出します。マニフェストをフォーマットしてから、kubectlで再適用してください。
よくある質問
YAMLの可読性には代償が伴います——単一のインデントのミスがデプロイメント全体を壊す可能性があります。当フォーマッターとバリデーターは、人間が読めるエラーメッセージと正確な行番号でそれらのミスを即座に検出します。Kubernetesマニフェスト、Docker Composeファイル、CI/CDパイプラインのいずれを記述している場合でも、ブラウザ内で無料でYAMLをフォーマットし検証できます。
このツールを無料で試す →open_in_new