セマンティックシュトラーセ

この記事はWordPress Advent Calendar 2017 5日目へのエントリーです。
みなさんの作られたプラグインやテーマはどのようにバージョン番号を付けられていますか?
今回はソフトウェアのバージョン番号についてのお話です。バージョン番号の意味を知ることで、お手持ちのソースコードの価値を高めてみましょう。
※:バージョン番号と言うのはソフトウェアの特定の段階を区切って現す固有の識別番号のことですたぶん。

最新バージョンのリリースアナウス

最新バージョンのリリースアナウス

WordPressとバージョン

例えばWordPressだと、0.70から現在の4.9.1まで順を追ってこの数字が更新されてきました。
大体の雰囲気で説明すると4.9.1のうち、
4:メジャー番号
9:マイナー番号
1:メンテナンス番号
という分類になっています。
メンテナンス番号は、バグフィックス等が行われると更新されます。マイナー番号は何かしら機能追加や変更があった場合に更新される予定が組まれています。メジャー番号はマイナー番号が9を越えたら更新されます。適当な感じで説明しているので違うかもしれません!

とりあえず上記のような感じで、バージョン番号を辿れば、そのソフトウェアの特定の段階を知ることが出来ます。出来るはずです。出来ますよね? あなたのソフトウェアなら出来ますよね。
(※1)

プラグインのバージョン情報

プラグインのバージョン情報

時を遡ること、2017年、春…

うっかり胃腸炎の病から立ち直ったおれは、念願のWooCommerce魔改造への道を歩み始めていた…
中略(※2)
紆余曲折を経てWooCommerceの魔改造を果たしたおれは、多大な犠牲と引き換えに、いくつかの大きな知見を得た。
その1つが、セマンティック・バージョニングだったのだ!!

Why Use Semantic Versioning?

Why Use Semantic Versioning?

セマンティック街道

それではセマンティック・バージョニングを始めましょう。
以下はセマンティックバージョニングの3原則です。

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

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

  3. 後方互換性を伴うバグ修正をした場合はパッチバージョンを上げます。

出典:セマンティック バージョニング 2.0.0

弊社の現状である、バージョニングハンマーと比較してみましょう

  1. 突然の閃きでメジャーバージョンを、
  2. まあこんなもんだろ…という感じでマイナーバージョンを、
  3. 何かコードを変更した場合はとりあえずパッチバージョンを上げます。

おわかりでしょうか? ぼくはよくわかりません。これの何が問題かというと、ソフトウェアの区切りとしての識別子が、統一性のある意味を持っていないと言うことです。
ソフトウェアの区切りに、統一された意味を持たせるということは、ソフトウェアのバージョンが更新されることで、その価値の積み重なりが視覚的に分かるようになるということですね。ホントかなあ? 知らんけど。

GETだぜ!

GETだぜ!

実践編

ということでソフトウェアの価値観を可視化して現金をGETだぜ!
でもそうは言っても、実際にどのタイミングでバージョン番号を変更していけばいいのでしょう?
そうです、Gitを使いましょう! でもGitじゃなくてもいいです。なんでもいいんです。すみませんでした。GitにはGit-Flowという作法(ブランチモデル)があります。これをセマンティックバージョニングのタイミングと併せて使用してみましょう。
参考文献:Git-Flow
参考文献:見えないチカラ: A successful Git branching model を翻訳しました

git-flow

git-flow

以下、詳細は伏す。

なぜなら、AdventCarendarを読んで結果だけを見て理解した気になっているだけではだめだからだッ!! ここに挙げたキーワードをもとに自分自身の目で確かめて経験を積んでいくことが大切だからだ!! 忙しいから途中で書くのを諦めたとかそういうことよりも大切なことが世の中にはあるし… おまえは仕事も終わっていないのにAdventCalendarの締め切りは守っているんですねえと言われてもウヘヘって応えざるをえない場面も想定されるんですよ!

ですので、もしまだお近くに適当なバージョン管理をされている方がいらっしゃいましたら、ぜひこの機会にセマンティックバージョニング等を取り入れて、お手持ちのソースコードにしっかりとした裏付けのある価値を積み重ねていきましょう! と、忘年会、新年会などでお声がけください。
キミのそのプラグインのあのバージョンは良かったよー、最高だよー! との声援を頂けるようになることをお祈り申し上げまして、わたくしの方からは以上とさせて頂きます。

openSUSE Leap 42.3

openSUSE Leap 42.3

※1:ちなみに、openSUSEというとてもカッコいいOSの現在のバージョンは42.3ですが、次のバージョンは15が予定されていて、以前のバージョンは13.2です。カッコいいぜ!!

※2:魔改造について興味のある方は下記資料をご覧ください。
https://speakerdeck.com/mrexcluded/ben-dang-niatuta-ecpuraguin-woocommerce-womo-gai-zao-sitahua

※2-2:WooCommerce開発者チームもまた、様々な紆余曲折を経てセマンティックバージョニングを取り入れる事になった。そのいきさつについては以下に示す開発者ブログのエントリーに詳しい。でもぼくはスーパーイングリッシュなので実はこのエントリーではなかったかもしれない。大体の感じでご了承頂きたい。
Important update regarding the upcoming WooCommerce release; 2.7 will be 3.0.0 – Develop WooCommerce

※※:この記事はWordPress Advent Calendar 2017 5日目へのエントリーです。