Swift Digest
Blog | Swift.org Blog

パッケージコレクション

Package Collections

このダイジェストはClaude Opus 4.7 / 4.8によって生成されたものです(License)。原文はこちら

この記事の要点

何が発表されたのか

package collection は、信頼できるキュレーターがまとめた厳選パッケージのリストです。パッケージエコシステムの 2 つの課題、「優れたパッケージを見つけること」と「特定の作業にどのパッケージが最適かを判断すること」を改善することを目指しています。

package collection はキュレーションという考え方を前面に押し出します。たとえば、Swift 開発者のコミュニティが日々の作業で実際に使っている良質なパッケージをまとめて公開したり、教育者が講義資料に合わせたパッケージ群を集めたり、企業が社内チーム向けに精査済みの信頼できるパッケージへ選択肢を絞り込んだりといった用途が想定されています。

何に使えるのか

コレクションを使う

package collection の利用はとても簡単です。SwiftPM のコマンドラインから、新しい package-collection add でコレクションを追加できます。

$ swift package-collection add https://swiftserver.group/collection/sswg.json
Added "Swift Server Workgroup Collection" to your package collections.

Xcode 13 でも、新しいパッケージコレクション設定画面から package collection を利用できます。

発表時点で、すでに次のようなコレクションが公開されていました。

自分でコレクションを作る

package collection は単純な JSON ドキュメントなので、公開も共有も容易です。Web やファイルサーバーに置いてリンクを共有したり、JSON ファイルを直接渡したりできます。

コレクション生成には package collection generator ツールの利用が推奨されています。パッケージ URL のリストを渡すと、各パッケージのマニフェストを解析し、可能なら SCM システムからもメタデータを取得して、より充実したメタデータ一式を生成します。

たとえば次の packages.json を用意します。

{
  "name": "My Collection",
  "packages": [
    {
      "url": "https://github.com/user/package.git"
    }
  ]
}

次のコマンドを実行すると、

$ package-collection-generate packages.json collection.json

formatVersion やバージョンごとのマニフェスト情報(製品・ターゲットなど)を含む、より完全なコレクション JSON が生成されます。

コレクションに署名する

コレクションは、真正性を示し完全性を保護するために署名できます。署名は任意で、署名なしのコレクションも利用できますが、その場合は利用前に確認のプロンプトが表示されます。

署名には package collection signer ツールの利用が推奨されています。code-signing 証明書とその秘密鍵を使い、署名を埋め込んだコレクションファイルを生成します。

$ package-collection-sign \
    collection.json \
    collection-signed.json \
    /certs/private.pem \
    /certs/signing.cer

コレクションができたら、配布方法は自由です。学生や少人数の共同作業者にはメール添付で十分なこともあれば、Web サーバーにホストしてリンクを共有したり、開発チームなら SCM システムに push してそこから参照したりもできます。

広く Swift コミュニティと共有したい有用なコレクションを作った場合は、Swift フォーラムの community showcase で知らせるのがよい方法です。

関連リンク