Swift3.0-preview-1で追加されたswift packageを試してみた
Swift3.0-preview-1で追加されたswift packageを試してみた
3.0-preview-1-SNAPSHOT-2016-05-31-a
のSwiftがリリースされ、このバージョンからswift package
コマンドが使えるようになりました。
これはSwift Package Managerを使用する際に利用するコマンドになります。この記事では環境構築、使い方を説明していきます。
Swift Package Managerの環境を構築する
SwiftのバージョンをSwift3.0-preview-1版に変更する
swift packageコマンドが使えるようになった3.0-preview-1-SNAPSHOT-2016-05-31-a
のSwiftを使用します。
swift.orgからSwift3.0-preview-1版のsnapshotをダウンロードしてくる
上記からSwift3.0-preview-1版Swiftのsnapshotをダウンロードし、インストールしておきます。
swiftenvでSwiftのバージョンをSwift3.0-preview-1版に切り替える
今回はswiftenvを利用してSwiftのバージョンを変更します。
swiftenvは上記記事にてセットアップについて説明してますので参考にしてください。
swiftenv global 3.0-preview-1-SNAPSHOT-2016-05-31-a
これで設定してるSwiftが3.0-preview-1-SNAPSHOT-2016-05-31-a
のバージョンに変更されました。
念のためにバージョンが変更されたか確認しておきましょう。
$ swift --version Apple Swift version 3.0-dev (LLVM 3863c393d9, Clang d03752fe45, Swift e996f0c248) Target: x86_64-apple-macosx10.9
$ swiftenv version 3.0-preview-1-SNAPSHOT-2016-05-31-a (set by /Users/__moai/.swiftenv/version)
ここでバージョンが切り替わっていれば成功です。
TOOLCHAINSにパスを通す
swift package
コマンドを利用するためにパスを通します。
OS、環境によって違うので、それに合わせて変更しましょう。
Xcode 7.2の場合
export PATH=/Library/Toolchains/swift-latest.xctoolchain/usr/bin:$PATH
Xcode 7.3の場合
export TOOLCHAINS=swift
Linuxの場合
export PATH=path/to/toolchain/usr/bin:$PATH
swift packageがの環境が構築できたか確認する
swift package
のコマンドが利用できるようになったかを確認します。
バージョンが表示されるかどうか以下のコマンドを叩いて確認しましょう。
$ swift package --version Swift Package Manager – Swift 3.0
エラーが出る場合はSwiftのバージョン、pathの設定がおかしい可能性があるのでその辺りを調べてみると良いかもしれません。
Swift Package Managerを試してみる
それではswift packageコマンドを試していきましょう。
swift package
コマンドを叩いてみます。
$ swift package OVERVIEW: Perform operations on Swift packages USAGE: swift package [command] [options] COMMANDS: init [--type <type>] Initialize package (library|executable) fetch Fetch package dependencies update Update package dependencies generate-xcodeproj [--output <path>] Generates an Xcode project show-dependencies [--format <format>] Print dependency graph (text|dot|json) dump-package [--output <path>] Print Package.swift as JSON OPTIONS: -C, --chdir <path> Change working directory before any other operation --color <mode> Specify color mode (auto|always|never) -v, --verbose Increase verbosity of informational output --version Print the Swift Package Manager version -Xcc <flag> Pass flag through to all C compiler invocations -Xlinker <flag> Pass flag through to all linker invocations -Xswiftc <flag> Pass flag through to all Swift compiler invocations NOTE: Use `swift build` to build packages, and `swift test` to test packages
上記のように使い方が出力されてますね。
swift packageから雛形を作る
Hogeディレクトリを作成して0の状態からPckageの雛形を作成します。
雛形を作成するときにはswift package init
コマンドを叩きます。
mkdir Hoge cd Hoge swift package init
すると、下記のログが出力され雛形が生成されます。
Creating library package: Hoge Creating Package.swift Creating .gitignore Creating Sources/ Creating Sources/Hoge.swift Creating Tests/ Creating Tests/LinuxMain.swift Creating Tests/Hoge/ Creating Tests/Hoge/HogeTests.swift
それでは自動生成されたファイルの中身を見ていきましょう。
Package.swift
親ディレクトリ名をそのままPackage名として定義しています。
import PackageDescription let package = Package( name: "Hoge" )
.gitignore
ビルドによる成果物、依存してるPackage群、Xcodeプロジェクトファイルなどがignoreとしたいファイルのようです。
.DS_Store /.build /Packages /*.xcodeproj
Sources/Hoge.swift
親ディレクトリ名の構造体が定義されており、textのプロパティにはHello, World!
が値として入っています。
雛形的にrootの構造体としてここからライブラリにアクセスさせたい意図があるようにも思えます。
struct Hoge { var text = "Hello, World!" }
Tests/LinuxMain.swift
Tests/LinuxMain.swiftがテストの際に最初に呼ばれるファイルになります。
ここではターゲットとなるTestの全クラスをXCTMainに渡して教えてあげています。
import XCTest @testable import HogeTestSuite XCTMain([ testCase(HogeTests.allTests), ])
Tests/Hoge/HogeTests.swift
自動生成するHoge構造体が保持してるtextの中身をテストしています。
先ほどのTests/LinuxMain.swift
で見たようにallTestsとしてTestする内容の一覧を返すようにしています。
import XCTest @testable import Hoge class HogeTests: XCTestCase { func testExample() { // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct results. XCTAssertEqual(Hoge().text, "Hello, World!") } static var allTests : [(String, (HogeTests) -> () throws -> Void)] { return [ ("testExample", testExample), ] } }
swift packageからXcodeのプロジェクトファイルを生成する
Hogeディレクトリで自動生成したファイルを元にXcodeのプロジェクトファイルを生成します。
swift package generate-xcodeproj
すると下記ログが出力されプロジェクトファイルが生成されます。
generated: ./Hoge.xcodeproj
早速Xcodeで開いてみましょう。
自動でコードがプロジェクトファイルに紐付けされた状態になっていますね。
このようにswift package
コマンドを使えばSwiftのコーディングに集中することができます。
どんどんSwiftで良いコードを書いていきましょう。