LoginSignup
9
4

More than 1 year has passed since last update.

Swift Package Managerでライブラリを自作して使うまでの最初の一歩

Last updated at Posted at 2021-10-18

今回作るもの

スクリーンショット 2021-10-16 11.07.25.jpg
今回はSwift Package Manager(以下SPM)の作成にチャレンジしてみましたので、作成方法から使用方法を体験的に学べるようご紹介したいと思います。

そもそもSPMってなに?と言う方はこちらを一読される事をおすすめします!

記事見る時間が無い。
と言う方には"SPMは、Swiftコードの配布を管理するためのツールで、手軽に自作したライブラリを公開したり、使用したりできるAppleの純正ツール"ぐらいでOKかと。

では
・SPM作成
・SPM公開
・SPM使用
のたった3工程でSPMを作って使う!!方法をご紹介していきます。

環境

・ macOS Monterey : 12.0
・ Xcode : 13.0

SPM作成

まずXcodeを起動します。
続いてFile→New→Packageを選択します。
2.jpg

初期画面が表示されるのでSave Asにてファイル名を指定します。(今回は初期設定のまま使用しています。)

スクリーンショット 2021-10-16 11.50.17.jpg
今回はこのままプロジェクトに入れずPackageを作りますが、Add toにプロジェクトを指定すると直接Packageに入れる事ができます。
(直接入れるとPackageがプロジェクトに下記のように追加されます。)
スクリーンショット 2021-10-16 18.30.02.jpg
たったこれだけでPackageの作成ができます。
スクリーンショット 2021-10-16 18.40.23.jpg
Xcode13.0ではMyLibrary.swiftに以下のようなコードがデフォルトであります。

public struct MyLibrary {
    public private(set) var text = "Hello, World!"
    public init() {
    }
}

今回は上記を以下のように変更します。

import SwiftUI

@available(iOS 13.0, *)
public struct MyLibrary: View {
    public init() {

    }
    public var body: some View {
        HStack {
           Image(systemName: "star.fill")
            Text("初めてのSPM")
        }
    }
}

上記のコードは星のImageとTextを横一列に表示させるコードです。
またここではpublic init()でイニシャライザを指定しておかないと下記のエラーが出てきます。
'MyLibrary' initializer is inaccessible due to 'internal' protection level

これでSPMは完成です。

SPM公開

続いて公開していきます。
公開はシンプルにGitHubにタグをつけて公開するだけです。
commitとpushで行えます。(commit、pushがわからない人はコチラをどうぞ!!)
タグ付けはターミナルで

git tag 1.0.0

を行うか、GtiHub上で追加できます。
スクリーンショット 2021-10-17 22.08.16.jpg

以上で公開の手順は終了です。
(以下Tips)

Tips

Source Control→Create Git Repositoriesにてローカルリポジトリを作成し
project→New "プロジェクト名" RemoteからGitHubとXcodeを連携させる事ができます。
これでXcode内でcommit、pushを行うことができます。
(非常に参考になる記事がありますのでご紹介させて頂きます)

SPM使用

最後に先ほど作成してGitHubに公開したSPMを使用していきます。
File→Add Packages...を選択します。
スクリーンショット 2021-10-17 22.15.29.png

作成したリポジトリのURLもしくはSSHを入力してAdd PackageでPackageの追加を行います。

スクリーンショット 2021-10-17 22.51.18.jpg

無事追加できれば以下のようにNavigator Areaに追加されます。
スクリーンショット 2021-10-17 22.57.49.jpg
後は以下のようにimportして使用します。

import SwiftUI
import MyLibrary

struct SwiftPakageManagerSampler: View {
    var body: some View {
        MyLibrary()
    }
}

struct SwiftPakageManagerSampler_Previews: PreviewProvider {
    static var previews: some View {
        SwiftPakageManagerSampler()
    }
}

これで無事表示されれば成功です☆
1.jpg

まとめ

いかがでしたでしょうか?たった3工程で簡単にSPMの作成、公開、使用と一通りできるのは非常に良いと思います^^
また標準機能で使用できるので作成から使用までシームレスにできる点も非常に良いと思いましたので今後ガシガシ使用していきたいなと思います!!

9
4
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
9
4