人間に優しいデータシリアライゼーション標準を理解しましょう。その構文、使用法、そしてなぜ設定ファイルの優先フォーマットになったのかを学びます。
YAML(YAML Ain't Markup Language)は、人間が読めるデータシリアライゼーション言語です。設定ファイルや、データの保存または転送を行うアプリケーションでよく使用されます。YAMLは、人間が読み書きしやすく、同時に機械が解析および生成しやすいように設計されています。
YAMLは様々なシーンで広く使用されており、特に人間が読める設定が必要な場所で活用されています。
Docker Compose、Kubernetes、Ansibleなどのツールで優先される設定フォーマット。
GitHub Actions、GitLab CI、CircleCIなどがYAMLを使用してワークフローを定義。
参照とアンカーをサポートし、アプリケーション間で複雑なデータ構造を転送。
なぜYAMLが設定ファイルの優先フォーマットになったのか?
インデントとクリーンな構文を使用し、JSONやXMLよりも読み書きが簡単。
設定を説明するコメントを追加できる、JSONにはない機能。
文字列、数値、ブール値、配列、オブジェクト、日付など、多様なデータ型をサポート。
アンカー(&)とエイリアス(*)を通じてデータの再利用を可能にし、重複を回避。
YAMLはインデントを使用して階層を表現し、キーと値のペア、リスト、複数行文字列などの構造をサポートします。
インデントにはスペース(タブではない)を使用し、通常は2スペース。インデントはデータのネスト関係を表します。
キーと値はコロンとスペースで区切られます(key: value)。
リスト項目はダッシュ(-)で始まり、その後にスペースが続きます。
| を使用して改行を保持し、> を使用して複数行を1行に折りたたみます。
# YAML Example
name: John Doe
age: 30
active: true
skills:
- JavaScript
- Python
- YAML
address:
city: New York
country: USA
bio: |
Multi-line string
with preserved newlinesこれら2つの人気データフォーマットを比較。
| 機能 | YAML | JSON |
|---|---|---|
| 可読性 | 非常に読みやすい(クリーンな構文) | 読みやすい(括弧あり) |
| コメントサポート | サポート(# コメント) | 非サポート |
| 構文の複雑さ | やや複雑(インデント依存) | シンプル(明確な括弧) |
| データ型 | 豊富(日付、参照など) | 基本(6種類) |
| ファイルサイズ | 小さい(冗長な記号なし) | 大きい(括弧と引用符) |
YAMLを効果的に使用し、よくある落とし穴を避ける方法。
YAML仕様ではインデントにスペースが必要で、タブは使用しません。推奨:2スペース。
ほとんどの文字列には引用符は不要ですが、特殊文字を含む場合はシングルまたはダブル引用符を使用します。
& を使用してアンカーを定義し、* を使用してエイリアスを参照し、重複した設定を避けます。
ファイルの先頭で %YAML 1.2 を使用してYAMLバージョンを宣言し、パーサーの互換性を確保します。
使用ケースによります。YAMLは設定ファイルに適しており、コメントをサポートし、より読みやすいです。JSONはAPIデータ転送に適しており、解析が速く、構文がシンプルです。
いいえ。YAMLは任意の数のスペースでインデントできますが、同じレベルでは一貫性を保つ必要があります。2スペースが最も一般的な慣例です。
YAMLパーサーにはセキュリティリスクがある可能性があり、特に信頼できない入力を処理する場合は注意が必要です。セーフモードパーサーの使用を推奨し、任意のコードの実行を避けます。