Xcode 11 + Swift Package Managerでライブラリを管理する

はじめに

こんにちは。CX事業本部の平屋です。

本記事では、Xcode 11に統合されたSwift Package Managerでライブラリを管理する手順を紹介します。

検証環境

  • macOS Catalina 10.15.2
  • Xcode Version 11.3

Swift Package Managerとは

Swift Package ManagerはSwift用の公式のライブラリ管理ツールです。Swiftで書かれており、バージョン3.0のSwift以降に同梱されます。CocoaPodsと比べると新しめのツールです。バージョン11以降のXcodeではライブラリの管理をXcodeのUIで実行できるようになりました。CocoaPodsやCarthageのように、明示的に設定ファイルを作成したりコマンドを実行したりする必要がありません。

ライブラリがSwift Package Managerに対応しているかどうか

Swift Package Managerに対応しているライブラリのルートディレクトリには「Package.swift」ファイルが存在します。CocoaPodsの「*.podspec」ファイルと同様の役割を担うファイルです。

ライブラリの追加

ではさっそくライブラリの追加手順を紹介していきます。

プロジェクトを開く

ライブラリを追加したいプロジェクトをXcodeで開きます。

ライブラリの追加

[File] > [Swift Packages] > [Add Package Dependency...]をクリックします。

ライブラリのリポジトリURLを指定する画面が表示されます。

今回は「Alamofire」をプロジェクトに追加します。AlamofireのリポジトリのURL(https://github.com/Alamofire/Alamofire)を入力し、[Next]をクリックします。

バージョン指定

ライブラリ情報取得の実行後、ライブラリのバージョンを指定する画面が表示されます。CocoaPodsやCarthageと同様のバージョン指定を使用できます。

バージョン指定にはVersion、Branch、Commitの3つのタイプがあります。

タイプ 内容
Version 特定のバージョンまたはバージョンの範囲を指定する
Branch ブランチ名を指定する
Commit コミットのIDを指定する

また、Versionを指定する場合はさらにオプションを選択できます。

タイプ 内容 例の意味
Up to Next Major 指定バージョン以上かつ次のメジャーバージョンより小さい 1.2.3 < 2.0.0 1.2.3以上かつ2.0.0より小さい
Up to Next Minor 指定バージョン以上かつ次のマイナーバージョンより小さい 1.2.3 < 1.3.0 1.2.3以上かつ1.3.0より小さい
Range 指定バージョン以上かつ指定バージョンより小さい 1.2.3 < 1.5.0 1.2.3以上かつ1.5.0より小さい |s
Exact 特定のバージョンを指定する 1.2.3 1.2.3

ここでは、デフォルトの[Version]および[Up to Next Major]を選択したまま[Next]をクリックします。

追加先の選択

ソースコードの取得の実行後、ライブラリの追加先を選択する画面が表示されます。追加先を選択し[Finish]をクリックします。

Alamofireがプロジェクトに追加されました。

あとは任意のソースコードにインポート文を追加すれば、Alamofireの機能を利用できます。

import Alamofire

ライブラリ一覧の表示

[プロジェクトファイル] > [{PROJECT名}] > [Swift Packages]を選択すれば、追加済みのライブラリ一覧を表示できます。この画面では「バージョン指定の変更」や「ライブラリの削除」の操作も行えます。

バージョン指定の変更

バージョン指定を変更するには対象のライブラリをダブルクリックします。

ダイアログが表示されるので、値を変更して[Done]をクリックします。

ライブラリの削除

ライブラリを削除するには、削除したいライブラリを選択し、[-]をクリックします。

確認ダイアログが表示されるので[Remove]をクリックします。

ライブラリの更新

ライブラリを更新するには、[File] > [Swift Packages] > [Update to Latest Package Versions...]をクリックします。

新しいバージョンが存在する場合は、ソースコードの取得が実行され、新しいバージョンにアップデートされます。ライブラリのバージョンを明示的に指定している場合はその指定が考慮されます。その指定を満たす新しいバージョンがない場合は、 [Update to Latest Package Versions...]を実行してもバージョンは更新されません。

まとめ

本記事ではXcode 11に統合されたSwift Package Managerでライブラリを管理する手順を紹介しました。

設定ファイルを作成したりコマンドを実行したりする必要がないので、ライブラリの管理が楽だなと思いました!

参考