Skip to content
Latchkey

セマンティックバージョニングとは何か?

セマンティックバージョニングとは、2.4.1 のようなバージョン番号が、それがどの種類の変更を表すかをエンコードするバージョニングスキームです。

バージョン番号は任意であることもできますが、意味を持たせることもできます。セマンティックバージョニング (SemVer) は番号に意味を持たせます。番号を読むことで、更新が安全なバグ修正か、後方互換の feature か、breaking change かが分かります。

major.minor.patch スキーム

SemVer のバージョンは 3 つの部分を持ちます: MAJOR.MINOR.PATCH。互換性のない breaking な変更には MAJOR を、後方互換の新しい feature には MINOR を、後方互換のバグ修正には PATCH を上げます。したがって 2.4.1 は、最後の minor 以降に 4 回の feature 追加と 1 回の patch がある major バージョン 2 を意味します。

各インクリメントが示すもの

  • PATCH (2.4.0 -> 2.4.1): バグ修正、採用して安全。
  • MINOR (2.4.1 -> 2.5.0): 新しい feature、依然として後方互換。
  • MAJOR (2.5.0 -> 3.0.0): breaking change; アップグレード前にレビューする。

1.2.0 のライブラリがバグを修正して 1.2.1 をリリースします。ユーザーは何も考えずにアップグレードできます。次に新しいオプションの feature を追加して 1.3.0 をリリースします。依然として安全です。後に非推奨の関数を削除する breaking change を行うので、2.0.0 をリリースし、ユーザーがアップグレード前にコードをチェックすべきことを示します。

なぜ依存関係にとって重要か

プロジェクトが多くのライブラリに依存するとき、SemVer はどの更新を自動的に受け入れるかを表現できるようにします。「patch と minor は受け入れるが major は受け入れない」というルールは、ライブラリが SemVer を正直に守ることに完全に依存します。これが依存関係の自動更新を無謀ではなく安全にするものです。

自動化する

多くのチームは commit メッセージに基づいてバージョンのインクリメントを自動化します。fix の commit は patch を上げ、feature は minor を上げ、breaking change のマーカーは major を上げます。これは人間の推測を排除し、バージョンを正直に保ちます。それが下流の消費者が依存するものです。

重要なポイント

  • SemVer は変更の種類を MAJOR.MINOR.PATCH としてエンコードする。
  • major は breaking、minor は新しい feature、patch は修正を意味する。
  • 依存関係ツールが安全な更新を自動的に受け入れられるようにする。

関連ガイド