LoginSignup
9

More than 1 year has passed since last update.

自作パッケージをSwift Package Indexに追加する方法

Last updated at Posted at 2021-06-21

「Swift Packagesによるライブラリの作成方法」は4部構成です。
記事を順番に読み進めると、Swift Packagesでライブラリを自作して公開できるようになります。


「Swift PackagesによるCLIツールの作成方法」は5部構成です。
記事を順番に読み進めると、Swift PackagesでCLIツールを自作して公開できるようになります。

第1部: Swift PackagesでCLIツールを自作する
第2部: 自作パッケージをSwift Package Indexに追加する ←イマココ
第3部: 自作パッケージをMintに対応する
第4部: 自作パッケージをHomebrewに追加する(未投稿)
第5部: 自作パッケージをCocoaPodsに追加する(未投稿)

はじめに

自作パッケージをSwift Package Indexに追加する方法を紹介します。

「Swift Package Index」とは?

公式サイトのFAQを直訳すると「Swift Package Managerをサポートする、パッケージの検索エンジン」です。

パッケージを検索して、そのパッケージに関する様々な情報を得ることができるサイトです。

環境

  • OS: macOS Big Sur 11.4
  • Xcode:12.4 (12D4e)
  • Swift:5.3.2
  • swift-tools:5.3

Swift Package Indexへの追加方法

Swift Package IndexへはPRを作成して手動で追加を依頼する必要があるので、その手順を紹介します。

パッケージを自作する

Swift Package Indexへは他人が作成したパッケージを追加することもできるようですが、やはり自作パッケージがなければ始まりません。

以下の記事を参考にパッケージを自作します。

PackageListリポジトリをフォークする

パッケージを自作したら、以下のリポジトリをフォークします。

私はフォーク元のリモートリポジトリを origin とし、フォークしたリモートリポジトリには作者(今回は自分)の名前を付けるのが好みなので、そのようにします。

$ git clone https://github.com/SwiftPackageIndex/PackageList.git
$ cd PackageList
$ git remote add uhooi https://github.com/uhooi/PackageList.git

main ブランチから作業ブランチを切ります。

$ git switch -c feature/add_package

JSONファイルに自作パッケージを追加する

Package.json へ自作パッケージのURLを アルファベット順 に追加します。

Package.json
[
  ...
  "https://github.com/ucotta/brillianthtml5parser.git",
+ "https://github.com/uhooi/swift-string-transform.git",
  "https://github.com/uias/Pageboy.git",
  ...
]

追加したら swift ./validate.swift を実行し、JSONファイルに問題がないか確認します。

$ swift ./validate.swift
Warning: Using anonymous authentication -- may run into rate limiting issues

Processing package list ...
+ github.com/uhooi/swift-string-transform.git
✅ validation succeeded

追加したパッケージのURLと「✅ validation succeeded」が出力されたらバリデーション成功です。

PRを作成する

バリデーションに成功したら、変更をコミットしてプッシュします。

$ git add Package.json
$ git commit -m 'Add package'
$ git push uhooi feature/add_package

フォーク元のリモートリポジトリにPRを作成します。
タイトルや概要などは以下のPRを参考にしてください。

問題なければ数時間でメンバーの方がマージしてくださります。

Swift Package Indexでできること

PRがマージされたらSwift Package Indexに自作パッケージのページができます :tada:

Swift Package Indexでできることを抜粋して紹介します。

様々な環境でビルドしてバッジ化される

様々なプラットフォーム、Swiftのバージョン、ソース(最新タグとデフォルトブランチ)の組み合わせでビルドし、成否とログを確認できます。
スクリーンショット 2021-06-21 23.15.49.png

CIが成功してからパッケージをリリースすることが多いとは思いますが、すべての組み合わせを網羅することはなかなかないので、非常にありがたいです。

ビルドに成功した環境がバッジ化されるので、READMEに付けるとどの環境で使えるかがすぐにわかります。


ちなみに新しいバージョンをリリースしたら自動で再ビルドしてくれます。
手動でリリースを伝える必要はありません。

同じ作者で他のパッケージを見れる

Xcode 13で追加された「Package Collections」という仕組みがあり、複数のパッケージをJSONファイルにまとめることでパッケージを探しやすくなります。

Swift Package Indexでは同じ作者のパッケージをまとめたコレクションのJSONファイルを自動で作成してくれます。

その場でパッケージを試せる

「Try in a Playground」をクリックすることで、パッケージがセットアップされた状態でPlaygroundが起動し、すぐにパッケージを試すことができます。

spi-playgrounds://open?dependencies=uhooi/swift-string-transform

事前にSwift Package Index Playgrounds appをインストールする必要があります。

おわりに

自作パッケージをSwift Package Indexに追加することができました!
自分のパッケージが素晴らしいサイトに載るのはとても嬉しいです :relaxed:

Swift Package Indexは非常に便利なサイトなので、パッケージを自作していない人もぜひ活用してみてください!

参考リンク

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