🙌

.yamlと.ymlは何が違うの?

2024/12/04に公開

はじめに

プログラミングや設定管理の世界で、YAML形式のファイルを扱う際に .yaml.yml の2つの拡張子に出会うことがあります。一見、同じように見えるこれらの拡張子について、解説していきます。

拡張子の本質的な同一性

技術的な互換性

まず、最も重要なポイントは、.yaml.yml完全に同一の内容と構造を持つファイルを表しているということです。どちらの拡張子を使用しても、YAMLパーサーは全く同じようにファイルを読み取り、解析します。

内部構造の同一性

# .yml でも .yaml でも、この設定は全く同じように解釈されます
database:
  host: localhost
  port: 5432
  username: admin
  password: secret

歴史的な背景と進化

YAMLの誕生

  • 2001年にYAMLが仕様として最初に提案された当初は、.yamlが推奨される拡張子でした。
  • 当初は「YAML Ain't Markup Language」という名前の通り、XMLの代替として考えられていました。

実践的な使用の広がり

時間の経過とともに、開発者たちはより短く入力しやすい .yml を好むようになりました。これは、多くのコマンドラインツールやCI/CDプラットフォームでの実際の使用パターンに大きく影響されています。

実際の使用状況

.yml が優勢なケース

  1. コンテナ技術

    • Docker Compose
    • Kubernetes設定ファイル
    version: '3'
    services:
      web:
        image: nginx
        ports:
          - "8080:80"
    
  2. CI/CDパイプライン

    • GitHub Actions
    • CircleCI
    • Travis CI

.yaml が使用されるケース

  1. 学術的な文書
  2. 正式な仕様書
  3. 一部の言語固有の設定ファイル(特にPythonエコシステム)

選択する際の実践的なガイドライン

推奨される選択方法

  1. プロジェクトの既存の慣習に従う

    • 既に .yml を使用しているプロジェクトなら、その慣習を継続する
    • 新規プロジェクトの場合は .yml を推奨
  2. チーム内の一貫性

    • 拡張子は統一することが最も重要
    • 混在させると可読性と管理性が低下する可能性がある
  3. ツールとの互換性

    • ほとんどのモダンなツールは両方の拡張子を完全にサポート

注意点と落とし穴

避けるべき罠

  • 拡張子の違いを理由にファイルの互換性を疑わない
  • 不必要に拡張子を気にしすぎない
  • チーム内で統一性を失わない

実践的なヒント

拡張子選択のチートシート

サービス 拡張子
Docker/Kubernetes .yml
Python プロジェクト どちらでも可
厳密な仕様書 .yaml
個人プロジェクト お好みで選択

まとめ

.yaml.yml は本質的に同一のファイル形式を指します。重要なのは、拡張子ではなく、ファイルの内容と一貫性です。プロジェクトの文脈や既存の慣習に合わせて、適切に選択してください。

参考資料

https://prograshi.com/language/json/defference-between-yml-and-yaml/

Discussion