Sponsor Link
セマンティックバージョニング
バージョン番号は、セマンティックバージョニングというコンセプトで付けられることが多いです。
依存関係でのバージョン指定も、このコンセプトで付けられていることを前提にいろいろと指定できるようになっています。

指定に使用される struct
バージョンを表現するための struct として Version が定義されています。
1 2 3 |
let version123 = Version(1,2,3) |
上記は、バージョン 1.2.3 を表します。
それぞれ、メジャーバージョン、マイナーバージョン、パッチバージョンです。
Apple のドキュメントは、こちら。
なお、文字列を使って初期化することもできます。(Apple のサンプルの多くは、文字列を使って初期化しています)
1 2 3 |
let version123 = Version(”1.2.3") |
指定方法概要
大きく、3種類の方法があります。
- Range 指定
- バージョンの範囲を指定
- from 指定
- 特定のバージョン以降という指定
- Requirement 指定
- メジャーバージョンや特定のブランチ等の指定
Range 指定
バージョン 1.2.3 から 1.3.5 までの間というような指定ができます。
通常の Swift での Range と同様に、範囲を指定できます。
1 2 3 4 |
.package(url: "https://example.com/example-package.git", Version(1,2,3)..<Version(1,2,6)), |
1 2 3 4 |
.package(url: "https://example.com/example-package.git", Version(1,2,3)...Version(1,2,6)), |
from 指定
特定のバージョン以降という指定ができます。
1 2 3 4 |
.package(url: "https://example.com/example-package.git", from: Version(1,2,3)), |
Requirement 指定
セマンティクスバージョニングを想定して、その意味に沿った指定ができます。
例えば、同一メジャーバージョンを指定することで、互換性を持つバージョンを指定することができます。
Requirement 指定を使うことで、特定のブランチ・特定のコミットを指定することもできます。
upToNextMajor
メジャーバージョンは同じままで、特定のバージョン以降
1 2 3 4 |
.package(url: "https://example.com/example-package.git", .upToNextMajor(from:Version(1,2,3))), |
upToNextMinor
マイナーバージョンは同じままで、特定のバージョン以降
1 2 3 4 |
.package(url: "https://example.com/example-package.git", .upToNextMinor(from:Version(1,2,3))), |
exact
特定のバージョンを直接指定
1 2 3 4 |
.package(url: "https://example.com/example-package.git", .exact(Version(1,2,3))), |
branch
特定のブランチを指定
1 2 3 4 |
.package(url: "https://example.com/example-package.git", .branch("hotfix")), |
revision
ハッシュ値を指定することで特定の commit を指定
1 2 3 4 |
.package(url: "https://example.com/example-package.git", .revision("b3f94882ac")), |
まとめ
SwiftPM で外部依存するライブラリには、様々なバージョンの制約を設定することができます。
- 特定バージョン以降を指定
- メジャーバージョンを指定
- マイナーバージョンを指定
- 特定のバージョンを指定
- ブランチを指定
- コミットを指定
メジャーバージョン指定等は、ライブラリが、セマンティクスバージョニングを使用していることが前提です。
説明は以上です。
不明な点やおかしな点ありましたら、ご連絡いただけるとありがたいです。
Sponsor Link