ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
コレクションを使用したSwiftパッケージの発見とキュレーション
教育目的でチーム向けにパッケージをキュレーションする場合であっても、他のデベロッパと共有する場合であっても、Swift Package Collectionsは、それぞれが発見し、調査し、プロジェクトに新しいパッケージをインポートするのに役立ちます。コレクションを使用したSwiftパッケージのワークフローの改善について確認し、独自のSwiftパッケージのコレクションをキュレーション、作成、署名、共有する方法を紹介します。
リソース
関連ビデオ
WWDC21
WWDC19
-
ダウンロード
♪ ♪ ようこそ "コレクションを使用したSwiftパッケージの 発見とキュレーション" へ Xcode 11でSwiftパッケージが サポートされ ライブラリを ソースコードで 簡単に配布できるように なりました 多くのパッケージが パブリッシュされ その検索を便利にする 必要があります またパッケージの使用時 ライセンスなどの情報も 見たいとお思いでしょう そのためにメタデータの アクセス標準化も 求められます そこでXcode 13に パッケージコレクションが 加わりました 共有できる 精選されたリストで 新しく向上された方法で パッケージの追加が 可能になります 教育者や地域活動者は 講義教材やブログに沿った パッケージコレクションを パブリッシュできます 初めてパッケージを使う時の ためらいがなくなり タスクに合ったパッケージを 選ばねばならない 重荷が無くなるのです 企業はコレクションで エンジニアリングチームの 決定範囲を狭められ 信頼性のあるパッケージに 集中できます まずはこのビデオの概要です まずデモから始め コレクションの使用に関する 詳細をお話しします そしてコレクションの作成 またデモで締めくくります Swift Numericsの ブログを見つけ Xcodeで試したいと思います
ブログから 最初の例をコピーし Xcodeにスイッチし
コードをペーストします Numericsモジュールが 無いために エラーが出ました これまでならブログに戻って Numericsパッケージの 足し方を調べていましたが Xcode 13ではオープンソース のデフォルトを提供するため エディタ内で 直すことができます
Searchをクリックすると Add Package ワークフローが開き Numericsが 既に選ばれています Xcodeには 最新バージョンや作者 ライセンスやREADMEなど パッケージに関する情報が たくさんあります Release Historyタブで リリースノートを 確認することもできます
依存性を足すには 必要最低バージョンを選び 足すプロジェクトを選びます ここではデフォルトを選び Add Packageを押します
チェックアウトで バージョンに基づいたものを Xcodeがリストします Numericsをチェックし ターゲットに選びます Add Packageを 再びクリックして完了です
Project Navigatorを見ると 依存性が足されています buildを実行すると 無事 完成しました ではAdd Packageで どのように 変化が加わったか 見てみましょう Project Editorを開け
Projectを選び Swift Packagesタブを 開けます 依存性と バージョンルールがあります
Target Editorを開け Frameworks Libraries and Embedded Contentを 見てみます Numericsのプロダクトが リンクされています これが新しいAdd Packageの ワークフローです どうNumericsパッケージに 気づいたのでしょう? Xcodeにある事前構成された デフォルトコレクションには Swift Argument Parserや Swift NIOなどのAppleによる オープンソースパッケージが 含まれています コレクションの情報から モジュール名の自動入力や fix-itsを使用でき Xcode内での作業が 非常に楽になります デフォルトコレクションは 常に更新されるため リストは変わります ではフランチェスコが コレクションについて お話しします ありがとう ボリス import statementでの インポートは簡単でしたね ではコレクションが何か 見てみましょう コレクションは JSONファイルで 普通 HTTPSで 取得されます コレクションには パッケージのURLと 概要やバージョン 供給された製品などの メタデータが含まれます これによりXcodeで 豊富な情報が表示されます これはコレクションの JSONの一部です 普通 ここまで詳細は 見ませんが 大切な箇所を 少し見てみましょう パッケージのURL readmeURLと summary そしてパッケージの versionsの詳細が見られます Swift Package Managerは ここではSwiftPMと呼びますが Macのキャッシュ コレクションの データベースを管理します つまりlibSwiftPMを 使うツールなら 何でもコレクションに アクセスできます コマンドラインの SwiftPMも含みます SwiftPMはSwiftオープンソース プロジェクトの一部です Swift.org Webサイトは コミュニティと貢献方法を 学べる素晴らしい場所です
SwiftPMは ライブラリとして機能し コレクションも サポートします libSwiftPMと呼び Xcodeのパッケージにも 動力を供給します ボリスとブログポストを 作成するとします ポストに使うパッケージで 読者が沿えるように コレクションを 作ることにしましょう ありがとう フランチェスコ
ネットワークリクエストに Alamofireを使います ですので コレクションに足します またフォーマットを 統一させたいので swift-formatを使います どのパッケージが必要か わかったところで 続けてみましょう
GitHubにコレクション作成の ツールがあります ご自身のコレクションの場合 これをローカルで クローンしビルドできます generatorが自動的に 情報を収集することで プロセスが簡単になります フォーマットの最新版に従い アウトプットを作成します パッケージURLと メタデータを含む インプットJSONファイルを ツールが取り込み 共有されるアウトプット ファイルが作成されます
署名に使われるツールも 同じGitHubプロジェクトに あります 署名はオプションですが 作者を確証し コレクションの誠実性を 守ります これがインプット JSONフォーマットです overviewやkeywords authorなどの情報が ここにまとめられています Xcodeにコレクションを 足す時に表示されます そして大切な パッケージのURLです
ツールは自動的に 情報を取り込みますが コレクション作成時に 他のメタデータを 追加することもできます カスタムのsummaryや keywordsなど 検索結果を向上させる メタデータや コレクションの バージョンを限定したり 最適の製品を提供するために それ以外のものを除外したり readmeURLの明示などです インプットJSONファイルでの コレクション配給は 3段階プロセスです まずgeneratorで アウトプットJSON ファイルを作成します 次に署名ツールを使い アウトプットと 証明書付き署名キーで コレクションを作成 最後に 直接共有するか Webサーバーに載せ コレクションを供給します コレクションは 有効で期限内の コード署名証明書で 署名できます 必要条件の詳細については SwiftPM documentationを ご覧ください 署名したくない場合は generate toolを使用した後 供給できます このコレクションの例では 署名することにします
ファイルは署名の準備ができ 先ほどスライドで見た インプットJSONも 用意できています generatorと署名ツールも ダウンロードしてあります それではまず package-collection- generateで
input.jsonと output pathを足します
verboseを通して さらなる アウトプット情報を集め GitHubのauth-tokenを通し
GitHub APIをクエリし メタデータを呼び出します 情報収集のためコマンドが 別のバージョンを チェックします 数秒で済むはずです これでアウトプット ファイルができました 次にコレクションに 署名します package-collection-sign コマンドで 今 作成した JSONファイルを通し output pathを指定します
先ほどエクスポートした キーと証明書も通します
既に作成してコレクションを アップロードしました コマンドラインで 通信してみましょう package collectionsという サブコマンドがあります configured collectionsに コレクションを加えます これでXcodeでも 利用できます
これでコレクションを 呼び出し追加します XcodeのUIでも可能です フランチェスコが 後ほどお見せします ではcontentsを 見てみましょう swift package-collections describeを使います
まず 先ほど特定した メタデータがあります 次にコレクションの パッケージリスト そして署名情報があります 誰が署名し SwiftPMで認証されたかも 表示されます これにより 作者を確認することができ コレクションが 変更されていないかの 確認にもなります 次にSwift formatのような パッケージを見てみましょう describe commandを使用し パッケージのURLを足します
このコマンドで バージョンや作者 starsやreadmeURLなど パッケージ全体の情報が ここに全て表示されます またSwiftツールの バージョンや モジュールや製品などの 最新バージョンの情報も 表示されます このコレクションが 無事共有されたところで 同僚のフランチェスコが デモAppを作成しながら Xcodeでの体験を お見せします ありがとう ボリス このデモのために プロジェクトを作成しました Xcode内で Fileへ行き Add Packagesを選び +ボタンをクリックし コレクションを追加します コレクションのURLを ペーストし Loadをクリックすると パッケージの数と 最新更新日が表示されます Add Collectionを クリックすると AlamofireとSwift-formatが 表示されます Alamofireのnetworking APIを使うため プロジェクトに パッケージを追加します Alamofireを選択し Add Packageを クリックします
Xcodeが依存性を 追加しました これでソースファイルに戻り コードの作成ができます
AlamofireでREADMEを ダウンロードし Swift-cmark パッケージを使い マークダウンを解析します Add Packagesパネルに 戻ります Xcode 13ではProject Navigatorのコンテクストメニューで パッケージオプションに 簡単にアクセスできます ここでAdd Packagesを選び 再びパネルを開きます
Swift-cmarkが コレクションにありませんが 検索バーに直接 URLをペーストし 追加することができます Swift-cmarkの main branchを選び パッケージを追加します
Swift-cmarkを追加し ブログポストのAppを 完成できます インターネットのパッケージ の使用が簡単になり 最も大切な作業である Appの作成に集中できます
Xcode 13のSwift パッケージコレクションは 新しいパッケージの 発見に役立ちます コレクションの作成で パッケージの 精選リストが共有でき プロジェクトへの追加が 合理化されます
パッケージに関しては WWDC19の "Swiftパッケージを Xcodeに導入する"と "Swiftパッケージを作成する"を ぜひ ご参照ください ありがとうございました [明るい音楽]
-
-
7:00 - Simple collection
{ "name": "WWDC21 Demo Collection", "overview": "Packages to be used in our demo app", "keywords": ["wwdc21"], "author": { "name": "Boris Buegling" } "packages": [ { "url": "https://github.com/apple/swift-format" }, { "url": "https://github.com/Alamofire/Alamofire" } ], }
-
7:17 - Complex collection
{ "name": "WWDC21 Demo Collection", "overview": "Packages to be used in our demo app", "keywords": ["wwdc21"], "packages": [ { "url": "https://github.com/apple/swift-format", "summary": "Formatting technology for Swift source code.", "keywords": [“formatting”, "swift"], "versions": ["0.50400.0", "0.50300.0"], "excludedProducts": ["SwiftFormatConfiguration"], "readmeURL": "https://github.com/apple/swift-format/blob/main/README.md" }, { "url": "https://github.com/Alamofire/Alamofire" } ], "author": { "name": "Boris Buegling" } }
-
8:46 - Generating a collection
package-collection-generate --verbose input.json collection.json --auth-token
-
9:30 - Signing a collection
package-collection-sign collection.json collection-signed.json developer-key.pem developer-cert.cer
-
10:15 - Adding a collection
swift package-collection add
-
10:34 - Inspecting an entire collection
swift package-collection describe
-
11:11 - Viewing metadata of the swift-format package
swift package-collection describe https://github.com/apple/swift-format
-
13:07 - ReadMe Request
import Alamofire struct ContentView: View { let readMeURL = "https://raw.githubusercontent.com/apple/swift/main/README.md" var body: some View { Button("Click me!") { AF.request(readMeURL).response { response in debugPrint(response) } } } }
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。