YAML

API・Web技術 | IT用語集

この用語をシェア

YAMLとは

YAMLYAML 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パイプライン構築
  • クラウドネイティブ開発
  • 設定管理

シンプルで読みやすい構文により、技術者だけでなく非技術者も理解しやすく、チーム間のコミュニケーションツールとしても重要な役割を果たしています。

この用語についてもっと詳しく

YAMLに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。