【プログラミング】【設定】AMLファイルについて - j-komatsu/myCheatSheet GitHub Wiki
YAMLファイルについて
はじめに(初学者向け)
YAMLとは?
YAML(YAML Ain’t Markup Language)は、設定ファイルなどに使われる人間にとって読みやすいデータ記述言語です。
読み方
📖 ヤムル または ヤメル と読みます。
YAMLの特徴(表で整理)
特徴 | 内容 |
---|---|
拡張子 | .yaml または .yml |
主な用途 | 設定ファイル(CI/CD、Docker、Kubernetes、Ansibleなど) |
構文 | インデントで階層を表現(スペース2つ or 4つ) |
データ構造の表現が簡潔 | 配列、オブジェクト(連想配列)を直感的に表現可能 |
コメント | # を使ってコメント記述が可能 |
JSONとの互換性 | 基本的にJSONと変換可能(YAML → JSON、JSON → YAML) |
基本構文(初心者向け)
1. キーと値
name: John Doe
age: 30
2. ネスト(階層構造)
person:
name: John Doe
age: 30
3. 配列(リスト)
fruits:
- apple
- banana
- orange
4. コメント
# これは名前を表します
name: Alice
入力と出力の例
YAMLファイル(入力)
user:
name: Alice
skills:
- Python
- YAML
- Docker
想定されるデータ構造(出力/Pythonの辞書形式)
{
"user": {
"name": "Alice",
"skills": ["Python", "YAML", "Docker"]
}
}
たとえ話:YAMLは「料理のレシピ」
YAMLは「料理のレシピ」に例えると分かりやすいです。
recipe:
name: カレーライス
ingredients:
- 玉ねぎ
- にんじん
- じゃがいも
- カレールー
steps:
- 材料を切る
- 炒める
- 水を入れて煮る
- ルーを入れて仕上げる
📌 読むだけで、どんな料理かイメージできる=人間にやさしい形式
Mermaid.jsを使ったYAMLの構造図
graph TD
A[YAMLルート]
A --> B[user]
B --> C[name: Alice]
B --> D[skills]
D --> E[Python]
D --> F[YAML]
D --> G[Docker]
専門者向け:YAMLの応用と注意点
アンカーとエイリアス(共通部分の再利用)
default: &default_settings
retries: 3
timeout: 30
dev:
<<: *default_settings
timeout: 10
複数ドキュメント(--- 区切り)
---
env: development
---
env: production
複雑なネストとマップ
services:
web:
image: nginx
ports:
- "80:80"
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
よく使われる用途別例
用途 | ツール・システム | YAMLファイルの役割 |
---|---|---|
CI/CD | GitHub Actions, GitLab CI | ワークフローの定義 |
コンテナ管理 | Docker Compose | 複数コンテナの構成定義 |
インフラ | Kubernetes | Pod, Service などの構成定義 |
自動化 | Ansible | インベントリとタスクの定義 |
まとめ
- YAMLは設定ファイルに最適なシンプル構文
- インデントが命(タブではなくスペース!)
- JSONよりも直感的に書ける
- 読みやすさ・編集しやすさに優れている
- 応用では共通設定の再利用や複数ドキュメントなども活用可能
おまけ:YAMLとJSONの比較表
項目 | YAML | JSON |
---|---|---|
人間の可読性 | ◎ | ○ |
コメント | 対応あり(#) | 非対応 |
使う記号 | 最小限(コロン、ハイフン) | 多い({}, []など) |
ネスト | インデントで表現 | 括弧で表現 |
📁 ファイル拡張子例
config.yaml
docker-compose.yml
.github/workflows/ci.yml
📝 実装Tips
- 必ずスペースでインデント(タブ不可)
- Lint(構文チェック)を使ってバグ予防
- YAML Lint がおすすめ
- ファイルが複雑になったら、コメントを積極的に使おう