YAMLフォーマッター
なぜYAMLファイルをフォーマットするのか?
YAMLはインデントの問題に非常に敏感で、余分なスペース1つでパースエラーやサイレントなデータ破損が発生する可能性があります。Kubernetes、Docker Compose、GitHub Actions、AnsibleはYAML設定ファイルを使用しており、フォーマットエラーがデプロイ全体をブロックする可能性があります。
インデントの正規化
混合インデントをドキュメント全体で一貫した2スペース形式に正規化
構文検証
本番エラーの前にインデントエラー、タブ/スペースの混在、構造的問題を検出
アンカーとエイリアス
ドキュメントの再利用のためのYAMLアンカー(&)とエイリアス(*)を完全サポート
3ステップでYAMLをフォーマットする方法
YAMLを貼り付け
Kubernetesマニフェスト、GitHub Actionsワークフロー、またはYAML設定ファイルを貼り付け
フォーマットと検証
ツールが構文を検証し、一貫したインデントで自動的に再フォーマット
コピーしてデプロイ
フォーマット済みYAMLをファイル、CIパイプライン、デプロイツールにコピー
YAMLフォーマットのユースケース
Kubernetesマニフェスト
クラスターに適用する前にDeployment、Service、ConfigMapのYAMLファイルをフォーマット
CI/CDパイプライン
GitHub Actions、GitLab CI、CircleCIワークフローを検証してパイプラインエラーを防ぐ
Ansible Playbooks
クリーンなインフラコードのためにAnsibleタスク、変数、インベントリをフォーマット・検証
Docker Compose
docker compose up前にdocker-compose.ymlファイルが正しくフォーマットされているか確認
YAMLのベストプラクティス
✓ タブでなくスペースを使用
YAMLはインデントにタブ文字を明示的に禁止しています。YAMLファイルでTabキーを押したときにスペースが挿入されるようエディタを設定してください。
✓ 特殊文字には引用符を使用
: # [ ] { }を含む文字列や特殊文字で始まる文字列は、YAMLが誤って解釈しないように引用符で囲む必要があります。
✓ 重複を減らすためにアンカーを使用
YAMLアンカー(&name)とエイリアス(*name)でドキュメント内の値を再利用でき、複雑な設定の繰り返しを削減します。
✓ コミット前にLint
yamllintを実行するかpre-commitフックでこのフォーマッターを使用して、リポジトリに入る前にフォーマット問題を検出してください。
❓ よくある質問
なぜYAMLはスペースの代わりのタブで動作しないのですか?
YAML仕様はインデントにタブ文字を明示的に禁止しています。異なるエディタがタブを異なる幅で表示するためです。スペースはすべてのYAMLパーサーが同じように解釈できる一貫した明確なインデントを提供します。
YAMLのアンカー(&)とエイリアス(*)は何をしますか?
アンカーは&anchor-nameで再利用可能なブロックを定義し、エイリアスは*anchor-nameで参照します。これにより値を一度定義して何度も使用でき、DRYな設定を維持できます。
YAMLとJSONの違いは何ですか?
YAMLはJSONのスーパーセットで、有効なJSONは有効なYAMLでもあります。YAMLはコメント、アンカー、複数行文字列、より読みやすい構文のサポートを追加します。
設定にTOMLよりYAMLを選ぶべき理由は?
YAMLはより広いツールサポートを持ち(Kubernetes、Ansible、ほとんどのCIシステム)、複雑なネスト構造を簡潔に表現できます。DevOps設定ではYAMLが標準です。