0Pricing
Swift Academy · レッスン

ライブラリパッケージと実行可能パッケージ

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ライブラリパッケージと実行可能パッケージ
  2. セマンティックバージョニングとリリースへのタグ付け
  3. swift testとアーティファクトによるCIの基礎
← Swift Academyに戻る