43
What's new in Swif t3 @T achibanaKaoru 2015/12/16 @T achibanaKaoru, 2015 1

What's new Swift3

  • Upload
    toyship

  • View
    5.121

  • Download
    0

Embed Size (px)

Citation preview

Page 1: What's new Swift3

What's new in Swift3

@TachibanaKaoru 2015/12/16

@TachibanaKaoru, 2015 1

Page 2: What's new Swift3

自己紹介渋谷のVOYAGE GROUPでiOSエンジニアをしています。Twitter: @TachibanaKaoruBlog : http://www.toyship.org/

@TachibanaKaoru, 2015 2

Page 3: What's new Swift3

VOYAGE GROUP

4 appetiというグルメアプリや、朝時間.jpという朝時間活用アプリなどをだしてます。

@TachibanaKaoru, 2015 3

Page 4: What's new Swift3

try! Swift4 2016/3/2~3/4 at Shibuya

4 http://tryswiftconf.com/

4 VOYAGE GROUP はtry Swiftのスポンサーです。

@TachibanaKaoru, 2015 4

Page 5: What's new Swift3

Swift is Open Source

@TachibanaKaoru, 2015 5

Page 6: What's new Swift3

Swift is Open Source

@TachibanaKaoru, 2015 6

Page 7: What's new Swift3

@TachibanaKaoru, 2015 7

Page 8: What's new Swift3

Swift EvolutionSwiftのソースコードがオープンソースになっただけではなく、今後のSwiftの新規機能の議論もオープンされ、自由に参加できるようにもなりました。

@TachibanaKaoru, 2015 8

Page 9: What's new Swift3

Swift Evolution

@TachibanaKaoru, 2015 9

Page 10: What's new Swift3

@TachibanaKaoru, 2015 10

Page 11: What's new Swift3

前回のSwiftのメジャーバージョンアップをふりかえってみると……

@TachibanaKaoru, 2015 11

Page 12: What's new Swift3

WWDC 2015でSwift 2.0とiOS9が発表

@TachibanaKaoru, 2015 12

Page 13: What's new Swift3

早くiOS9の機能を使いたい!

@TachibanaKaoru, 2015 13

Page 14: What's new Swift3

iOS9の新機能を使うためには、最新のXcodeを使う必要があり、Swiftが強制的に1.2 -> 2.0にバージョンアップされる。

@TachibanaKaoru, 2015 14

Page 15: What's new Swift3

Swift 1.2とSwift 2.0にはコード互換性がない!

@TachibanaKaoru, 2015 15

Page 16: What's new Swift3

Swift 1.2 -> 2.0のマイグレーションツールが(一応)あったけど、まともに動かず、結局手動でソースコード修正

@TachibanaKaoru, 2015 16

Page 17: What's new Swift3

\(^o^)/

@TachibanaKaoru, 2015 17

Page 18: What's new Swift3

次回はそうならないように、Swift Evolutionの内容から、今後のSwiftのロードマップを予習していきましょう。

@TachibanaKaoru, 2015 18

Page 19: What's new Swift3

Swift 2.2

@TachibanaKaoru, 2015 19

Page 20: What's new Swift3

Swift 2.2まず、2016年春に、Swift 2.2のリリースが予定されています4 バグ修正、実装の品質向上、(warning messageなど)、コンパイル時間改善、パフォーマンス改善

4 コード互換性あり。4 3.0のリリースを見据えて、将来のコード変更に対する

warningを表示するようになる@TachibanaKaoru, 2015 20

Page 21: What's new Swift3

Swift 3.0

@TachibanaKaoru, 2015 21

Page 22: What's new Swift3

Swift 3.02016年秋に、Swift 3.0のリリースが予定されています。言語と標準ライブラリのバイナリレベルでのインターフェースを安定させることが目的。2系バージョンからのコードレベルの互換性はありません。

@TachibanaKaoru, 2015 22

Page 23: What's new Swift3

Swift 3.0

4 Stable ABI(binary interface)

4 Resilience,Portability

4 Type system cleanup and documentation

4 Complete generics

4 Focus and refine the language

4 API design guidelines@TachibanaKaoru, 2015 23

Page 24: What's new Swift3

Swift 3.0で対応しないこと4 2系Swiftとのソースレベルの互換性4 並列処理の言語サポート4 C++との互換性、マクロ4 標準ライブラリの拡張

@TachibanaKaoru, 2015 24

Page 25: What's new Swift3

Proposals

これからSwiftに導入される機能はProposal単位で検討されています。

@TachibanaKaoru, 2015 25

Page 26: What's new Swift3

Proposals

@TachibanaKaoru, 2015 26

Page 27: What's new Swift3

@TachibanaKaoru, 2015 27

Page 28: What's new Swift3

Proposalとは。今後のSwiftに追加したい or 削除したい機能の提案です。どのProposalを採用するかどうかの議論は、swift-revolution-mlで行われており、誰でも参加することができます。(もちろんProposalの提案も!)

