Edited at

「セマンティック バージョニング」を読んだのでバージョニングについてまとめた


はじめに

バージョニングをどうやって行えばいいのかよくわからなかったので自分用まとめも兼ねてまとめておこうと思いました。

今回はセマンティック バージョニングを参考にしました。

上のサイトから要点をまとめました。


メジャーバージョン、マイナーバージョン、パッチバージョン

バージョンを上げるには3つのバージョンを使って表記します。


  • APIの変更に互換性のない場合は メジャーバージョン

  • 後方互換性があり機能性を追加した場合は マイナーバージョン

  • 後方互換性を伴うバグ修正をした場合(1)は パッチバージョン

このシステムをセマンティック バージョニングと呼び、各々上の条件の時、バージョンをあげます。


なぜセマンティック バージョニングを使うのか?


  • 名前を正確な定義を与えることで、開発するソフトウェアにいて、意図が伝わりやすくなる

  • 意図を正確に理解すれば、柔軟な依存性の仕様を作れる

バージョニングのルールはあやふやだったので何かのルールに従うのはいいですね。


仕様書から気になったコトまとめ

仕様書には11個ほどありますが、特にこれはというものをまとめました。


パブリックAPIを宣言する必要がある

セマンティック バージョニングを適用するソフトウェアはパブリックAPIを宣言する必要があります。

公に公開されてるときには、文書だったり、コード自体で表現されていて抜け漏れがないようにしておかないといけません。


バージョンナンバーはX.Y.Zの形式にする

Xがメジャーバージョン、Yがマイナーバージョン、Zがパッチバージョンを表します。

X.Y.Z(メジャー.マイナー.パッチ)のバージョン形式を守る必要があります。

X,Y,Zは負の整数であってはならず、各数値の先頭にゼロを置いてはいけません。

具体的に言うと、

◯ 1.0.0

× 01.0.0

ということですね。

バージョンの数値のアップデートは、

1.9.0 -> 1.10.0 -> 1.11.0

のように数値的にアップデートしていかないといけない点に注意。


一度パッケージをリリースしたら、バージョンのパッケージのコンテンツを修正してはいけない

当たり前っちゃ当たり前ですが、メジャー、マイナー、パッチのバージョンのルールに則って新しいバージョンとしてリリースする必要あり。


メジャーバージョンのゼロは初期段階の開発用、バージョン1.0.0でパブリックAPIを定義

0.Y.Zは初期段階の開発用に使う。

1.0.0でリリース初期版。


メジャーバージョンを上げたら、パッチとマイナーは0にリセット

当たり前ですが、1.10.0 -> 2.0.0

のようにするということ。


マイナーバージョンについて


  • プライベートコード内での新しい機能の追加や改善を取り込んだ場合バージョンを上げる

  • マイナーバージョンを上げたら、パッチバージョンは0にリセット


FAQ

サイト参照。


おわりに

メジャー、マイナー、パッチのルールに従って命名するようにすれば綺麗なバージョニングができるようになると思います。

より詳しくは公式を見てみてください。 参考になれば幸いです!





  1. ここでいうバグ修正とは、間違った振舞いを修正する内部の変更のこと