1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

今更ながらSwift5の変更点について調べました(パッケージマネージャ編)

Posted at

前置き

最後にパッケージマネージャについての変更点です。
パッケージマネージャなので開発リーダーや案件管理者の方は知っておいて損はなさそうです。
ここまで長いこと調査(理解)に時間をかけましたが、今回は少ないのでサクッといけそうwww

パッケージ構成ファイルの追加

[
SE-0219]

SwiftPMが追加入力として使用できる依存関係ごとのミラーリング情報を保存するために、「パッケージ構成」ファイルが導入されたとのこと。このファイルはjson形式ですがSwiftPMが操作することを前提としているそうです。
なので勝手に編集することはしない方が良さそうです。

パッケージマネージャープラットフォームの展開設定

[SE-0236]

SwiftPMは現在、macOSデプロイメントターゲットにハードコードされた値を使用してプラットフォーム展開しています。これにより、プラットフォームがハードコーディングされていたりしているそうで変えたいとのこと。
そこでapiを新たに導入してターゲットを明確化させようと言うことらしいです。

/// Represents a supported platform.
struct SupportedPlatform {
    static func macOS(_ version: MacOSVersion) -> SupportedPlatform
    static func macOS(_ versionString: String) -> SupportedPlatform

    static func tvOS(_ version: TVOSVersion) -> SupportedPlatform
    static func tvOS(_ versionString: String) -> SupportedPlatform

    static func iOS(_ version: IOSVersion) -> SupportedPlatform
    static func iOS(_ versionString: String) -> SupportedPlatform

    static func watchOS(_ version: WatchOSVersion) -> SupportedPlatform
    static func watchOS(_ versionString: String) -> SupportedPlatform
}

/// List of known versions.
extension SupportedPlatform.MacOSVersion {
    static let v10_10: MacOSVersion
    static let v10_11: MacOSVersion
    static let v10_12: MacOSVersion
    ...
}

final class Package {
    init(
        name: String,
        platforms: [SupportedPlatform]? = nil,
        ...
    )
}

パッケージマネージャーターゲット固有のビルド設定

[
SE-0238]

SwiftPMは現在、ビルドツール(コンパイラ、リンカ、等)は、ビルド時に呼び出される方法をカスタマイズするための機能でやっていて、ターゲットを構築するためにいくつかの基本的なカスタマイズを行いたいパッケージ作成者にとって色々と面倒なようです。
そこでターゲット・ファクトリメソッドって奴に引数を追加してあげてプロジェクトとライブラリのコンパイルのバージョンを区別しようと言うことらしいです。

これによって**プロジェクトのバージョンとライブラリのswiftバージョンが異なってもビルドできるようになるのか?**これは実際に検証実験が必要なので後日加筆したいと思います。

終わりに

一つづつ調べて行きましたが、途中からswiftを始めた身としてはかなり勉強になりました。
経験が浅くとも調べることによって過去の経緯・今後の展開等把握できるいい機会となると思うので、じっくり調べてみるのも悪くないと思いました。
今後も新しいのが出たら自分なりに解釈して行こうと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?