YAMLファイルについて、そもそもどんなものなのか理解できていなかったので調べてみました。今回はYAMLファイルの基礎的な部分(基本的な構文や特徴)が理解できることをゴールとしています。
IT未経験のため間違っている点がありましたらご指摘いただけますと幸いです。
そもそもYAMLファイルとはなに?
YAMLファイルとは、アプリやサービスの設定ファイルを記述する際に使われるファイルです。他にもJSONやXMLといったデータ形式がありますが、YAMLはその中でも人間にとっての読みやすさNo1です。また、多くのプログラミング言語で読み書きができるという特徴があります。
どんな用途で使われる?
- アプリやサービスの設定ファイル(
docker-compose.yml
など) - CI/CD(GitHub Actionsの
workflow.yml
) - Djangoなどのフレームワークの設定
上記のような場面で幅広く使われています。設定ファイルはWebアプリの細かなふるまいを決定する際に必要になります。Dockerなど、設定ファイルがないと動かないシステムもあります。
YAMLファイルの書き方は?
いくつかの基本的なルールがあります。
1. データの階層構造をインデントで表す。
JSONでは{ }や[ ]で階層構造を表現しますが、YAMLではこれをインデントで表現します。この際のインデントはタブではなくスペースです。
2. キーの後に":"、値との間にスペースを入れる。
name: hanako
※スペースは2つでもエラーにはなりませんが、可読性の観点で1つが推奨されます。
3. リストの記述はインデントを揃え、"-"を入れる。
list:
- item1
- item2
- item3
※スペースが1つでも3つでもエラーにはなりませんが、一般的には2つが推奨されます。
4. リストの階層が深い場合はそれぞれにインデントを揃え、スペースをあける。
services:
db:
container_name: MySQL
5. 表現が曖昧な場合は文字列に" "
や' '
をつける。
date: "2024-12-15"
※プログラムによってはデータ型が意図しない型で判断され、エラーになることがあります。
6. コメントは#
で記載する。
name: hanako
# これでコメントが記載できます
プログラム毎にフォーマットのルールは決まっているの?
各プログラムやツール毎にフォーマットが決まっています。基本的な書き方を踏まえた上で、公式サイト等を参考に決められた形式に従います。
コンピューターにとっても読みやすいファイルなの?
設計自体はコンピューターにとっても読みやすいように作られています。しかし、データ型の曖昧さやインデントのミスによってエラーが起こります。これを防ぐために、YAMLファイル専用のLintツール(yamllint)やVS Codeの拡張機能(YAML by Red Hat)を利用すると良い様です。今回はYAMLファイルの基礎を理解することが目的のため、この部分は今後理解を深めていきます。
結論
今回はYAMLファイルの基本的な構文や特徴を理解しました。今後、実際にツールで使用されるYAMLファイルを操作しながら具体的な使い方を学んでいきたいと思います。