YAML設定 (.yaml)

YAML 標準

YAML Ain't Markup Language(YAML)は、モダンなDevOps、クラウドインフラストラクチャ(Kubernetes、Docker Compose)、CI/CD自動化における主要なデータシリアル化フォーマットであり、整然としたインデントを通じて人間の可読性を重視しています。

YAML を JSON に変換

無料のブラウザ内 YAML から JSON へのコンバーター。お使いのデバイスでファイルを即座に変換します。

調査とメタデータ

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してYAMLファイルを識別します:

ファイルを選択するか、ここにドロップしてください

プライベート - ファイルがデバイスの外に出ることはありません

または貼り付け Ctrl+V
ネットワーク送信ゼロのプライバシー保証: 外部サーバーへのデータ送信は0バイトです。すべての処理はお使いのブラウザのサンドボックス内でローカルに実行されます。

バイトレベルのヘッダーシグネチャ (マジックバイト)

オペレーティングシステムやファイル解析ツールは、先頭のバイナリ列を検査してYAMLファイルを識別します:

16進数シグネチャ(オフセット0):

2D 2D 2D 0A

ASCII表現: ---\n

標準化: YAML 1.2.2仕様

技術仕様

コンテナアーキテクチャアンカーとエイリアスに対応し、JSONの機能を包含する、インデントベースで読みやすいデータシリアライズ形式
圧縮非圧縮テキストストリーム
バイトエンディアンUTF-8 / Unicodeテキストストリーム
色空間該当なし(データシリアライズ)
チャンネルと構造マッピング(キーと値の辞書)、シーケンス(リスト)、スカラー型(文字列、数値、真偽値)、アンカー(&ref/*ref)
最大寸法文書サイズに上限なし('---'で区切られた複数文書ストリームに対応)
透過性なし
ストリーミングとプログレッシブ複数文書ストリームにより、文書ごとの逐次処理が可能

技術比較表:YAMLと競合製品

技術属性YAML (現在)JSONTOMLXML
構文スタイルインデントの空白階層厳密なブラケットとクォートテーブルと key=value のペア冗長な開始/終了タグ
コメントのサポートネイティブ(# コメント)コメント不可ネイティブ(# コメント)<!-- コメント -->
DevOpsでの採用ソフトウェアによって対応状況は異なります。ソフトウェアによって対応状況は異なります。Rust/Pythonパッケージ設定エンタープライズのレガシー設定
データの再利用ネイティブのアンカー(&)とエイリアス(*)なし(手動による重複)なし(手動による重複)XMLエンティティ

一般的な破損モードと16進数リカバリガイド

パーサーのエラー:「mapping values are not allowed here(ここではマッピング値は許可されていません)」またはインデントエラー。

根本原因: タブとスペースの混在、またはインデントレベルのズレ。

復旧: タブをスペースに変換し、File2File.app YAMLフォーマッタを使用して構文を検証してください。

セキュリティ分析とパーサー攻撃ベクトル

カスタム型タグをサポートするYAMLパーサー(PyYAMLの「yaml.load()」など)は、従来、任意のオブジェクトのインスタンス化を介したリモートコード実行を許可していました。

既知の攻撃ベクター

  • 安全ではないオブジェクトデシリアライゼーションタグ(例:「!!python/object/apply」)を通じた任意のコード実行。
  • エンティティ拡張爆弾(YAMLのアンカーとエイリアスを使用したBillion Laughs攻撃の同等物)。
  • 暗黙的なブール値およびタイムスタンプのパースに起因する型混同の脆弱性。

防御的ベストプラクティス: 安全なYAMLパーサー(Pythonでは 'yaml.safe_load()')を常に使用し、アンカー展開の深度制限を適用します。

歴史的背景とマイルストーン

2021YAML 1.2.2リビジョンが公開され、JSONの互換性と正式な文法の定義が洗練されました。
2009YAML 1.2により、YAMLがJSONの厳密なスーパーセット(上位互換)であることが標準化され、すべての有効なJSONが有効なYAMLであることが定義されました。
2001クラーク・エヴァンス(Clark Evans)、Ingy döt Net、オーレン・ベン=キキ(Oren Ben-Kiki)が、XMLの人間にとって親しみやすい代替手段としてYAMLを作成しました。

主なメリット

  • YAMLはインフラ関連ツールで広く使われますが、対応状況や動作は実装によって異なります。
  • クリーンで読みやすい構文:直感的なインデントにより、ブレース、ブラケット、クォートの乱雑さを排除します。
  • 参照とアンカー(&anchor / *anchor)をサポートしており、設定ブロックを重複させずに再利用できます。

技術的な制限とデメリット

  • 空白に敏感:タブや1つの余分なスペースが誤って混入すると、ドキュメントの階層が破損したり、パースエラーを引き起こしたりする可能性があります。
  • 悪名高い型変換のバグ:「no」、「on」、「yes」、または国コード(ノルウェーの「NO」など)のようなクォートされていない単語が、暗黙的にブール値に変換される場合があります。
  • バイナリフォーマットや厳密なJSONと比較して、パース速度が大幅に遅くなります。

興味深い技術トリビア

  • YAMLは元々「Yet Another Markup Language」の略でしたが、データシリアル化を強調するために、再帰的頭字語である「YAML Ain't Markup Language」へとユーモラスに改名されました。
  • 「ノルウェー問題」は、YAMLファイル内の国コード「NO」がブール値の「false」としてパースされてしまうという有名なプログラミングバグです。
  • 世界中のすべての有効なJSONファイルは、同時に100%有効なYAMLファイルでもあります。

よくある技術的な質問

YAMLは何に使用されますか?

YAMLは、クラウドコンピューティング、Kubernetesクラスターのデプロイ、Docker Composeファイル、GitHub Actionsワークフロー、およびソフトウェア設定の主要な設定言語です。

YAMLファイルでタブを使用できますか?

いいえ。公式のYAML仕様では、インデントにタブ文字を使用することが厳しく禁止されています。常にスペースを使用する必要があります(通常は1レベルあたり2スペース)。

YAMLをJSONに変換するにはどうすればよいですか?

完全なプライバシーを保ちながら、Webブラウザから直接File2File.appを使用して、1クリックでYAMLファイルをクリーンで検証済みのJSONに変換できます。