Swift

How to Publish Swift Libraries Using Swift Package Manager (SPM) Guide

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

Swift パッケージマネージャーでライブラリを公開するメリットと概要

Swift Package Manager(SPM)は、Swift開発者のための依存関係管理ツールとして広く利用されています。ライブラリの公開には、コードの再利用性向上コミュニティへの貢献といった利点があります。特に、GitHubやSwift Package Indexを活用することで、他の開発者に簡単に利用してもらえる形で配布可能です。以下では、具体的な手順に沿った実践的なガイドをご提供します。


Swift Package Managerの基本設定方法

SPMを活用するためには、まずプロジェクトの初期設定を行う必要があります。このステップが正しく進めば、後のライブラリ作成や公開がスムーズになります。

Swift Package Managerは、swift package initコマンドでプロジェクトを作成できます。このコマンドにより、自動生成されるファイル・フォルダには以下のような構造があります。

ファイル/ディレクトリ 説明
Sources/ ソースコードを置く場所(ライブラリならMyLibrary.swiftなど)
Tests/ テストコードを置く場所(XCTestを活用)
Package.swift プロジェクトの設定ファイルで、依存関係やターゲットを定義

初期設定時にライブラリ型と実行ファイル型を選択できるため、用途に応じて適切なプロジェクトタイプを作成してください。


Package.swiftファイルの作成とカスタマイズ

Package.swiftは、SPMがどのようにパッケージを扱うかを定義する重要なファイルです。以下では、依存関係やターゲットの指定方法について説明します。

swift-tools-versionproductsの正しい記述方法

最新のメタデータ仕様では、Package.swiftの冒頭にswift-tools-version: "5.9"を記載し、パッケージ提供時に利用可能なAPIや型情報を明示するためにproductsセクションを定義します。

依存関係の記述

依存関係を記載する際には、dependenciesセクションに.package(url: "https://github.com/...", from: "1.0.0")のような記法を使用します。これにより、外部ライブラリへの参照が可能になります。

テストターゲットの指定

テストコードを含む場合、.testTarget()で明示的に定義し、依存関係も反映させます。


テストとバージョン管理のベストプラクティス

ライブラリ公開においては、品質保証が不可欠です。XCTestによるユニットテストやSemantic Versioning(語義的バージョニング)の導入は、信頼性向上に直結します。

XCTestによるユニットテストの実装

テストコードを書く際にはTests/MyLibraryTests.swiftを作成し、以下のように記述します。

テストを実行するにはswift testコマンドを使用します。CI環境(GitHub Actionsなど)との連携も重要で、自動テストの導入は品質向上に大きく貢献します。

Semantic Versioningの導入

バージョン番号は「メジャー.マイナー.パッチ」の形式で表記します。例:1.0.02.0.0(不互換変更)、1.1.0(機能追加)、1.0.1(バグ修正)。

リリース時にタグを付ける際には、GitHubのReleaseページから手動で設定し、リリースノートも記載することをおすすめします。


GitHubとSwift Package Indexへの公開フロー

ライブラリ公開の最終ステップは、コードをソーシャルメディアやパッケージ管理サイトに掲載する作業です。以下の手順で進めましょう。

リポジトリ作成からリリースまでの手順

  1. GitHub上に新しいリポジトリを作成します。
  2. git initgit remote add origin <URL>でローカル環境と連携。
  3. コードをコミットしてgit push -u origin mainでプッシュ。
  4. GitHub ActionsでCI構築し、テストが通っていることを確認。

Swift Package Indexへの掲載方法

Swift Package Indexに登録するには、パッケージのメタデータ(Package.swift)とREADMEファイルに以下を記述します。

注意: Swift Package IndexはREADMEを自動解析しません。公式のメタデータ(Package.swift)に記述された情報が検索に反映されます。


CI環境構築とGitHub Actionsのテンプレート

CI環境の構築で、自動テストやバージョン管理を効率化しましょう。

GitHub Actionsによる連携手順

  1. リポジトリルートに.github/workflows/main.ymlを作成。
  2. 以下のようなテンプレートコードを記述します。

注意: swift-tools-versionのバージョンと一致させる必要があります。


依存関係管理と他ライブラリとの連携

他のライブラリを組み込む際には、Package.swift.package()を定義します。バージョン解決のトラブルシューティングにも対応する必要があります。

外部パッケージの追加方法

依存関係を明示的に指定するには以下のように記述します:

バージョン解決のトラブルシューティング

依存関係が競合する場合、swift package updateで最新バージョンに更新することで問題を解消できる場合があります。また、--branch--revisionパラメータを使って特定のブランチやリビジョンを指定することも可能です。


結論

ライブラリ公開には以下の重要なポイントを押さえてください:

  • SPMの初期設定を正しく行い、プロジェクト構造を整える
  • Package.swiftで最新仕様に沿って依存関係やターゲットを定義
  • テストコードとバージョン管理(Semantic Versioning)により品質向上を目指す
  • GitHub ActionsでCI環境を構築し、自動テストを実行する
  • Swift Package Indexへの掲載は公式メタデータに注意し、READMEには検索キーワードを記述

注意事項と参考情報

  • Swift Package Indexの仕様は公式ドキュメントを参照してください。
  • swift-tools-versionの最新バージョンは、Swiftのリリースノートで確認可能です。
  • GitHub Actionsのテンプレートについては、Swift Actionsプロジェクトを参考にします。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Swift