Slide 1

Slide 1 text

Swi$%ͷϥΠϒϥϦͷ࿩

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

Swi$%ͷาΈ • 2014/06(:(Swi-((WWDC(2014) • 2014/09(:(Swi-(1.0((Xcode(6.0) • 2014/10(:(Swi-(1.1((Xcode(6.1) • 2015/04(:(Swi-(1.2((Xcode(6.3) • 2015/06(:(Swi-(?.?((WWDC(2015(?)

Slide 4

Slide 4 text

Swi$%ͷಛ௃ • Modern • Designed,for,Safety

Slide 5

Slide 5 text

Modern • λϓϧɺStructɺEnum • ΫϩʔδϟɺδΣωϦΫε • ؔ਺ܕϓϩάϥϛϯά

Slide 6

Slide 6 text

Designed(for(Safety • varʢܕਪ࿦ɺ҉໧తܕม׵͸͠ͳ͍ʣ • letʢҰ౓୅ೖͨ͠ΒมߋͰ͖ͳ͍ʣ • ܕ҆શʢArray/Dic.onary1಺ͷ஋ͷܕࢦఆʣ • Op.onalʢnil1ͷऔΓѻ͍ʣ

Slide 7

Slide 7 text

Swi$%ͷϥΠϒϥϦ

Slide 8

Slide 8 text

Objec&ve(C*ͷϥΠϒϥϦʁ • Bridging(Header • CocoaPods(͸ࣗಈͰରԠͯ͘͠ΕΔ • ͔͠͠ɺSwi3(Β͠͞͸ࣦΘΕΔ • ܕ҆શͰͳ͍ • ແҙຯͳ(Op6onal( • ଞʹ୅ସ͕ͳ͍৔߹ͷखஈͱͯ͠͸༗ӹ

Slide 9

Slide 9 text

Swi$%ωΠςΟϒͷϥΠϒϥϦ • Ͱ͖Δ͚ͩ"Swi&"ωΠςΟϒͷ΋ͷΛબͼ͍ͨ • Objec,ve.C"ఆ൪ϥΠϒϥϦ͸͍͍ͩͨಉ༷ͷ"Swi&"൛͕͋Δ • Swi&"ͳΒͰ͸ͷ΋ͷ΋গͣͭ͠ग़͖͍ͯͯΔ

Slide 10

Slide 10 text

Alamofire

Slide 11

Slide 11 text

Alamofire • AFNetworking.ͷ.Swi0.൛Έ͍ͨͳཱͪҐஔ Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) .response { (request, response, data, error) in println(response) println(error) }

Slide 12

Slide 12 text

APIKit

Slide 13

Slide 13 text

APIKit • Swi%&Β͠͞Λଧͪग़ͨ͠ωοτϫʔΫ௨৴ϥΠϒϥϦ let request = GitHub.SearchRepositories(query: "APIKit", sort: .Stars) GitHub.sendRequest(request) { response in switch response { case .Success(let box): // SearchRepositories Ϋϥε͕ఆΊΔϨεϙϯεܕ println(box.value) case .Failure(let box): // NSError ܕ println(box.value) } }

Slide 14

Slide 14 text

Result

Slide 15

Slide 15 text

Result • ͖͞΄Ͳͷ"APIKit"͕಺෦Ͱ࢖͍ͬͯΔ enum Result { case Success(Box) case Failure(Box) } result = someFunc() // Result Λฦؔ͢਺ switch result { case .Success(let box): // box.value: String case .Failure(let box): // box.value: NSError }

Slide 16

Slide 16 text

ิ଍ɿOp#onal(࠶ߟ • Op$onalɿ੒ޭ/ࣦഊͷҙຯ͚ͮ enum Optional { case Some(T) case None } • Result(͸(nil((None)(ଆʹΤϥʔ஋Λ࣋ͨͤͨ΋ͷ • ʢHaskell(Ͱ͍͑͹ɺOp4onal(͸(Maybe(ϞφυɺResult(͸( Either(Ϟφυʣ

Slide 17

Slide 17 text

Swi$yJSON

Slide 18

Slide 18 text

Swi$yJSON • ͳ͍ͱ͖ let JSONObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) if let statusesArray = JSONObject as? [AnyObject], let status = statusesArray[0] as? [String: AnyObject], let user = status["user"] as? [String: AnyObject], let userName = user["name"] as? String { // userName Λಘͨ } • ͋Δͱ͖ let json = JSON(data: dataFromNetworking) if let userName = json[0]["user"]["name"].string { // userName Λಘͨ }

Slide 19

Slide 19 text

ObjectMapper

Slide 20

Slide 20 text

ObjectMapper • Mantle(͕(Swi,(Ͱ࢖͑ͳ͍ͱ͓୰͖ͷํ΁ struct Temperature: Mappable { var celcius: Double? var fahrenheit: Double? init(){} init?(_ map: Map) { mapping(map) } mutating func mapping(map: Map) { celcius <- map["celcius"] fahrenheit <- map["fahrenheit"] } }

Slide 21

Slide 21 text

SnapKit

Slide 22

Slide 22 text

SnapKit • AutoLayout)هड़ϥΠϒϥϦ)Masonry)ͷ)Swi1)൛ let padding = UIEdgeInsetsMake(10, 10, 10, 10) view1.snp_makeConstraints { make in make.top.equalTo(superview.snp_top).with.offset(padding.top) make.left.equalTo(superview.snp_left).with.offset(padding.left) make.bottom.equalTo(superview.snp_bottom).with.offset(-padding.bottom) make.right.equalTo(superview.snp_right).with.offset(-padding.right) }

Slide 23

Slide 23 text

ͦͷଞ

Slide 24

Slide 24 text

ͦͷଞ • RealmSwi* • ReachabilitySwi* • KeychainAccess • PromiseKit • Typhoon • Reac9veCocoa<(3.0)

Slide 25

Slide 25 text

͓ΘΓʹ • Swi%&ωΠςΟϒͷϥΠϒϥϦΛ࢖͓͏ • ͍ͩͿ૿͖͑ͯͨ • ͨͩ͠ɺ·ͩ&beta&൛ͳ΋ͷ΋ଟ͍ͷͰܧଓతͳ΢Υον͕ ඞཁ