法人向けクラウドサービス・SaaS・IT製品 比較・資料請求サイト

YAMLとは?書き方やデータ構造などをわかりやすく解説します

投稿日:2023年6月15日 /

更新日:2023年9月15日

YAMLとは?書き方やデータ構造などをわかりやすく解説します
● コンテンツ制作

「YAMLとはどのような言語なのか」「どのように記述するのか」など、YAMLについて興味のある方は多いのではないでしょうか。YAMLは、あらゆるプログラミング言語で使用でき、使いやすいことから注目されている言語です。
そこで、今回はYAMLの概要や、項文例、書き方などに至るまで幅広くご紹介します。YAMLについて、理解を深めたい方は、ぜひ参考にしてみてください。

▼ 無料でまとめて資料請求! ▼

コンテンツ制作関連の資料請求はこちら

コンテンツ制作関連の資料請求はこちらコンテンツ制作関連の資料請求はこちら

目次

閉じる

YAMLとは?

YAMLイメージ

YAMLは、データのシリアライゼーション(直列化)形式であり、人間にとって読みやすいだけでなく、コンピュータにとっても解析しやすいテキスト形式のデータ表現です。YAMLは元々、プログラミング言語ではなく、設定ファイルやデータの保存、転送など、さまざまな目的で使用することを想定して設計されました。

YAMLの略語は、「YAML Ain’t Markup Language」もしくは「Yet Another Markup Language」と言われていますが、いずれにせよ文章として活用するものではなく、データを扱う際に用いられることを意味しています。

YAMLは階層構造を持てるため、データをネストされたキーと値の形式で記述が可能。これにより、データの構造や関係性を直感的に作成できます。また、YAMLは複数のデータ型をサポートしており、文字列、数値、リスト、マップ(連想配列)などに対応できます。

YAMLの構文例

YAML構文は、拡張子が「.yml」「.yaml」である点が特徴であり、構文を記述するにあたってルールが存在します。

まず、書式記号として知られている、「{ }(中括弧)」「[](各括弧)」「閉じタグ」「“(引用符)」などは存在しません。

しかし、YAMLは、JSONファイルをそのまま使用することができます。これは、JSONが、YAMLの上位集合であることが理由です。

ほかにも、コメントを番号記号やハッシュ記号で表したり、タブ文字の代わりにリテラルスペース文字を取り入れたりするなど、YAML特有のルールがあります。

YAMLの項文例を以下で一部ご紹介します。

【ネストされた構造】

employees:
  – name: John Doe
    age: 30
    position: Manager

  – name: Jane Smith
    age: 25
    position: Engineer

【ショートハンドのリスト】

– apple
– banana
– orange

【ショートハンドのマップ】

{ name: John Doe, age: 30, city: New York }

【コメント】

# This is a comment
name: John Doe  # Name of the person

上記はYAMLのシンプルな構文の一例です。内容次第では複雑な構造の記述も可能です。

YAMLの用途

 YAMLは設定ファイルの形式として使用されることが多い言語です。具体的には、ソフトウェアやアプリケーションの設定情報を記述する際に選ばれています。

実際、データベース接続情報やネットワーク設定、サーバーの構成などはYAML形式で記述できるうえに、シンプルで分かりやすい言語なのでさまざまな現場で活用されています。

また、YAMLは「Ansibleでの用途」と「Kubernetesでの用途」があります。それぞれの詳細は以下の通りです。

Ansibleでの用途

Ansibleは、YAMLを使用して構成管理や自動化を行うためのオープンソースのITオーケストレーションツールです。

YAML形式のプレイブックと呼ばれるファイルを使用してタスクや設定情報を定義。それを実行することでシステムの構成管理や自動化を行います。

インフラストラクチャの自動化では、AnsibleはYAML形式のプレイブックを使用して、サーバー、ネットワークデバイス、クラウドリソースなどのインフラストラクチャの設定やデプロイを自動化します。

プレイブックには、タスクや役割(ロール)を定義し、それらを対象のホストに適用することで、繰り返しの手動作業を削減し、一貫性のある環境を構築できるのが特徴です。

Kubernetesでの用途

Kubernetesはコンテナオーケストレーションシステムであり、アプリケーションのデプロイ、スケーリング、管理を容易にするためのプラットフォームです。

主にYAMLを使用してアプリケーションやインフラストラクチャの設定情報を表現します。

