Flutterには、外部に公開されている便利な機能のプログラムとして様々な「パッケージ(Package)」が用意されており、
パッケージを使う際には、pubspec.yamlファイルに以下のような感じでバージョンコードを設定しますが(以下の例では「9.5.2」)、
このバージョンコードの付け方は、「セマンティックバージョニング(Semantic Versioning)」という規則に従った「X.Y.Z」形式となっており、
- 「X」を「メジャーバージョン」
- 「Y」を「マイナーバージョン」
- 「Z」を「パッチバージョン」
と呼びます。
そして、バージョンを上げる際は、
- APIの変更に互換性のない場合はメジャーバージョンを
- 後方互換性があり機能性を追加した場合はマイナーバージョンを
- 後方互換性を伴うバグ修正をした場合はパッチバージョンを
上げることになっています。
たとえば、バージョンコードが「1.2.0」のパッケージがあった場合、
- APIの変更に互換性のない場合は「2.0.0」に
- 後方互換性があり機能性を追加した場合は「1.3.0」に
- 後方互換性を伴うバグ修正をした場合は「1.2.1」
となります。
ただし、メジャーバージョンの数値が1以上でない(0の場合)は、まだ安定版ではない開発段階のパッケージであることを意味しており、その場合にAPIの変更に互換性のない場合の変更がある場合は、メジャーバージョンではなくマイナーバージョンが変更されます(メジャーバージョンは「0」のまま変更できないので)。
Although semantic versioning doesn’t promise any compatibility between versions prior to
1.0.0
, the Dart community convention is to treat those versions semantically as well. The interpretation of each number is just shifted down one slot: going from0.1.2
to0.2.0
indicates a breaking change, going to0.1.3
indicates a new feature, and going to0.1.2+1
indicates a change that doesn’t affect the public API.(セマンティックバージョニングは 1.0.0 より前のバージョンとの互換性を約束するものではありませんが、Dart コミュニティの慣例では、それらのバージョンもセマンティックに扱います。0.1.2 から 0.2.0 へは破格の変更、 0.1.3 へは新機能、 0.1.2+1 へは公開 API に影響しない変更というように、それぞれの数字の解釈が一段落しているだけです)。
(詳しくは、以下の動画で解説していますので、よろしければご覧ください)