swift on docker
TRANSCRIPT
Swift on Docker2016/07/10(月) .swift
自己紹介
● HN: 神速● twitter: @sinsoku_listy● github: sinsoku● 所属: 株式会社grooves● 言語: Ruby, Node.js, Swift
株式会社grooves でのお仕事
_人人人人人人人人人人人人人人人人_
> Webアプリケーションエンジニア <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
● Swift on Docker の始め方● Docker の利点● Docker の欠点● まとめ
そんな私が Swift を勉強してみた
Swift on Docker の始め方
$ docker pull swiftdocker/swift$ docker run --privileged -it swiftdocker/swift swiftWelcome to Swift version 3.0-dev (LLVM ...1>
Docker 環境を構築済みなら、たった2コマンドで 3.0-dev 環境が手に入る!
3.0-dev でも大丈夫だよ。たぶん。
実際に触ってみた
$ mkdir FizzBuzz$ docker run -v $(pwd):/app -w /app swiftdocker/swift \ swift package init -C FizzBuzzCreating library package: FizzBuzzCreating Package.swift...
ラッパースクリプト
#!/bin/shdocker run -v $(pwd):/app -w /app swiftdocker/swift swift $*
$ bin/swift package
bin/swift
↑のようなラッパースクリプトを用意すると便利
Sources/FizzBuzz.swift
struct FizzBuzz {
var text = "Hello, World!"}
Tests/FizzBuzz/FizzBuzzTests.swiftimport XCTest@testable import FizzBuzz
class FizzBuzzTests: 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(FizzBuzz().text, "Hello, World!") }
static var allTests : [(String, (FizzBuzzTests) -> () throws -> Void)] { return [ ("testExample", testExample), ] }}
ビルド
$ bin/swift buildCompile Swift Module 'FizzBuzz' (1 sources)
テスト
$ bin/swift testCompile Swift Module 'FizzBuzz' (1 sources)Compile Swift Module 'FizzBuzzTestSuite' (1 sources)Linking .build/debug/FizzBuzzTests.xctestTest Suite 'All tests' started at 03:46:10.970Test Suite 'debug.xctest' started at 03:46:10.972Test Suite 'FizzBuzzTests' started at 03:46:10.972Test Case 'FizzBuzzTests.testExample' started at 03:46:10.972Test Case 'FizzBuzzTests.testExample' passed (0.0 seconds).Test Suite 'FizzBuzzTests' passed at 03:46:10.973
Executed 1 test, with 0 failures (0 unexpected) in 0.0 (0.0) secondsTest Suite 'debug.xctest' passed at 03:46:10.973
Executed 1 test, with 0 failures (0 unexpected) in 0.0 (0.0) secondsTest Suite 'All tests' passed at 03:46:10.974
Executed 1 test, with 0 failures (0 unexpected) in 0.0 (0.0) seconds
Docker の利点
● 環境構築が楽● 重い XCode を立ちあげなくて済む
○ vim が使える!● CI 環境の構築が楽
○ TravisCI, CIrcleCI, wercker など
Docker の欠点
● ライブラリがほぼ使えない○ swift-package の mixedSources Error○ XCode に依存してる OSS は無理
● Web上の記事が役に立たない○ 3.0-dev の情報が少ない○ swift-package の情報がない○ XCode の情報ばかり
apple/swift-package-managerSources/PackageLoading/PackageExtensions.swift
Docker の欠点
● ライブラリがほぼ使えない○ swift-package の mixedSources Error○ XCode に依存してる OSS は無理
● Web上の記事が役に立たない○ 3.0-dev の情報が少ない○ swift-package の情報がない○ XCode の情報ばかり
まとめ
● おすすめできる人○ Swift 3.0-dev を手軽に試したい人○ Linux 対応のパッチを作る人
● それ以外の人にはおすすめできない
もう少し Linux 対応が進めば、使いやすくなるかも
おまけ
勉強していた内容は GitHub で公開しているので、Swift on Dockerを試したい奇特な人は参考にどうぞ。
https://github.com/sinsoku/study
ご清聴ありがとうございました