[iOS]SPMライブラリを自作
自作ライブラリをOSSとして公開したいと思い、作成しました。初めての自作ライブラリです。
ライブラリにすることは利点が多いです。ライブラリで担当するべき機能の境界がはっきりしますし、再利用性も上がります。バージョン管理もできますし、使ってくれる人がいればフィードバッグももらえます。
環境・技術
- Xcode12.2
- iOS13以降
- Swift Package Manager
- SwiftUI
- 他の依存関係なし
Swift Packageプロジェクトを作成
参考:Creating a Standalone Swift Package with Xcode
Xcodeメニュー>File>New>Swift Package
から作成します。
デモ用プロジェクトを作成しパッケージを追加
参考:Editing a Package Dependency as a Local Package
先ほど作成したPackageを使うためのデモ用プロジェクトを作成します。詳しい方法は割愛します。
デモ用プロジェクトを作成する利点ですが、Packageに余計なソースコードを入れないということが挙げられます。デモプロジェクトについては、READMEにリポジトリ情報を記載するとなお良いかと思います。
プロジェクトを作成したら、先ほど作成したSwift Packageをドラッグ&ドロップで追加します。この方法ですと、Swift Packageを編集しgithubにアップロードしたり、使う側でSwift Packageの更新をしなくて済みます。
Framework, Libraryとして依存関係に追加(ドキュメントに書いてなかったこと)
Packageフォルダを追加する方法で、ドキュメントに書かれていなかったことがありました。フォルダをドラッグ&ドロップするだけでは、ライブラリをimportすることができませんでした。解決するためには以下の操作が必要です。
プロジェクト設定>General>Frameworks, Libraries and Embedded Contentで追加したライブラリを選択
開発・デバッグする際の注意点
SwiftUIベースのライブラリを今回作成しましたが、注意点があります。
SwiftUIのプレビュー機能はSwift Package側では今の所使えないという点です。(参考)
リポジトリ
今回作成したSwift Packageとデモプロジェクトはこちらです。
https://github.com/usk2000/ChartSwift
https://github.com/usk2000/ChartSwiftDemo
参考文献
Swift Packages
Creating a Standalone Swift Package with Xcode
Developing a Swift Package in Tandem with an App
Editing a Package Dependency as a Local Package