マニフェストファイルの定義では、アプリケーションやリソースのデプロイメントや管理に使用されるマニフェストファイルをYAML形式で定義します。

定義されたマニフェストファイルには、デプロイメント、サービス、ポッド、セットアップ、構成など、Kubernetesリソースの詳細な設定情報が含まれます。

YAMLの書き方

YAMLイメージ

YAMLの基本的な構造は、「キー」と「値」です。

基本的な構造に基づいたYAMLの書き方は以下の通りです。(この例では、値 123 を文字列としてタグ付けしています)

スカラー型

スカラー型は単一の値を表すデータ型です。数字や文字列、ブール変数など、スカラー型を値にして取り入れることが可能です。
スカラー型の書き方は以下の通りです。

文字列はダブルクォート (“) またはシングルクォート (‘) で囲むことができます。

name: “John Doe”

 数値はそのまま記述します。整数や浮動小数点数を含めることができます。

age: 30
price: 9.99

true または false の値を使用します。

isStudent: true
isEnabled: false

null (値が存在しないことを表す) を表現します。

status: null

特定の型を表現するために、タグを使用することができます。

value: !!str 123

スカラー型は、YAMLの基本的なデータ型の一部です。これらの型を適切に使うことで、データを正確に記述可能です。

また、YAMLは型推論を行うため、型を明示しなくても自動的に適切な型を判断することができます。

コレクション型

コレクション型は複数の要素をまとめて表現するデータ型です。主なコレクション型とその書き方について説明します。

複数の項目を順序付けて保持するデータ型です。リストはハイフン (-) で始まる行に順番に記述します。

fruits:
  – apple
  – banana
  – orange

コレクション型はネストすることができ、リストの要素やマップの値として、別のリストやマップを含めることも可能です。

employees:
  – name: John Doe
    age: 30
  – name: Jane Smith
    age: 25

各コレクション型を組み合わせることで、さまざまなデータ構造を記述できます。また、コレクション型は階層的な構造を作成できるので、複雑な記述内容にも向いています。

▼ 無料でまとめて資料請求! ▼

コンテンツ制作関連の資料請求はこちら

コンテンツ制作関連の資料請求はこちらコンテンツ制作関連の資料請求はこちら

YAMLのデータ構造

YAMLイメージ

一口にYAMLと言っても、データ構造によって異なります。

各データ構造について詳しく解説していきます。

スカラー

YAMLのデータ構造の一つがスカラーです。

コロンやスペース、ダブルクォートなどを使用します。スカラーの構造は次の通りです。

文字列はダブルクォート (“) やシングルクォート (‘) で囲んで表現します。

name: “John Doe”
message: ‘Hello, world!’

整数や浮動小数点数などの数値をそのまま表現します。

age: 30
price: 9.99

シーケンス

YAMLのシーケンスは、順序付けられた要素のリストを表現するデータ構造です。シーケンスは、リストや配列に似た形式でデータを作成します。

YAMLでシーケンスを表現する際には以下を参考にしてみてください。

  – apple
  – banana
  – orange

この例では、fruits というキーの下に3つの要素(apple、banana、orange)を持つリストが定義されています。リストの各要素はハイフン (-) で始まる行で表します。

シーケンスは、要素の順序を保持するため、データの一覧や順序付きのアイテムの表現に適しています。さらに、ネストされたシーケンスを使用することで、より複雑なデータ構造を作成することもできます。

マッピング

YAMLのマッピングは、キーと値のペアの集合を表現するデータ構造です。マッピングは、連想配列や辞書に似た形式でデータを表現します。

person:
  name: John Doe
  age: 30

この例では、person というキーの下にインラインで name と age の2つのキーと値のペアが定義されています。キーと値のペアは中括弧 ({}) で囲まれ、コロン (:) で区切られ、カンマで区切ります。

マッピングは、キーを使用して値にアクセスするため、データのラベリングやグルーピングに適しています。また、マッピングはネストすることも可能であり、より複雑なデータ構造を表現することができます。

ブロックスタイル・フロースタイル

YAMLのブロックスタイルは、前項までで解説してきた書式のことです。一方、フロースタイルは、一行のデータ構造をコンパクトに表現する書式です。フロースタイルは、シンプルで短いデータ構造やインライン表現が必要な場合に適しています。

【ブロックスタイル】

