ライブラリパッケージと実行可能パッケージ
SwiftPMの library パッケージと executable パッケージの違いを理解します。product/targetの宣言方法、ライブラリの利用方法、実行可能ファイルの実行方法を学びます。
「ライブラリパッケージと実行可能パッケージ」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
2種類のプロダクト
SwiftPMパッケージは、ライブラリ(インポートして使用するコード)または実行可能ファイル(実行可能なツール)として提供できます。
Package.swiftでプロダクトを宣言します- ターゲットとソースを整理します
- ライブラリを利用し、実行可能ファイルを実行します
ライブラリプロダクトの基本
ライブラリは、他のコードからimportできるモジュールを公開します。エントリポイントは必要ありません。
// Package.swift (illustrative library)
// import PackageDescription
// let package = Package(
// name: "GreeterLib",
// products: [
// .library(name: "GreeterLib", targets: ["GreeterLib"]),
// ],
// targets: [
// .target(name: "GreeterLib"),
// .testTarget(name: "GreeterLibTests", dependencies: ["GreeterLib"]),
// ]
// )
//
// Sources/GreeterLib/Greeter.swift
public struct Greeter {
public init() {}
public func hello(_ name: String) -> String { "Hello, \\(name)!" }
}
print(Greeter().hello("Ana")) // demo run実行可能プロダクトの基本
実行可能ファイルにはエントリポイント(main.swift)があり、実行可能なバイナリ(swift run)をビルドします。
// Package.swift (illustrative executable)
// import PackageDescription
// let package = Package(
// name: "greeter",
// products: [ .executable(name: "greeter", targets: ["App"]) ],
// targets: [ .executableTarget(name: "App") ]
// )
//
// Sources/App/main.swift
let args = CommandLine.arguments.dropFirst()
let who = args.first ?? "world"
print("Hello, \\(who)")ライブラリへの依存
利用側で.packageと.productを使用してライブラリをインポートします。セマンティックバージョン(例: from: "1.0.0")でバージョンを固定します。
// In the consumer's Package.swift (illustrative):
// dependencies: [
// .package(url: "https://example.com/GreeterLib.git", from: "1.0.0")
// ],
// targets: [
// .executableTarget(
// name: "App",
// dependencies: [ .product(name: "GreeterLib", package: "GreeterLib") ]
// )
// ]
//
// Sources/App/main.swift
// import GreeterLib
struct Dummy {}
print("Add import GreeterLib in your app to use its APIs.")責務を分ける
コードを共有する場合は、コアロジックをライブラリに置き、実行可能ファイルは薄いラッパーとして保ちます。
// Package.swift can expose both a library and an executable:
// products: [
// .library(name: "GreeterLib", targets: ["GreeterLib"]),
// .executable(name: "greeter", targets: ["GreeterCLI"]),
// ],
// targets: [
// .target(name: "GreeterLib"),
// .executableTarget(name: "GreeterCLI", dependencies: ["GreeterLib"]),
// ]
//
// Reuse logic in the library; keep CLI thin.
print("Tip: put reusable logic in the library; the CLI depends on it.")ビルドと実行のコマンド
swift buildでライブラリをビルドし、swift testでテストします。実行可能ファイルはswift run <name>で実行します。
// Library: build & test
// swift build
// swift test
//
// Executable: run & release
// swift run greeter Ana
// swift build -c release
//
// Artifact:
// .build/release/greeter
print("Use swift run for executables; import libraries into apps.")ライブラリと実行可能ファイルの違い
確認: SwiftPMでは、ライブラリと実行可能ファイルは何が異なりますか?
まとめ
まとめ: アプリ間でコードを共有するにはライブラリを、CLIやツールを提供するには実行可能ファイルを使用します。Package.swiftでプロダクトとターゲットを宣言し、.packageと.productを使ってライブラリに依存します。
よくある質問
「ライブラリパッケージと実行可能パッケージ」レッスンは無料ですか?
はい。「ライブラリパッケージと実行可能パッケージ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「ライブラリパッケージと実行可能パッケージ」で何を学びますか?
SwiftPMの library パッケージと executable パッケージの違いを理解します。product/targetの宣言方法、ライブラリの利用方法、実行可能ファイルの実行方法を学びます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「ライブラリパッケージと実行可能パッケージ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ライブラリパッケージと実行可能パッケージ
- セマンティックバージョニングとリリースへのタグ付け
- swift testとアーティファクトによるCIの基礎