この用語をシェア
YAMLとは
YAML(YAML Ain't Markup Language)は、人間が読みやすい形式でデータを記述するためのデータシリアライゼーション言語です。「ヤムル」と呼ばれ、インデント(字下げ)を使って階層構造を表現することが特徴です。
YAMLの主要な特徴
- 人間に優しい:直感的で読みやすい構文
- インデントベース:タブやスペースで階層構造を表現
- 軽量:冗長な記述が少ない
- JSON互換:JSONのスーパーセット
- コメント対応:#でコメントを記述可能
基本的な構文
# アプリケーション設定例
application:
name: "IT用語集アプリ"
version: "2.1.0"
author: "野口真一"
# サーバー設定
server:
host: "localhost"
port: 8080
ssl: true
# データベース設定
database:
type: "postgresql"
host: "db.example.com"
port: 5432
credentials:
username: "app_user"
password: "secure_password"
# 機能フラグ
features:
- authentication
- caching
- monitoring
# 環境別設定
environments:
development:
debug: true
log_level: "debug"
production:
debug: false
log_level: "error"
YAMLの主な用途
1. 設定ファイル
アプリケーションの設定、サーバー設定、環境変数などを定義する際の標準的な形式として使用されています。
2. CI/CDパイプライン
GitHub Actions、GitLab CI、Azure DevOpsなどのCI/CDツールで、ワークフローやパイプラインの設定に使用されます。
3. Infrastructure as Code (IaC)
Docker Compose、Kubernetes、Ansible、OpenAPIなど、インフラストラクチャやサービスの定義に使用されます。
4. ドキュメント
静的サイトジェネレーター(Jekyll、Hugo)やドキュメント管理システムでメタデータの記述に使用されます。
YAMLのデータ型
基本型
# 文字列
title: "YAMLの解説"
description: YAMLは便利な言語です
# 数値
port: 8080
version: 1.2
# 真偽値
enabled: true
debug: false
# null
value: null
empty: ~
配列・リスト
# 配列形式1
technologies:
- YAML
- JSON
- XML
# 配列形式2
skills: ["AWS", "Docker", "Kubernetes"]
オブジェクト・マップ
# オブジェクト
person:
name: "野口真一"
role: "エンジニア"
skills:
- AI
- AWS
- フリーランス
YAMLとJSONの比較
| 項目 | YAML | JSON |
|---|---|---|
| 可読性 | 非常に高い | 高い |
| コメント | 対応 | 非対応 |
| パース速度 | やや遅い | 速い |
| ファイルサイズ | 小さい | やや大きい |
| ブラウザサポート | ライブラリ必要 | ネイティブサポート |
YAMLの注意点
1. インデントの重要性
YAMLはインデントで階層を判断するため、スペースとタブの混在やインデント数のミスはエラーの原因となります。
2. 文字列の扱い
特殊文字を含む文字列はクォートで囲む必要があります。特にコロン(:)を含む場合は注意が必要です。
3. 型の自動判定
YAMLは値の型を自動判定するため、意図しない型変換が起こる場合があります。
人気のYAMLツール
- Docker Compose:マルチコンテナDockerアプリケーションの定義
- Kubernetes:コンテナオーケストレーションの設定
- Ansible:インフラ自動化のプレイブック記述
- GitHub Actions:CI/CDワークフローの定義
- OpenAPI:API仕様書の記述
YAMLの重要性
YAMLは現代の開発・運用において不可欠な技術です。特に以下の分野では必須のスキルとなっています:
- DevOps・インフラ自動化
- コンテナオーケストレーション
- CI/CDパイプライン構築
- クラウドネイティブ開発
- 設定管理
シンプルで読みやすい構文により、技術者だけでなく非技術者も理解しやすく、チーム間のコミュニケーションツールとしても重要な役割を果たしています。
