はじめに
インフラのコード化や構成管理の現場では、YAML (YAML Ain't Markup Language) を目にする機会が多くあります。
特に、KubernetesのマニフェストやAnsibleのプレイブックで利用されることが多いフォーマットです。
JSONと比べて、YAMLはより人間が読みやすい形式で記述できるのが特徴です。
また、個人的にAnsibleサーバーを構築しようと考えているため、定義ファイルで使うYAMLの知識を整理していきます。
YAMLとは?
YAMLは、軽量で可読性が高いデータフォーマットです。主に設定ファイルやデータ交換形式として使用されます。
引用画像:https://udemyfun.com/python-use-yaml/
YAMLの特徴は、インデントを利用してデータ構造を表現する点にあります。
JSONやXMLと比較すると、構文がシンプルであるため、視覚的に分かりやすく、扱いやすい形式となっています。
YAMLの主なデータ型
YAMLで利用できる主なデータ型は以下の通りです。
マッピング (Mapping):
キーと値のペアで構成されるデータ型。JSONのオブジェクトに相当します。
key: value
シーケンス (Sequence):
順序付けられたリスト形式のデータ。JSONの配列に相当します。
- item1
- item2
- item3
スカラー (Scalar):
単一の値を表します。文字列、数値、真偽値、nullなどが含まれます。
string: "example"
number: 42
boolean: true
null_value: null
YAMLの特徴
インデントや簡潔な記述方法により、直感的に読み書きできることが、YAMLを使用する最大のメリットです。
その他、以下の特徴があります。
コメントが記述可能
JSONと異なり、#
を使ってコメントを書くことができます。
# これはコメントです
key: value
柔軟なデータ構造の表現
複雑なネスト構造でも簡単に表現できます。
parent:
child:
grandchild: value
さらに、多くのプログラミング言語で扱うためのライブラリが用意されており、言語に依存しないという点も大きなメリットです。
CloudFormationテンプレート形式について
引用画像:https://aws.amazon.com/jp/cloudformation/
AWS CloudFormationのテンプレートは、インフラストラクチャをコードとして管理する際に使用される重要な形式です。テンプレートはJSON形式またはYAML形式で記述できます。
CloudFormationの技術検証については、過去の記事で詳しく解説しています。ぜひご覧ください!
個人的には、AWSサービスの中でもCloudFormationが特にお気に入りで、技術検証に力を入れています!(笑)
JSONとYAMLの違いについて
CloudFormationのテンプレートでは、JSON形式とYAML形式のどちらかを選択できます。
それぞれの特徴を簡単に比較してみました。
特徴 | JSON | YAML |
---|---|---|
形式 | 厳格でフォーマットが固定 | 人間が読みやすいフォーマット |
記述量 | やや冗長 | 簡潔 |
コメント | 非対応 | 対応 (# ) |
使用場面 | プログラム間のデータ交換 | 設定ファイルや構成管理 |
JSONは厳格な構文ルールを持ち、機械での解析に適しているため、APIレスポンスやデータ交換に多く利用されます。
一方、YAMLは簡潔で人間にとって読みやすい形式で記述できるため、設定ファイルや構成管理に適しています。
YAMLを使ってテンプレートを書いてみた
以下は、AWS CloudFormationを使用してEC2インスタンスを1台構築するYAMLテンプレートの例です。
AWSTemplateFormatVersion: "2010-09-09"
Description: AWS EC2 Instance Creation Example
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0abcdef1234567890
InstanceType: t2.micro
KeyName: my-key-pair
Tags:
- Key: Name
Value: MyFirstInstance
コードの簡単な説明
このテンプレートでは、AWSの基本的な知識が必要ですが、YAMLを使って簡潔に記述されています。
-
AWSTemplateFormatVersion
:
CloudFormationテンプレートのバージョンを指定します。 -
Resources
:
作成するリソースの定義。 -
Properties
:
リソースの設定内容(AMI ID、インスタンスタイプ、キーペアなど)。
YAMLは人間に優しいフォーマットでありながら、構成管理やテンプレート記述の分野で非常に強力なツールです!
まとめ
YAMLの基本構文から、実践的な利用例までを整理して紹介しました。
今回の記事を通して、YAMLの柔軟性と直感的な記述方法の素晴らしさを再確認することができました。
今回のYAMLに関する知識整理の記事が、誰かの技術的な支えとなれば嬉しいです!
参考記事