Swift Package ManagerでCLIツールを作る最小構成

Swiftで小さなCLIツールを作るなら、Swift Package Managerの executableTarget が使えます。

Xcodeプロジェクトを作らなくても、Package.swiftmain.swift だけで始められます。

パッケージを作る

mkdir MyTool
cd MyTool
swift package init --type executable

これで実行可能ターゲットを持つパッケージが作られます。

SwiftPMの基本は公式ドキュメントにもまとまっています。

https://www.swift.org/documentation/package-manager/

Package.swift

最小構成はだいたいこうなります。

// swift-tools-version: 6.0
import PackageDescription

let package = Package(
    name: "MyTool",
    targets: [
        .executableTarget(
            name: "MyTool"
        )
    ]
)

executableTarget が実行ファイルになるターゲットです。

main.swift

print("Hello, SwiftPM")

Swift 5.3以降なら @main を使う形もあります。

@main
struct MyTool {
    static func main() {
        print("Hello, SwiftPM")
    }
}

小さいツールなら main.swift だけでも十分です。

実行する

swift run

ターゲット名を指定するなら次の形です。

swift run MyTool

ビルドだけなら:

swift build

成果物は .build 以下に出ます。

引数を読む

簡単な引数なら CommandLine.arguments で読めます。

let arguments = CommandLine.arguments.dropFirst()

for argument in arguments {
    print(argument)
}

本格的なCLIにするなら、Swift Argument Parserのようなライブラリを使うこともあります。最初は標準の CommandLine で十分です。

まとめ

SwiftでCLIを作るなら、Swift Package Managerのexecutable targetから始めるのが簡単です。

  • swift package init --type executable
  • Package.swiftexecutableTarget
  • 実行は swift run
  • 小さいツールなら main.swift
  • 引数は CommandLine.arguments

ちょっとした変換ツールや開発補助ツールなら、この構成で十分始められます。

参考