YAMLインデントスタイル:2スペース vs 4スペース

2スペースと4スペースのYAMLインデントスタイルを比較します。どのツールやエコシステムがどのスタイルを好むかを学び、YAMLフォーマッターでスタイル間を変換する方法を解説します。

Basic Formatting

詳細な説明

YAMLインデント:適切なスタイルの選択

YAMLはインデントを使用して構造を表現し、インデント幅の選択は可読性、ファイルサイズ、エコシステムの互換性に影響します。最も一般的な2つのスタイルは2スペースと4スペースのインデントです。

2スペースインデント

2スペースインデントはクラウドネイティブエコシステムの事実上の標準です:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: app
          image: my-app:latest
          ports:
            - containerPort: 8080

使用ツール: Kubernetes、Docker Compose、Helm、GitHub Actions、Prettier、ほとんどのYAMLリンター

4スペースインデント

4スペースインデントはネストレベル間により多くの視覚的分離を提供します:

- hosts: webservers
  tasks:
      - name: Install nginx
        apt:
            name: nginx
            state: present
      - name: Start nginx
        service:
            name: nginx
            state: started

使用ツール: Ansible(歴史的に)、SaltStack、一部のPythonエコシステムツール

インデントが重要な理由

ほとんどのプログラミング言語ではインデントは純粋に見た目ですが、YAMLのインデントは構文的に重要です:

  • 不正確なインデントはドキュメント構造を変える
  • ファイル内のインデントの混在はパースエラーを引き起こす
  • タブはYAMLで明示的に禁止されている(仕様ではスペースのみ必要)

リスト項目のインデント

よくある混乱の原因は、リスト項目(-)が親キーとどのように関係するかです:

# スタイルA:キーコンテンツと同じレベルのリスト項目
items:
  - first
  - second

# スタイルB:キーの下にインデントされたリスト項目
items:
- first
- second

両方とも有効なYAMLです。スタイルA(インデントされた -)がより一般的で、ほとんどのリンターで推奨されています。

スタイル間の変換

YAMLフォーマッターは、ドキュメント全体をデータ構造にパースし、目的のインデント幅で再シリアライズすることで再インデントできます。これは複数行文字列やネストされた構造を含むすべてのエッジケースを処理するため、最も安全な変換方法です。

ユースケース

インデントの標準化は、チームが共有のYAMLスタイルを採用する際に重要です。ツール間の移行時(例:4スペースのAnsibleから2スペースのKubernetesへ)、一括再インデントにより一貫性が確保されます。CI/CDパイプラインは、自動修正ステップとしてフォーマッターと共にyamllintのようなYAMLリンターを使用してインデント標準を強制できます。

試してみる — YAML Formatter & Validator

フルツールを開く