|
本サイトは移転しました。旧アドレスからのリダイレクトは2025年03月31日(月)まで有効です。
|
🛈 | ✖ |
アプリケーション開発におけるソフトウェアバージョン番号の設定ポリシーを説明する。
ソフトウェアバージョンは時系列による版の違いを明示する目的でアプリケーションに付加される名称であり、ほとんどの場合は整数値の組み合わせ番号として表現される。意外にも標準的な書式が定まっておらず、開発者の好みに任される。
アプリケーション開発は実行形式以外に様々なファイル(例えばヘルプファイル、インストーラ、アーカイブファイル)を伴うのが常で、その全てでバージョン番号を整合させるのは個人レベルの開発でも煩雑で混乱を招く。本サイトは自作ツールでバージョン番号管理を自動化する。
本サイトはウィキペディア(英語)に例示される多くの書式から以下を選択する。
本サイトはrevisionより下位のbuild countを追加定義するが、その表示は他と異なり丸括弧()を用いる。build countはビルド回数をカウントするものとして製品バージョンの一部と見なさない。
製品バージョンの更新を必要とするイベントが発生した場合はその重要性にふさわしい番号(major、minor、build、revisionのいずれか)を1増加し、それより下位の番号(build countを含む)を0にリセットする。インストーラを作成したら必ずイベントが発生したとして製品バージョンを更新するが、イベント発生はインストーラ作成に限定しない。
build countはある製品バージョンにおけるビルド回数をカウントする。イベントが発生してから次のビルドを実行するまでbuild countは0であるが、実行形式ファイルの作成で必ずビルドが実行されるため、実行形式ファイルのbuild countが0になることはない。開発中プロジェクトの製品バージョンおよびビルド回数はプロジェクトディレクトリのデータファイルに保持され、通常は最後にビルドされた実行形式ファイルの製品バージョンおよびビルド回数と一致するが、イベント発生(製品バージョン更新)から次のビルドまでは一致しない。32ビット/64ビット両方を出荷するアプリケーションではそれぞれの製品バージョンは一致するがビルド回数は異なる。
ソフトウェアステータス(software status)とその省略形(abbreviation)として通常はAlpha(a)、Beta(b)、Release candidate(rc)などが用いられる。しかし本サイトはこれらをプロジェクトターゲット名で代用する。
ターゲット | ステータス | 省略形 |
---|---|---|
Debug | Debug | d |
Debug32 | Debug32 | d32 |
Debug64 | Debug64 | d64 |
Release | Release | r |
Release32 | Release32 | r32 |
Release64 | Release64 | r64 |
製品バージョン(およびビルド回数)にステータス併記する場合は以下のいずれかとする。
統合開発環境Code::Blocksにもメニュー[Project|Autoversioning]にバージョン番号管理機能が組み込まれていて、その書式は本サイトの用いる書式にほぼ等しい。サイト作成者は当初この機能を使用していたが不具合が多く自作ツールを開発するに至った。
本サイトは自作ツールでプロジェクトのバージョン番号(製品バージョンおよびビルド回数)を統一管理する。
内容 | Code::Blocks | 自作ツール |
---|---|---|
日 | DATE | #{DATE} |
月 | MONTH | #{MONTH} |
年 | YEAR | #{YEAR} |
Software Status | STATUS | #{STATUS} |
Abbreviation | STATUS_SHORT | #{STATUS_SHORT} |
Major Version | MAJOR | #{MAJOR} |
Minor Version | MINOR | #{MINOR} |
Build Number | BUILD | #{BUILD} |
Revision | REVISION | #{REVISION} |
Build Count | BUILDS_COUNT | #{BUILD_COUNT} |
バージョン番号を管理するファイル配置を示す。
ディレクトリ | ファイル | 内容 |
---|---|---|
[プロジェクトディレクトリ] | Desktop2.cbp | Code::Blocksプロジェクト |
│ | autoversion.dat | バージョン番号データ |
│ | version_macro.h | バージョンマクロ定義インクルード |
│ | *.cpp, *.h | ソースコード、インクルード |
│ | resource.rc | ウィンドウズリソース |
├ bin | ... | ... |
├ obj | ... | ... |
├ doxygen | Doxyfile | ソースコード解析用Doxygen設定 |
│ | Doxyfile_winchm | HTMLヘルプファイル用Doxygen設定 |
│ | Doxyfile_autoversion | PROJECT_NUMBER定義Doxygen設定 |
│ | ... | ... |
├ innosetup | InnoSetup.iss | Inno Setupスクリプト |
│ | ... | ... |
└ autoversion-template | version_macro.h | バージョンマクロ定義インクルードテンプレート |
└ doxygen | Doxyfile_autoversion | PROJECT_NUMBER定義Doxygen設定テンプレート |
autoversion-template\version_macro.hとautoversion-template\doxygen\Doxyfile_autoversionはプレースホルダー文字列を含み、自作ツールはプレースホルダー文字列をautoversion.datに記憶されるバージョン情報に置き換えてversion_macro.hとdoxygen\Doxyfile_autoversionを生成する。任意のソースコード(*.cpp)あるいはインクルード(*.h)はversion_macro.hをインクルードしてバージョン番号を得る。resource.rcもversion_macro.hをインクルードし、実行形式ファイルメタデータを設定する。さらにinnosetup\InnoSetup.issもversion_macro.hをインクルードしてインストール時に表示するバージョン番号を得る。doxygen\Doxyfileは@INCLUDEタグでDoxyfile_autoversionをインクルードしてPROJECT_NUMBERオプションに定義されたバージョン番号を得る。