ブログ エンジニアリング 拡張子YAMLファイルとは?基本から使い方まで徹底解説
公開:April 9, 2025
4分で読めます

拡張子YAMLファイルとは?基本から使い方まで徹底解説

YAMLは構成ファイル紹介などに使用されるフォーマットです。この記事では、YAMLの基本からKubernetesなどでの具体的な使い方まで解説します。

what is yaml

目次

  • YAMLとは?
  • YAMLを何に使う?
  • YAMLとYMLの違いとは?
  • YAMLとJSONの違い
  • YAMLとCUEの比較
  • YAMLのデータ構造と書き方(基本編)
  • GitLabでYAMLを使う
  • 実際にYAMLファイルを編集してみましょう
  • YAMLに関するFAQ

YAMLは、KubertenesファイルやAnsibleプレイブックに使用されるデータシリアライゼーション・フォーマットです。この記事では、YAMLファイルの基本的な書き方や具体的な利用シーンについて詳しく解説します。

YAMLとは?

YAMLは、人間がデータを簡潔かつ理解しやすく表現するよう設計されており、設定ファイルやデータ転送で頻繁に使用されるプログラミング言語です。階層的情報の整理に適し、Jsonやxmlの代替と利用されることがあります。

YAMLを何に使う?

YAMLは可読性の高いこともあり、設定ファイルやプレイブックの記載に使われます。いくつか例を下記に記載しますので、参考にしてください。

  • 設定ファイルの記述
  • ログファイル
  • プロセス間でのメッセージのやり取り
  • アプリケーション間でのデータ共有
  • 構造化データの記述

YAMLとYMLの違いとは?

どちらも同じ形式のファイルを指し、拡張子が「.yml」か「.yaml」という表記の違いだけです。ヤムルファイルであることを示す正式な拡張子は.yamlですが、一般的に拡張子(.txt, .zip, .exe, .png等)は3文字で記載されるので、この3文字ルールに合わせたのが.ymlとなっています。短く簡潔に書きたい開発者には「.yml」が選ばれることが多いです。

YAMLとJSON形式の違い

JSON形式では中括弧を使って要件を定義していくのに対して、YAMLは、インデントで構造が明示されるので、可読性が高くなっています。下記サンプルを見比べてください。
YAMLは、プログラマーにとっての使いやすさを重視していることがわかると思います。

YAML:
yamlのキーとバリューの記載例

JSON:

JSON形式のキーとバリューの記載例

YAMLとCUEの比較

YAMLは、可読性が高くシンプルな構造を持つのに比べ、CUEは、スキーマとデータを統合するため、複雑な設定もひとつのファイルで管理できます。また、YAML単体では実現できなかったスキーマバリデーション機能を持つので、データの整合性を担保しやすいです。

また、柔軟性も大きな特徴です。CUEは、あらゆる種類のデータを定義、生成、検証するために使用されるオープンソースの言語(具体的にはJSONのスーパーセット)なので、Go、JSON、OpenAPI、Protocol Buffers、YAMLなどの他の多くの言語と連携できます。

また、Go APIによるスクリプト機能を備えているので、CUEによるマニフェストを最終的なKubernetesリソースのYAMLとして表示したり、特定クラスタにデプロイするリソースを一覧するコマンドを実装する際などに使う機会があります。

YAMLのデータ構造と書き方(基本編)

YAMLファイル記述の注意点

インデントとタブが、とても重要であることを覚えておいてください。余分なインデントやタブが使われていると、YAMLオブジェクトの意味が変わってしまうので、これらがとても重要になります。

YAMLのデータ構造

YAMLは主に、コレクションとスカラーという2つのデータで成り立っています。コレクションは、シーケンスとマッピングから成り立ちます。シーケンスは配列、マッピングは名前と値のペア(Key : Valueで表現する配列)。そしてスカラーは、型を判別させるためのもので、文字列、数値などを表します。

  • コレクション
    • シーケンス
    • マッピング
  • スカラー

YAMLの書き方

image2

  • 複数行のコレクション:複数の行のフォーマットを維持する必要がある場合には | (バーティカルバー) シンボルを使用します。
  • 複数行のフォーマット:長い文字列の値があり、フォーマットを維持したまま複数行に渡って記述する必要がある場合には、 > を使用します。
  • リスト:リストは - (ハイフン)を使って表現します。
  • ネスト:ネストされたデータ構造はインデントを使って表現されます。

Kubernetes(k8s)のYAMLファイルの書き方

Kubernetesでは、リソースの定義にYAMLファイルが使用されます。今回はYAMLマニフェストの書き方を紹介します。

YAMLマニフェスト:
YAMLでKubernetesのマニフェストの書き方例

AnsibleのYAMLファイルの書き方

Ansibleでは、処理内容を記載するプレイブックをYAMLで記載します。以下に、簡単なAnsibleプレイブックの例を示します。

image3

GitLabでYAMLを使う

GitLab CI/CD パイプラインは、プロジェクト毎に.gitlab-ci.ymlというYAMLファイルを使ってパイプラインの構造と実行順序を定義します。このファイルで設定された内容を、GitLab Runnerの中で処理します。CI/CD YAML構文についてはこちらの英文まとめページをご参照ください。

実際にYAMLファイルを編集してみましょう

YAMLは、そのシンプルさと可読性の高さから、設定ファイル、CI/CDパイプライン、Kubernetesをはじめとするコンテナオーケストレーションやドキュメント、構成管理など、多岐にわたり利用されています。その可読性の高さで、開発者や運用エンジニアが構成やデータを容易に管理し、効率的に作業を進めることができます。YAMLを理解することで、様々なシステムやツールの設定がより簡単かつ直感的に行えるようになるでしょう。

YAMLに関するFAQ

YAMLは何に使われますか

YAMLは、そのシンプルさと可読性の高さから、設定ファイル、CI/CDパイプライン、Kubernetesをはじめとするコンテナオーケストレーションやドキュメントと構成管理など、多岐にわたり利用されています。

YAMLとJSONの違いは?

JSONファイルは中括弧を使って要件を定義していくのに対して、YAMLは、インデントで構造が明示されるので、可読性が高くなっています。ただし、YAMLではインデントやスペースがとても重要になる点に注意が必要です。

YAMLはなぜ人気なのですか?

YAMLは開発者の間で人気のあるデータシリアライズ言語です。なぜなら、その読みやすさ、汎用性、Pythonと似たインデントシステムを使うからです。YAMLは複数のデータ型をサポートしており、多くのプログラミング言語で利用可能なパーサーライブラリが提供されているため、さまざまなデータシリアライゼーションタスクを扱うことができ、幅広い場面で活用されています。



監修:佐々木 直晴 @naosasaki (GitLab合同会社 ソリューションアーキテクト本部 シニアソリューションアーキテクト)

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成して、ご意見をお聞かせください。 フィードバックをお寄せください

始めてみましょう

統合されたDevSecOpsプラットフォームによって、チームで何が実現できるかご確認ください。

無料トライアルを開始する

チームに最適なプランを見つけましょう

価格設定を見る

GitLabがチームにもたらすメリットをご覧ください

お問い合わせ