バージョン番号の付け方について少し踏み込んだ疑問点
はじめに
梅雨入りにより外出が億劫になっているこの頃、皆様いかがお過ごしでしょうか。
別に雨が降ってなくても外出なんてしないとは言わない約束
外出しないためコードを書くしかやることがなく、結果的に現在Javaで開発しているライブラリの正式版リリースまでこぎつけることができました。
さて、その際にちょっと思ったバージョン番号の付け方ですが、どのように付ければよいか、という疑問が上がったので、ここにメモ書きとして書いてみました。
よくある解答例
一般的には、3桁ないし4桁で表すことが多いと思います。
3桁の例の説明:
- バージョン番号の付与 - ソフトウェアエンジニアリング - Torutk
- リリースバージョン番号の付け方, Amorphisの新作が素晴らし過ぎるので単独で来日ツアーやって欲しい - ariyasacca(2011-06-05)
4桁の例の説明:
他にも、次のような例もあります。
- 日付をそのままバージョン番号にする
- 奇数番号と偶数番号で違う意味を持たせる
- 細かな違いはバージョン番号の後ろに文字を付与する
- バージョンに名前を付ける
- 円周率に近づける
参考:
さて、大体のサイトから得た知見を基にすると、バージョン番号の付け方は3桁ないし4桁のほうが(ヒット件数などから)多くの人にわかりやすいだろう、という話でまとまりそうです。
直面した問題
以上の情報を元に、今回は3桁のバージョン番号を使うことにしました。
そこで、次の問題に直面しました。
Javaにおけるパッケージ構造だけを全て変更したが、処理内容などは一切変わっていない場合、どのバージョン番号を変えればよいのか
バージョン番号の見方 | Pickles Framework(PxFW) official website によると、3桁のバージョン番号の更新は次の意味を持つそうです。
- 大規模な仕様の変更や追加を伴う場合にはメジャーバージョンを上げる
- 小規模な仕様の変更や追加の場合は、マイナーバージョンを上げる
- バグ修正、ドキュメント、コメント修正等の小さな変更は、リリース番号を上げる
今回の例では、ルートパッケージに複数存在していたpackageA
、packageB
、packageC
パッケージ群を、there/is/root
パッケージ下に移動しました。
変更前
カレントディレクトリ ├─packageA ├─packageB └─packageC
変更後
カレントディレクトリ └─there └─is └─root ├─packageA ├─packageB └─packageC
もし旧バージョンのライブラリを利用しているプログラムが、新バージョンのライブラリを利用するためには、import
文を全て書換えなければなりません。
変更前
import packageA; import packageB; import packageC;
変更後
import there.is.root.packageA; import there.is.root.packageB; import there.is.root.packageC;
この意味では、次の要件にあてはまるため、メジャーバージョン番号を上げる必要がありそうです。
大規模な仕様の変更や追加を伴う場合
ですが、ソースコード自体の処理内容やメソッド名などは一切変更されておらず、しいて言えば利用例を書いていたJavadocを書換えた程度です。
この意味では、次の要件にあてはまるため、リリース番号を上げる必要がありそうです。
バグ修正、ドキュメント、コメント修正等の小さな変更
おわりに
オチは特にありません。
結局、今回はリリース番号を上げる程度に留めました。
どこまでが小さな変更で、どこからが大きな変更なのか、という具体例については、探した感じではどこにもなかったので、書いてみた次第です。
もし自分はこう思う、という方は、別にコメントに書かなくてもいいので、少し考えてみてください。