fruits:
  – apple
  – banana
  – orange

person:
  name: John Doe
  age: 30

【フロースタイル】

fruits: [apple, banana, orange]
person: {name: John Doe, age: 30}

ブロックスタイルでは、要素ごとに改行とインデントが行われ、データの階層構造が明示されます。一方、フロースタイルでは、データを角括弧 ([]) や中括弧 ({}) で囲み、カンマで区切って一行で表現します。

どちらのスタイルを選択するかは、データの可読性や要件に応じて決定します。複雑なデータ構造を表現する場合や、視覚的な整形が必要な場合にはブロックスタイルが有用です。一方、シンプルなデータ構造やコンパクトな表現が求められる場合にはフロースタイルが適しています。

インデント・ネスト

YAMLでは、インデントを使用してデータのネストや階層構造を記述します。インデントはスペースやタブの組み合わせで行われますが、一貫性を保つためにスペースの使用が推奨されています。

インデントの量は通常、2つのスペースまたは4つのスペースが適していますが、重要なのはインデントの量が一貫していることなので、どの程度のインデント量にするかは、自身の状況や現場の考え方などと照らし合わせて判断してください。

また、視覚的な整形のために、ネストの深さごとにインデントレベルを増やすことが一般的です。

以下に例を示します。

person:
  name: John Doe
  age: 30
  address:
    street: 123 Main St
    city: Anytown
    country: USA

上記は、person というキーの下に name、age、address の3つのキーと値が設けられています。address の下にはさらに street、city、country の3つのキーと値がネストされていますが、各階層ごとにインデントが行われているので、階層の関係が視覚的に明確になっています。

インデントによって階層構造が表現されるため、正しいインデントの使用はYAMLの構文エラーを回避するために重要です。インデントを誤って使用すると、文法エラーが発生し、データの解析が失敗する可能性があるので注意してください。

ドキュメントの開始・終了

複数のドキュメントを1つのファイルに含める場合、各ドキュメントはドキュメントデリミタ (—) を使用して区切ります。ドキュメントデリミタは、新しいドキュメントの開始を示し、前のドキュメントとの区別を明確にします。

以下に例を示します。


name: John Doe
age: 30


name: Jane Smith
age: 25

2つのドキュメントが1つのファイルに含まれています。1つ目のドキュメントは name とage の2つのキーと値を持ち、2つ目のドキュメントも同様です。各ドキュメントはドキュメントデリミタ — によって区切られています。

ドキュメントデリミタを使用することで、1つのYAMLファイル内で関連するデータを複数のドキュメントとして表現することができます。各ドキュメントは独立して解析され、個別のデータ構造として扱われます。

まとめ

YAMLイメージ

YAMLは、あらゆるプログラミングに対応しているうえに、シンプルな構文なので使いやすいといったメリットがあります。これからYAMLを使い始める方にとっては、やや難しそうなイメージもあるかもしれませんが、理解しやすい構造なので慣れやすいと言えるでしょう。

YAMLに興味のある方は、一度自分の言語用フレームワークの対応内容を確認したうえでチャレンジしてみてはいかがでしょうか。

▼ 無料でまとめて資料請求! ▼

コンテンツ制作関連の資料請求はこちら

コンテンツ制作関連の資料請求はこちらコンテンツ制作関連の資料請求はこちら

コンテンツ制作に関連するサービス

BowNow(バウナウ)

BowNow(バウナウ)

全体評価
4.1
レビュー
9件
無料で使えるマーケティングオートメーション

サービスの特長

  • 厳選したシンプルな設計で、導入後すぐに使いこなせる
  • 今「アツい」リードがわかり、すぐに成果に繋がる
  • フリープラン(完全無料)から始められ、高い費用対効果を実現

Freeasy(フリージー)

Freeasy(フリージー)

全体評価
4.3
レビュー
3件
低価格とスピード、使いやすさに特化したセルフ型アンケートツール

サービスの特長

  • 最安500円から利用可能!9種類の属性情報からの絞り込みも可能
  • グラフカスタムが可能で自由なアウトプットが可能
  • アンケート添削や操作レクチャーなど、安心のサポート体制

SNSキャンペーンツール キャンつく

コンテンツ制作関連のサービスを
まとめて資料請求!
無料で資料請求する
1 件の資料を選択中
無料資料請求へ進む
1 資料リスト 無料資料請求へ進む