SwiftPMのPlugin入門 / introduction_to_swiftpm_plugin
by
uhooi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
SwiftPM の Plugin 入門 2023.01.17(Tue) Voicy Tech Bar #1 @the_uhooi
Slide 2
Slide 2 text
iOS app developer @uhooi @uhooi @the_uhooi
Slide 3
Slide 3 text
SwiftPM の Plugin を使ったことが あるよって人〜?
Slide 4
Slide 4 text
LT の目的 SwiftPM の Plugin の 概要を理解し、iOS アプリ開発で 導入できるようにする
Slide 5
Slide 5 text
そもそも Plugin って何?
Slide 6
Slide 6 text
・Swift Package Manager 5.6 で追加された機能 「Plugin」とは?
Slide 7
Slide 7 text
・Swift Package Manager 5.6 で追加された機能 ・CLI ツールを SwiftPM で使いやすくラップしたもの 「Plugin」とは? これだけでも覚えて 帰ってください
Slide 8
Slide 8 text
Swift Package Manager 5.7.1 現在、Plugin は2種類ある (5.6 から変わっていない) ・Build Tool Plugin ・Command Plugin Plugin の種類
Slide 9
Slide 9 text
01 Build Tool Plugin
Slide 10
Slide 10 text
・ビルド時に自動で実行するプラグイン 「Build Tool Plugin」とは?
Slide 11
Slide 11 text
・ビルド時に自動で実行するプラグイン 入出力がはっきりしていて、成果物(出力)を ビルドに含めたいときに使う いい感じにキャッシュしてくれる 「Build Tool Plugin」とは?
Slide 12
Slide 12 text
・ビルド時に自動で実行するプラグイン 入出力がはっきりしていて、成果物(出力)を ビルドに含めたいときに使う いい感じにキャッシュしてくれる 成果物がない(リント) パッケージ内のファイルの更新(フォーマット) 「Build Tool Plugin」とは?
Slide 13
Slide 13 text
Build Tool Plugin の導入 // Package.swift // ... dependencies: [ .package(url: "https://github.com/SwiftGen/SwiftGenPlugin", from: "6.6.2"), ], プラグインのリポジトリを 依存関係に追加する
Slide 14
Slide 14 text
Build Tool Plugin の導入 // Package.swift // ... targets: [ .target( // ... plugins: [ .plugin(name: "SwiftGenPlugin", package: "SwiftGenPlugin"), ]), ] 適用するターゲットごとに プラグインを指定する
Slide 15
Slide 15 text
・SwiftGen https://github.com/SwiftGen/SwiftGenPlugin ・R.swift https://github.com/mac-cain13/R.swift#packageswift-based-spm-project ・swift-protobuf https://github.com/apple/swift-protobuf/blob/main/Sources/protoc-gen-swift/ Docs.docc/spm-plugin.md Build Tool Plugin を提供している主な CLI ツール
Slide 16
Slide 16 text
・SE-0303: Package Manager Extensible Build Tools https:/ /github.com/apple/swift-evolution/blob/main/proposals/0303-swiftpm- extensible-build-tools.md ・SE-0325: Additional Package Plugin APIs https:/ /github.com/apple/swift-evolution/blob/main/proposals/0325-swiftpm- additional-plugin-apis.md Build Tool Plugin の公式ドキュメント プロポーザルしか公式ドキュメントがない (ほかにあったら教えてほしいです)
Slide 17
Slide 17 text
02 Command Plugin
Slide 18
Slide 18 text
・手動で実行するプラグイン 「Command Plugin」とは?
Slide 19
Slide 19 text
・手動で実行するプラグイン ・swift package {verb} {arguments} で実行する ・Xcode 上からも実行できる 「Command Plugin」とは?
Slide 20
Slide 20 text
・手動で実行するプラグイン ・swift package {verb} {arguments} で実行する ・Xcode 上からも実行できる 出力がなくてもいい(リント) 入力がはっきりしていなくてもいい(全ファイル対象) パッケージ内のファイルを更新できる(フォーマット) 「Command Plugin」とは?
Slide 21
Slide 21 text
Command Plugin の導入 // Package.swift // ... dependencies: [ .package(url: "https://github.com/SwiftGen/SwiftGenPlugin", from: "6.6.2"), ], プラグインのリポジトリを 依存関係に追加するのみ
Slide 22
Slide 22 text
・swift package plugin --list で導入されている Command Plugin の一覧を出力する Command Plugin の確認 $ swift package plugin --list ‘generate-manual’ (plugin ‘Generate Manual’ in package ‘swift-argument-parser’) ‘generate-code-for-resources’ (plugin ‘SwiftGen-Generate’ in package ‘SwiftGenPlugin’) verb の確認に便利
Slide 23
Slide 23 text
・swift-docc-plugin https://github.com/apple/swift-docc-plugin ・swift-format (ドキュメントはまだない) https://github.com/apple/swift-format ・SwiftFormat https://github.com/nicklockwood/SwiftFormat/blob/master/README.md#swift- package-manager-plugin Command Plugin を提供している主な CLI ツール
Slide 24
Slide 24 text
・SE-0332: Package Manager Command Plugins https://github.com/apple/swift-evolution/blob/main/proposals/0332-swiftpm- command-plugins.md Command Plugin の公式ドキュメント プロポーザルしか公式ドキュメントがない (ほかにあったら教えてほしいです)
Slide 25
Slide 25 text
Tips: Makefile でラップすると使いやすい // Makefile .PHONY: lint lint: swift package plugin lint-source-code .PHONY: format format: swift package plugin --allow-writing-to-package-directory format-source-code
Slide 26
Slide 26 text
Tips: Makefile でラップすると使いやすい // Makefile .PHONY: lint lint: swift package plugin lint-source-code .PHONY: format format: swift package plugin --allow-writing-to-package-directory format-source-code plugin は省略できる っぽい
Slide 27
Slide 27 text
Tips: Makefile でラップすると使いやすい // Makefile .PHONY: lint lint: swift package plugin lint-source-code .PHONY: format format: swift package plugin --allow-writing-to-package-directory format-source-code パッケージ内のファイルを 更新する際に付ける
Slide 28
Slide 28 text
03 まとめ
Slide 29
Slide 29 text
・SwiftPM 5.6 で追加されたプラグイン機能は便利 まとめ
Slide 30
Slide 30 text
・SwiftPM 5.6 で追加されたプラグイン機能は便利 ・モジュール分割を Swift Package で行うと、 プラグインを導入しやすい まとめ
Slide 31
Slide 31 text
・SwiftPM 5.6 で追加されたプラグイン機能は便利 ・モジュール分割を Swift Package で行うと、 プラグインを導入しやすい ・まだ公式ドキュメントや導入記事が少ない ホントは Plugin ファイルや Artifact bundle についても話したかったけど時間が足りない… まとめ
Slide 32
Slide 32 text
Build Tool Plugin の導入記事を書きました