RubyGem のバージョンを決める時は Semantic Versioning に従おう
Ruby のライブラリである gem を自分で作成する際にぜひ知っておきたい, と言うより知っておくべき gem のバージョンの決め方について紹介します.
公開されているそれぞれの gem のバージョンは Semantic Versioning と言うバージョンの決め方の方針に則り決められています.
なので自分で gem を作成し, gem を更新していく時は, 同じようにその方針に則りながらバージョンを変更していくことになります.
それでは Semantic Versioning に則った gem のバージョンの決め方を紹介します.
Gem のバージョンは x.x.x
という三つの数字から成っており, 左の数字からそれぞれ Major, Minor, Patch と分類され, 次のような意味を持っています:
- Major — 後方互換性のない API の変更 (新しい機能の追加および既存の機能の削除など)
- Minor — 後方互換性のある API の変更 (新しい機能の追加など)
- Patch — 実装レベルの変更 (バグの修正など)
この Semantic Versioning の Major, Minor, Patch のそれぞれの数字を決める例として, 次の CHANGELOG
の例を紹介したいと思います:
* Version 0.0.1: 最初のリリース
* Version 0.0.2: あるバグを修正
* Version 0.1.0: 新たなメソッドを追加
* Version 1.0.0: 既存のメソッドの返り値を変更
実際はこのようにシンプルではないと思いますが, Semantic Versioning によるバージョンの決定は大まかにこのようになります.
この Semantic Versioning を知っておくと gem を作成するときだけでなく, Bundler の Gemfile で gem のバージョンを指定するときにも役に立ちます.
例えば, Gemfile に次のように gem のバージョンを指定すれば, その gem の 1.x.x
の後方互換性を維持できます:
gem '<gem_name>', '>= 1.0.0', '< 2.0'
もしくはこのようにも書けます:
gem '<gem_name>', '~> 1.0'
まとめ
Ruby の gem を自分で作成してバージョンを決めていく際は, Semantic Versioning に則って決めていただければと思います.
Gem を作成しない場合も Semantic Versioning を知っていると Bundler の Gemfile で gem のバージョンを指定するときに役立ちます.
Semantic Versioning のより詳しい情報は Patterns - RubyGems Guides を参照していただければと思います.
関連記事
Ruby の正規表現を備忘録としてまとめてみた2018.08.30
Ruby のグローバル変数をそれぞれ調べてみた2018.06.12
Ruby のクラスやメソッドのドキュメントを見れる ri コマンドが便利な件2018.09.08
Ruby の正規表現で素数かどうかを確認する方法2018.09.11
Ruby の StandardError でどういう間違いをすると, どの例外が発生するのかのメモ2018.07.13