バージョニングポリシー

v2以降のSDKではバージョンナンバーはセマンティックバージョニングに従って決定します。

バージョンナンバーはx.y.zの形式になります。
x, y, zの数字をそれぞれ、メジャーバージョン、マイナーバージョン、パッチバージョンと呼び、以下のようにリリース内容に応じて更新します。

  • 後方互換性のない変更を導入する場合にはメジャーバージョンを更新します。
  • 新機能の追加や、緊急性の低い不具合の修正を行った場合にはマイナーバージョンを更新します。
  • 緊急性の高い不具合を修正した場合にはパッチバージョンを更新します。

モジュールとバージョンナンバー

iOS SDK v2は複数のモジュールに分かれて提供されており、各モジュールがバージョンナンバーを持ちます。各モジュールのバージョンは独立して更新されます。

例えば、あるモジュールで後方互換性のない変更を導入しメジャーバージョンが上がった場合でも、そのモジュールに依存していないモジュールのバージョンは更新されません。
また、依存しているモジュールについても、そのモジュール自体のAPIに後方互換性がない変更が加わらない限りは、マイナーバージョンかパッチバージョンの更新となります。

全体のバージョン

Swift Package ManagerやCarthageでは、通常一つのgit commitを参照して依存解決するため、現在のSDKの提供方式では個別のモジュールのバージョン指定ができません。
また、SDK全体のバージョニングのgit tagが存在しないことから、それぞれのバージョン管理システムの恩恵を受けられないケースがありました。
そのためKarteCore:2.19.0のリリースより、iOS SDK全体のバージョンタグを導入しました。このリリースを全体バージョン2.0.0とし、これ以降は上記のバージョニングポリシーに従ってバージョンを更新していきます。

全体のバージョンについてもモジュールごとのバージョン更新ルールと同様ですが、モジュールのバージョン更新との関係は下記のようになります。

  • 一つ以上のモジュールのバージョンが更新された場合に、そのアップデートと同じレベルのバージョン更新を行う。
  • 複数種類の更新を同時に行う場合には、大きなバージョン更新のみ行う。
    • 例:マイナーバージョン更新とパッチバージョン更新を同時に行う場合、全体としてはマイナーバージョンの更新となります。
  • 直接参照する必要のないモジュール(内部モジュール)のバージョン更新のレベルは特に考慮しない
    • 内部モジュールとは2.0.0現在、KarteUtilitiesやKarteCrashReporter(PLCrashReporterのfork)のことです。
    • 内部モジュールのバージョン更新は、全体バージョンには影響を与えず、それを参照するモジュールのバージョン更新のみを考慮します。
    • 内部モジュールにクリティカルな更新が発生した場合、それを参照する各モジュールも依存更新のためのバージョン更新を行います。