YAML紹介

YAMLとは?

人間に優しいデータシリアライゼーション標準を理解しましょう。その構文、使用法、そしてなぜ設定ファイルの優先フォーマットになったのかを学びます。

定義

YAML(YAML Ain't Markup Language)は、人間が読めるデータシリアライゼーション言語です。設定ファイルや、データの保存または転送を行うアプリケーションでよく使用されます。YAMLは、人間が読み書きしやすく、同時に機械が解析および生成しやすいように設計されています。

YAMLの用途は?

YAMLは様々なシーンで広く使用されており、特に人間が読める設定が必要な場所で活用されています。

設定ファイル

Docker Compose、Kubernetes、Ansibleなどのツールで優先される設定フォーマット。

CI/CDパイプライン

GitHub Actions、GitLab CI、CircleCIなどがYAMLを使用してワークフローを定義。

データシリアライゼーション

参照とアンカーをサポートし、アプリケーション間で複雑なデータ構造を転送。

コア機能

なぜYAMLが設定ファイルの優先フォーマットになったのか?

人間が読みやすい

インデントとクリーンな構文を使用し、JSONやXMLよりも読み書きが簡単。

コメントサポート

設定を説明するコメントを追加できる、JSONにはない機能。

豊富なデータ型

文字列、数値、ブール値、配列、オブジェクト、日付など、多様なデータ型をサポート。

参照サポート

アンカー(&)とエイリアス(*)を通じてデータの再利用を可能にし、重複を回避。

YAML構文ルール

YAMLはインデントを使用して階層を表現し、キーと値のペア、リスト、複数行文字列などの構造をサポートします。

1

インデントで階層を表現

インデントにはスペース(タブではない)を使用し、通常は2スペース。インデントはデータのネスト関係を表します。

2

キーと値はコロンで区切る

キーと値はコロンとスペースで区切られます(key: value)。

3

リストはダッシュを使用

リスト項目はダッシュ(-)で始まり、その後にスペースが続きます。

4

複数行文字列のサポート

| を使用して改行を保持し、> を使用して複数行を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

YAML vs JSON

これら2つの人気データフォーマットを比較。

機能YAMLJSON
可読性非常に読みやすい(クリーンな構文)読みやすい(括弧あり)
コメントサポートサポート(# コメント)非サポート
構文の複雑さやや複雑(インデント依存)シンプル(明確な括弧)
データ型豊富(日付、参照など)基本(6種類)
ファイルサイズ小さい(冗長な記号なし)大きい(括弧と引用符)

ベストプラクティス

YAMLを効果的に使用し、よくある落とし穴を避ける方法。

タブではなくスペースを使用

YAML仕様ではインデントにスペースが必要で、タブは使用しません。推奨:2スペース。

引用符は慎重に使用

ほとんどの文字列には引用符は不要ですが、特殊文字を含む場合はシングルまたはダブル引用符を使用します。

アンカーとエイリアスを活用

& を使用してアンカーを定義し、* を使用してエイリアスを参照し、重複した設定を避けます。

バージョン宣言を追加

ファイルの先頭で %YAML 1.2 を使用してYAMLバージョンを宣言し、パーサーの互換性を確保します。

よくある質問

YAMLとJSON、どちらが良いですか?

使用ケースによります。YAMLは設定ファイルに適しており、コメントをサポートし、より読みやすいです。JSONはAPIデータ転送に適しており、解析が速く、構文がシンプルです。

YAMLのインデントは必ず2スペースですか?

いいえ。YAMLは任意の数のスペースでインデントできますが、同じレベルでは一貫性を保つ必要があります。2スペースが最も一般的な慣例です。

YAMLは安全ですか?

YAMLパーサーにはセキュリティリスクがある可能性があり、特に信頼できない入力を処理する場合は注意が必要です。セーフモードパーサーの使用を推奨し、任意のコードの実行を避けます。