初歩的な話だが、
セマンティックバージョニングという言葉を聞いて今まで流していたが。
ふと考えてみるとセマンティックバージョニングって何なんだろう?と思った。
今まではバージョン管理方式ぐらいの軽い認識しかなかったので、
これを期に調べてみた
セマンティックバージョニングとは?
一般的によく目にする
「v1.23.45」
のようなバージョニング方式(バージョン管理の命名規則)のことを指して呼ぶ。
メジャーバージョン.マイナーバージョン.パッチバージョンの3つのセグメントから構成される。
そして、それぞれ変更内容によって、
「どのセグメントのバージョンの数をインクリメントするか?」
決まっているらしい。
- メジャーバージョン:互換性のない場合に上げる
- マイナーバージョン:後方互換性がある機能追加した場合マイナーバージョンを上げる
- パッチバージョン:後方互換性のあるバグ修正、パッチバージョンを上げる
仕様書を書いたのは、Gravatarの考案者であり、GitHubの共同創設者である
Tom Preston-Werner氏だそうだ。
なぜ使用するのか?
仕様書を読んでみた。
なぜセマンティック バージョニングを使用するのか?
このアイデアは新しいものでもなければ、革新的なものでもありません。実際、みなさんも似たよう>な取り組みを既におこなっているかもしれません。問題は「似ている」のでは不十分だということです。正式な仕様書による取り決めがなければ、バージョンナンバーは依存性の管理において基本的には無意味です。上記のアイデアに対して名前と正確な定義を与えることよって、あなたの開発するソフトウェアにおいて、あなたの意図がユーザーに対して伝わりやすくなることでしょう。一度、これらの意図を正確にしてしまえば、柔軟な(しかし、柔軟すぎてはいけない)依存性の仕様を作ることができます。
それまで、明確なルールがあるとは知らなかった。
というより、気にしていなかった。
感想
問題は「似ている」のでは不十分だということです。正式な仕様書による取り決めがなければ、バージョンナンバーは依存性の管理において基本的には無意味です。
読んでいて、すごくドキッとした。
今後は、ちゃんと仕様書に従った管理をしたい