トップ 最新 追記

Cocoa練習帳

iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど

2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|

2020-04-26 [Cocoa][Swift]Swift Package Manager

CocoaPodsやCarthageのようなパッケージ管理ツールの利用は、少々敬遠していたのだが、Xcode 11からSwift Package Managerと呼ばれるパッケージ管理ツールが利用できるようになったということで調べてみた。

swift.orgのPackage Managerを説明したページで、PlayingCardというサンプル・クラスのパッケージ構造が説明されているが、これをSwift Package Managerのツールを使って生成してみる。

以下のコマンドで、PlayingCardパッケージを生成する。


$ mkdir PlayingCard
$ cd PlayingCard
$ swift package init --type=executable
Creating executable package: PlayingCard
Creating Package.swift
Creating README.md
Creating .gitignore
Creating Sources/
Creating Sources/PlayingCard/main.swift
Creating Tests/
Creating Tests/LinuxMain.swift
Creating Tests/PlayingCardTests/
Creating Tests/PlayingCardTests/PlayingCardTests.swift
Creating Tests/PlayingCardTests/XCTestManifests.swift

gitでバージョン管理をされることを想定した.gitignoreや単体テスト関連の雛形ファイルが生成されている。

ソースファイルはSources/PlayingCard配下に置くことになる。main.swiftという雛形ファイルを生成されているので、これを削除して、swift.orgのPackage Managerで紹介されているPlayingCardのサンプルのPlayingCard.swiftとRank.swift、Suit.swiftを配置することになる。


PlayingCard
├── Package.swift
├── README.md
├── .gitignore
├── Sources
│   └── PlayingCard
│       ├── PlayingCard.swift
│       ├── Rank.swift
│       └── Suit.swift
└── Tests
    ├── LinuxMain.swift
    └── PlayingCardTests
        ├── PlayingCard.swift
        ├── Rank.swift
        ├── Suit.swift
        └── XCTestManifests.swift

上記では、Tests/PlayingCardTests配下もサンプルの内容に変更している。

Swiftのバージョンの違いが理由だと思うが、生成されたPacjage.swiftの内容は、swift.orgのサンプルと異なっている。


// swift-tools-version:5.2
// The swift-tools-version declares the minimum version of Swift required to build this package.
 
import PackageDescription
 
let package = Package(
    name: "PlayingCard",
    dependencies: [
        // Dependencies declare other packages that this package depends on.
        // .package(url: /* package url */, from: "1.0.0"),
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "PlayingCard",
            dependencies: []),
        .testTarget(
            name: "PlayingCardTests",
            dependencies: ["PlayingCard"]),
    ]
)

Package.swiftでは他パッケージとの依存関係が記述できる。

これをgithubなどで公開すれば、Xcodeの File > Swift Packages > Add Package Dependency... で利用できるようになる。


トップ 最新 追記