YAML設定 (.yaml)

YAML 標準

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

YAML を JSON に変換

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

調査とメタデータ

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

ここにファイルを選択またはドロップ

100%プライベートなブラウザ内変換 - ファイルがデバイスから外部に出ることはありません

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

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

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

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

2D 2D 2D 0A

ASCII表現: ---\n

標準化: YAML 1.2.2 Specification

技術仕様

コンテナアーキテクチャIndentation-based human-friendly data serialization format superset of JSON supporting anchors and aliases
圧縮Uncompressed text stream
バイトエンディアンUTF-8 / Unicode text stream
色空間N/A (Data Serialization)
チャンネルと構造Mappings (key-value dictionaries), sequences (lists), scalar types (strings, numbers, booleans), and anchors (&ref/*ref)
最大寸法Unbounded document size (supports multi-document streams separated by '---')
透過性None
ストリーミングとプログレッシブMulti-document streams allow sequential document-by-document processing

技術比較マトリックス: YAML 対 競合製品

技術属性YAML (現在)JSONTOMLXML
構文スタイルインデントの空白階層厳密なブラケットとクォートテーブルと key=value のペア冗長な開始/終了タグ
コメントのサポートネイティブ(# コメント)コメント不可ネイティブ(# コメント)<!-- コメント -->
DevOpsでの採用普遍的な標準(Kubernetes、CI/CD)普遍的なAPI標準Rust/Pythonパッケージ設定エンタープライズのレガシー設定
データの再利用ネイティブのアンカー(&)とエイリアス(*)なし(手動による重複)なし(手動による重複)XMLエンティティ

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

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

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

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

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

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

既知の攻撃ベクター

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

防御的ベストプラクティス:

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

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

主な利点とメリット

  • 現代のクラウドインフラストラクチャにおける揺るぎない標準:Kubernetesマニフェスト、Docker Compose、GitHub Actionsで広く普遍的に使用されています。
  • クリーンで読みやすい構文:直感的なインデントにより、ブレース、ブラケット、クォートの乱雑さを排除します。
  • 参照とアンカー(&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に変換できます。