コンテンツにスキップ

01. バージョン管理規定

このドキュメントは、プロジェクト成果物のバージョン管理に関するルールを定めます。明確で一貫性のあるバージョン管理は、変更の追跡を容易にし、ユーザーや開発者が更新内容を理解する上で不可欠です。

1. バージョニング戦略: セマンティックバージョニング

本プロジェクトのバージョン番号は、セマンティックバージョニング 2.0.0 (SemVer) の仕様に厳密に従います。

1.1. バージョン番号のインクリメントルール

バージョン番号は、以下のルールに基づいてインクリメントします。このルールは、05_ブランチ規定で定義されたConventional Commits<type>と密接に関連しています。

  • メジャーバージョン (MAJOR):

    • 後方互換性のない変更が加えられた場合にインクリメントします。
    • これは、コミットメッセージのフッターに BREAKING CHANGE: が含まれる場合に相当します。
    • メジャーバージョンを上げる際は、マイナーとパッチは0にリセットします。(例: 1.5.22.0.0
  • マイナーバージョン (MINOR):

    • 後方互換性を保ったまま、新機能が追加された場合にインクリメントします。
    • これは、featタイプのコミットが含まれる場合に相当します。
    • マイナーバージョンを上げる際は、パッチは0にリセットします。(例: 1.5.21.6.0
  • パッチバージョン (PATCH):

    • 後方互換性を保ったまま、バグ修正が行われた場合にインクリメントします。
    • これは、fixタイプのコミットが含まれる場合に相当します。
    • Hotfixリリースは、通常パッチバージョンの更新となります。

その他のコミットタイプについて

docs, refactor, style, chore といった、アプリケーションの挙動に直接影響しないコミットは、原則としてバージョン番号をインクリメントしません。

1.2. プレリリースバージョン

  • 正式リリース前の、アルファ版、ベータ版、リリース候補版などには、ハイフンに続けて識別子を付加します。
  • 例:
    • 1.0.0-alpha.1
    • 2.1.0-beta.2
    • 3.0.0-rc.1

2. Gitタグによるバージョンマーキング

  • ルール: 全てのリリース(プレリリースを含む)時には、対応するコミットに対して、バージョン番号を示すGitタグを必ず付与します。
  • フォーマット: バージョン番号の先頭に v を付けます。(例: v1.0.0, v1.2.3-alpha.1
  • 目的:
    • 特定のバージョンが、どの時点のコードに対応するのかを明確にマークします。
    • 後から特定のバージョンのコードを簡単にチェックアウトできるようにします。

3. バージョン番号の管理場所

  • ライブラリやアプリケーションのバージョン番号は、それぞれの技術スタックに適した場所で一元管理します。
  • 例:
    • .NET: .csprojファイル内の<Version>タグ
    • Node.js: package.jsonファイル内のversionフィールド
    • Python: pyproject.toml内のversionキー