ソフトウェアのバージョン管理は、API、パッケージ、またはソフトウェア製品の状態を、一意の名前や番号を割り当てることで迅速に識別する方法を提供します。バージョン管理は、関係者がコードの変更を経時的に追跡するのに役立ちます。バージョン管理スキームには様々な種類がありますが、最も一般的なのは、2013年にトム・プレストン=ワーナー氏によって提案されたセマンティック・バージョニング(SemVer)です。
ソフトウェアの変更を追跡するためにどのようなバージョン管理スキームを採用するかにかかわらず、開発者がソフトウェアのリリースを可能な限りスムーズに行うために従えるいくつかの原則とバージョン管理のベストプラクティスがあります。このプログラミングチュートリアルでは、そのうちのいくつかについて説明します。
バージョン管理ガイドのベスト プラクティスを読む前に、「バージョン管理とは何か?」というチュートリアルを確認することをお勧めします。
使用しているバージョン管理スキームをユーザーに伝える
ほとんどのユーザーはバージョン管理スキームについてほとんど、あるいは全く知らないため、使用しているスキーム、その意味、そして詳細情報の入手先についてユーザーに伝える必要があります。これにはいくつかの方法があります。例えば、ドキュメントの一部として含めたり、メーリングリストやその他の社内コミュニケーションでバージョン管理の詳細を共有したりすることができます。いずれにしても、ユーザーにバージョン管理スキームについて伝えることで、ユーザーは期待を管理しやすくなり、バージョン番号の変更や増加に驚いたり不安になったりすることがなくなります。逆に、ユーザーにバージョン管理スキームについて知らせないと、特に新しいバージョンがリリースされるたびに、ヘルプデスクへの不要な問い合わせが多数発生する可能性があります。
リリースと変更のオープンリストを維持する
普段使っているソフトウェアをいくつか思い浮かべてみてください。おそらく、そのソフトウェアに関するリリーススケジュールが公開されているはずです。おそらく、企業のウェブサイトにウェブページがあるでしょう。例えば、MozillaのFirefoxブラウザのリリーススケジュールは以下のとおりです。
画像提供:Mozilla.org
バージョン リンクをクリックすると、リリース日、新機能、修正、変更、開発者情報など、その特定のリリースに関する詳細情報が記載されたページが表示されます。
他にも、各リリースのコードネームや、該当する場合はサポート終了日(EOL)など、ユーザーと共有できる関連情報があります。EOLは、支出計画を立て、後続バージョンへのアップグレードに必要な時間とリソースを確保するのに役立つため、ユーザーにとって特に役立ちます。
可能な限り一貫性と予測可能性を維持する
誰もサプライズは好きではありません。ですから、ユーザーが何をいつ期待できるかを知れば知るほど良いでしょう。とはいえ、事前に決められたリリーススケジュールを守れるのであれば、そうしてください。さらに、ソフトウェアのリリーススケジュールを決めたのであれば、必ずそれに従ってください。ただ、予定より早く準備ができたから、あるいは、アップグレードの一部を将来のリリースまで延期することにしたからという理由だけで、リリースを早めに出す前に、よく考えてみてください。ユーザーは喜ぶどころか、むしろ苛立ち、他の製品を検討し始めるかもしれません。リリーススケジュールを無視すると、ユーザーと築いてきた信頼関係が崩れ、そもそもバージョン管理システムを導入するメリットが大きく損なわれるからです。
一貫性と予測可能性はバージョン名にも当てはまります。セマンティック バージョニングでは問題になりませんが、他の命名スキームでは時間の経過とともに混乱が生じる可能性があります。良い (悪い?) 例として Microsoft が挙げられます。Windows の命名規則はランダムに変更されるようです。最初は1、2、3でしたが、その後突然、何の警告もなく95、98、2000については年名に切り替えました。しかし、何らかの理由で、 98と2000の間にはNTという名前のリリースがありました。2000の後、Microsoft はなぜかXPとVistaを固有名詞に戻し、最終的に7、8、10では再び数字の名前を使用しています。
開発者がバージョン名を退屈なものにせず、製品を魅力的にすることを心がけていれば、間違いは起こりません。
ユーザーの意見を聞く
ソフトウェア開発者が組織内でバージョン管理スキームを導入した後、それが最適に機能しているかどうかをどのように確認すればよいのでしょうか?ユーザーに確認しない限り、確実なことはわかりません。セマンティック・バージョニングを採用していて、誰からも苦情が出ていないからといって、すべてが順調だと決めつけてはいけません。もしかしたら、あなたの知らない理由で、セマンティック・バージョニングが製品やユーザーにとって最適ではないかもしれません。もしかしたら、あなたが考慮していない、より優れた選択肢があるかもしれません。
ソフトウェアのバージョン管理スキームが「正しい」ものであったとしても、ユーザーはスケジュール管理やリリースの詳細の確認など、あなたが考慮していなかった多くの懸念事項について、多くの意見を述べる可能性があります。ソフトウェアはユーザーを念頭に置いて設計されているので、ユーザーの意見を反映させてみてはいかがでしょうか。そうすることで、ユーザーの同意が得られ、開発プロセスに参加しているという実感を得られるでしょう。
プログラマーがリリース情報を掲載するあらゆる場所は、ユーザーからの意見や質問を集めるのに適した場所です。リリースリストや変更点のページ、メールによるコミュニケーションなど、様々な手段が利用できます。また、ソーシャルメディアも忘れてはいけません。ソフトウェアのリリースに関する議論を始めるのに最適なフォーラムです。
バージョン管理のベストプラクティスに関する最終的な考察
このプログラミングチュートリアルでは、リリースを可能な限りスムーズに進めるためのヒントとなる、バージョン管理のベストプラクティスをいくつか紹介しました。要するに、ユーザーに目標を伝え、可能な限り明確さと透明性を提供することが全てです。迷った時は、情報が少なすぎる、あるいは全くないよりも、情報が多い方が良いに決まっています。