@TachibanaKaoru, 2015 28

Page 29: What's new Swift3

Current Proposals (1/2)

0001-keywords-as-argument-labels0002-remove-currying0003-remove-var-parameters-patterns0004-remove-pre-post-inc-decrement0005-objective-c-name-translation0006-apply-api-guidelines-to-the-standard-lib0007-remove-c-style-for-loops

@TachibanaKaoru, 2015 29

Page 30: What's new Swift3

Current Proposals (2/2)

0008-lazy-flatmap-for-optionals0009-require-self-for-accessing-instance-members0010-add-staticstring-unicodescalarview0011-replace-typealias-associated0012-add-noescape-to-public-library-api0013-remove-partial-application-super0014-constrained-AnySequence

@TachibanaKaoru, 2015 30

Page 31: What's new Swift3

What is 'proposals

現在14件中、Swift2.2での採用が1件、Swift3.0での採用が5件。それ以外は検討中です。

@TachibanaKaoru, 2015 31

Page 32: What's new Swift3

[0001] Allow keywords as argument labels

4 Status: Swift2.2で採用4 Author: Doug Gregor

inやrepeatやdeferなどのキーワードとして使われていた単語を変数のラベル名に利用することができるようになる。(inout,var,let以外のすべての単語が使えるようになる)

@TachibanaKaoru, 2015 32

Page 33: What's new Swift3

let numArray = [1,2,3]

// OK on Swift 2.1/2.2func indexOf1(a: Int, within: [Int]){ }indexOf1(2, within: numArray)

// OK on Swift 2.1/2.2func indexOf3(a: Int, `in`: [Int]){ }indexOf3(2, `in`: numArray)

// Error on Swift 2.1,OK on Swift 2.2func indexOf2(a: Int, in: [Int]){ }

@TachibanaKaoru, 2015 33

Page 34: What's new Swift3

[0002] Removing currying func declaration syntax

Status: Swift3.0で採用Author(s): Joe Groff

カリー化の簡易記法がなくなる。(カリー化ができなくなるということではありません。)

@TachibanaKaoru, 2015 34

Page 35: What's new Swift3

カリー化とはfunc addTwoInts(a a: Int, b: Int) -> Int { return a + b}addTwoInts(a: 2, b: 3)

func addTwoIntsCurried(a a: Int) -> ( Int -> Int) {

func addTheOtherInt(b: Int) -> Int { return a + b }

return addTheOtherInt}let a1 = addTwoIntsCurried(a: 2)a1(3)

@TachibanaKaoru, 2015 35

Page 36: What's new Swift3

// OK in Swift2: func curried(x: Int)(y: String) -> Float { return Float(x) + Float(y)! }

// OK in Swift2 and Swift3: func curried(x: Int) -> (String) -> Float { return {(y: String) -> Float in return Float(x) + Float(y)! } }

@TachibanaKaoru, 2015 36

Page 37: What's new Swift3

[0003] Removing var from Function Parameters and Pattern Matching

Status: Swift3.0で採用Author(s): David Farler

if varなどが使えなくなる。let num : Int? = getOptionalInt()if var num = num {// if let だとerror

num = 12}

@TachibanaKaoru, 2015 37

Page 38: What's new Swift3

[0004] Remove the ++ and -- operators

Status: Swift3.0で採用Author: Chris Lattner

++と--をなくしましょう!(Proposal7とも関連)

@TachibanaKaoru, 2015 38

Page 39: What's new Swift3

Finally, these fail the metric of "if we didn't already have these, would we add them to Swift 3?"

@TachibanaKaoru, 2015 39

Page 40: What's new Swift3

[0005] Better Translation of Objective-C APIs Into Swift

Status: Swift3.0で採用Author(s): Doug Gregor, Dave Abrahams

Objective-CのAPIをSwiftにインポートする時のトランスレーション処理の改善。Stripping the "NS" Prefix なども含まれている。

@TachibanaKaoru, 2015 40

Page 41: What's new Swift3

[0006] Apply API Guidelines to the Standard Library

Status: レビュー待ちAuthor(s): Dave Abrahams, Dmitri Gribenko, Maxim Moiseev

Swift3.0の一部としてSwift API Design Guidelinesが公開されるので、標準ライブラリをそれに沿った実装にする。

@TachibanaKaoru, 2015 41

Page 42: What's new Swift3

[0007] Remove C-style for-loops with conditions and incrementers

Status: Swift3.0で採用Author(s): Erica Sadun

for-loopやめてfor-inを使いましょう。var array = [10,20,30,40,50]for(var i=0 ; i < array.count ;i++){ println("array[i] \(array[i])")}

@TachibanaKaoru, 2015 42

Page 43: What's new Swift3

4 これ以降のProposalはレビュー待ち...4 そして、これ以外のproposalも続々出されています。4 swift-revolution-mlを読んで次世代Swiftの準備をしよう!

@TachibanaKaoru, 2015 43