Slide 1

Slide 1 text

ͬ͘͟ΓΘ͔ΔSwift TokyoTech LT #2 @S_Shimotori

Slide 2

Slide 2 text

୭ʁ • @S_Shimotori (@S_Shimotori_pub) • ৘ऑΤֶܥM2 • DroidKaigiӡӦελοϑ • Swift΍PythonΛॻ͍͓ͯۚΛ໯͏͓࢓ࣄ

Slide 3

Slide 3 text

DroidKaigi2018 ։࠵ܾఆʂ 2018೥2݄8-9೔@ϕϧαʔϧ৽॓άϥϯυ https://droidkaigi.github.io/2018/

Slide 4

Slide 4 text

AndroidͱiOSͷ؀ڥͷҧ͍ • Android • ॳճ͚ͩొ࿥ྉΛ෷͑͹OK • ೔ຊAndroidͷձ͕͋Δɺֶੜ෦΋͋Δ • ࠓKotlin͕೤͍ʂ • iOS • ຖ೥͓෍ࢪ͕ඞཁ • ͦΜͳձ͚͋ͬͨͬ • ·ͨSwift4ʹॻ͖׵͑Δ࡞ۀ͕͸͡·Δ͓…

Slide 5

Slide 5 text

ϞόΠϧͷ࿩͸Ҏ্ʂ

Slide 6

Slide 6 text

ຊ୊

Slide 7

Slide 7 text

͓඼ॻ͖ • Swiftͷจ๏ͷ֓ཁ • Swift͕࢖͑Δ৔ॴ • CϥΠϒϥϦͷݺͼग़͠ • Swiftʹ͍ͭͯ΋ͬͱ஌Γ͍ͨͱ͖͸

Slide 8

Slide 8 text

͓඼ॻ͖ • Swiftͷจ๏ͷ֓ཁ • Swift͕࢖͑Δ৔ॴ • CϥΠϒϥϦͷݺͼग़͠ • Swiftʹ͍ͭͯ΋ͬͱ஌Γ͍ͨͱ͖͸

Slide 9

Slide 9 text

Swiftͷจ๏ͷ֓ཁ

Slide 10

Slide 10 text

ཁ໿͢Δͱ͜Μͳ͔Μ͡ʂ • ϓϩτίϧࢦ޲ / ΦϒδΣΫτࢦ޲ /
 ؔ਺ܕ / ໋ྩܕ / ϒϩοΫߏ଄ • ڧ͍੩తܕ෇͚ / ܕਪ࿦ • Objective-C౳͔ΒͷӨڹ͋Γ • Swift4Ӷҙ੡࡞த • ܕ҆શnull҆શɻૉ੖Β͍͠ɻ • LLVMͱ͔ͳΜͱ͔ https://en.wikipedia.org/wiki/Swift_(programming_language)

Slide 11

Slide 11 text

ϓϩτίϧࢦ޲ʁ

Slide 12

Slide 12 text

Swiftyʹॻ্͘Ͱ೺Ѳ͓͖͍ͯͨ͜͠ͱ • Swiftʹ͸classͷଞʹstructɺenumɺprotocolΛ࣋ͭ • protocol͸”ಛఆͷॲཧͷͨΊͷϝιουͷઃܭਤ” • JavaͰ͍͏ͱ͜Ζͷinterface • ͭ·Γ࢖Θͳͯ͘΋ಈ͔ͳ͍͜ͱ͸ͳ͍ • Swift3ඪ४ϥΠϒϥϦͷ201γϯϘϧͷ͏ͪɺ
 struct͸140ݸɺenum͸12ݸɺprotocol͸48ݸɺ
 class͸ͳΜͱ1ݸʂ

Slide 13

Slide 13 text

Java ComparableͱSwift Comparable • Java Comparable • Swift Comparable μΠϚ http://qiita.com/S_Shimotori/items/83e22d83f5c0096a6d5b http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/lang/Comparable.java https://github.com/apple/swift/blob/c15c671372620b543e19a662218a247f601628e4/stdlib/public/core/Comparable.swift ※ ࣮ࡍ͸Equatableͷ “=” ͱComparableͷ ”<“ Λ࣮૷͢Ε͹଍ΓΔ

Slide 14

Slide 14 text

OptionalͱCommandLine • Optional͸enum Optional • .some(Wrapped)ͱ.noneΛྻڍ • Nullableͷਖ਼ମ • enum CommandLine͸ྻڍͯ͠ͳ͍ • ྻڍܕࣗ਎͕ΠχγϟϥΠζ͞Εͳ͍ಛੑΛར༻ https://github.com/apple/swift/blob/master/stdlib/public/core/CommandLine.swift https://github.com/apple/swift/blob/master/stdlib/public/core/Optional.swift Optionalͷ౶ҥߏจ

Slide 15

Slide 15 text

ͪͳΈʹ: ԋࢉࢠΛఆٛ͢Δ • Swift͸ࣗ෼ͰԋࢉࢠΛఆٛ͢Δ͜ͱ͕Մೳ • ओʹؔ਺ܕ͍ͨ͠ਓ͕࡞Δ “>=“ • ࢖͑Δه߸͸ແ೉ͦ͏ͳ΍ͭ • / = - + ! * % < > & | ^ ~ ?ͱ͔ଞ͍Ζ͍Ζ • ͑ʁ$͕ͩΊͳͷʹὺ͕࢖͑Δͷʁʁ

Slide 16

Slide 16 text

ܕਪ࿦΋͋ΔΜͩͶ͐ ͍͍ͪͪܕΛॻ͔ͳ͍͍ͯ͘Ͷʂ

Slide 17

Slide 17 text

SwiftͰܕਪ࿦ͱ͍ͬͨΒ…… • ʮίϯύΠϧ࣌ؒͷେ൒͕ܕਪ࿦͡ΌΜwʯ • ʮਪ࿦ʹ͔͔͔࣌ؒͬͨΒίϯύΠϧఘΊ·ͨ͠Τϥʔʯ • ղܾࡦ: • ৽͍͠όʔδϣϯͷSwift(ͱXcode9)Λ࢖͏ • એݴ࣌ʹͪΌΜͱܕΛॻ͘ • ؔ਺ܕͳΜͯͳ͔ͬͨɻ͍͍Ͷʁ

Slide 18

Slide 18 text

ΤϥʔදݱͲ͏ͳͬͯΜͷʁ

Slide 19

Slide 19 text

Swiftʹ͓͚ΔΤϥʔදݱ • جຊతʹ͸NonNullɺthrow΋ͳ͠ • ੒ޭ/ࣦഊͷ2஋͸໭Γ஋NullableͰදݱ • Optional.some(Wrapped)ͰแΜͰฦ͢ • Լॲཧ͠ͳ͍ͱแΜͩத਎͸࢖͑ͳ͍ʂ • ΑΓৄࡉͳΤϥʔදݱΛ͢ΔͳΒErrorΛ౤͛Δ • Τϥʔ͕ى͖ͳ͍͜ͱ͕໌Β͔ͳΒ͹”!”Ͱ௵͢

Slide 20

Slide 20 text

͓඼ॻ͖ • Swiftͷจ๏ͷ֓ཁ • Swift͕࢖͑Δ৔ॴ • CϥΠϒϥϦͷݺͼग़͠ • Swiftʹ͍ͭͯ΋ͬͱ஌Γ͍ͨͱ͖͸

Slide 21

Slide 21 text

Swift͕࢖͑Δ৔ॴ

Slide 22

Slide 22 text

͋ʔ͸͍͸͍iOSͶ ڵຯͳ͍ΜͰ✋

Slide 23

Slide 23 text

DarwinҎ֎Ͱ΋࢖͑Δ͔Βʂ ͕͢͞ʹ2.2͸ݹ͍͕

Slide 24

Slide 24 text

LinuxͰSwift • swift.orgͷUbuntu༻όΠφϦ͔dockerΛ࢖͏ͷָ͕ • Կ͔࡞Δ࣌͸Swift Package ManagerΛ࢖͏ͱྑ͍ • ґଘؔ܎ղܾͨ͠Γςετͨ͠Γ͢Δ • ίϚϯυϥΠϯπʔϧ͕࡞ΕΔ • WebϑϨʔϜϫʔΫͰWebΞϓϦ͕࡞ΕΔ • Perfectͱ͔Vaporͱ͔ͦͷ΁Μ

Slide 25

Slide 25 text

ͱ͜ΖͰ

Slide 26

Slide 26 text

Swift͕Ͱ͖Δ͜ͱɺ୯඼Ͱ͸Ͱ͖ͳ͍͜ͱ • Swift಺ଂͷඪ४ϥΠϒϥϦ͕Ͱ͖Δ͜ͱ • هड़ʹඞཁͳػೳͷجຊ૚ • Stringͱ͔printͱ͔ͦ͏͍͏ͷ • “import Foundation”ͰͰ͖Δ͜ͱ • ΞϓϦͷجຊతͳػೳʹؔΘΔૢ࡞ • ϑΝΠϧͱ͔ηογϣϯͱ͔ͦ͏͍͏ͷ • Darwin༻FoundationͱLinux༻Foundation͸ผ෺ (௚༁)

Slide 27

Slide 27 text

swift-corelibs-foundationਐḿঢ়گ(7݄17೔ݱࡏ) https://github.com/apple/swift-corelibs-foundation/blob/master/Docs/Status.md “Unimplemented”

Slide 28

Slide 28 text

͓඼ॻ͖ • Swiftͷจ๏ͷ֓ཁ • Swift͕࢖͑Δ৔ॴ • CϥΠϒϥϦͷݺͼग़͠ • Swiftʹ͍ͭͯ΋ͬͱ஌Γ͍ͨͱ͖͸

Slide 29

Slide 29 text

CϥΠϒϥϦͷݺͼग़͠ (SPMͰͷ) iOS/macOS͸΋ͬͱ͔ΜͨΜɻ

Slide 30

Slide 30 text

SPMͰCϥΠϒϥϦΛ࢖͏ • ޙൃݴޠΒ͘͠ͲΜͲΜઌഐͷҨ࢈Λ࢖͍ͬͯ͘ • Foundation͕ΞϨͳͷͰ࢖͍ݹ͞ΕͨϥΠϒϥϦͷ ํ͕҆৺ • SPMͰϥοϓ͠ɺ1ͭͷύοέʔδͱͯ͠ѻ͏ • ґଘϦετʹ͸Swiftͷ΋ͷ΋Cͷ΋ͷ΋ҰॹʹฒͿ • ໊લΛCHogeͱ͢Δ׳ྫ͕͋Δ • cURLͳΒCCurlͱ͔

Slide 31

Slide 31 text

໰୊͕ൃੜ͢Δ΍Γํ ΅͘ͷߟ͍͖͑ͨ͞ΐ͏ͷ41.ύοέʔδ ύοέʔδ" ύοέʔδ# ύοέʔδ$ *#.4XJGU $$VSM 44IJNPUPSJ $$VSM D63- ·Ί͖ͪ͠: IBM͸͕Μ͹ͬͯSwiftͯ͠Δɻ͍͍ͻͱɻ ໊લিಥ (ґଘݩˠґଘઌ)

Slide 32

Slide 32 text

͓඼ॻ͖ • Swiftͷจ๏ͷ֓ཁ • Swift͕࢖͑Δ৔ॴ • CϥΠϒϥϦͷݺͼग़͠ • Swiftʹ͍ͭͯ΋ͬͱ஌Γ͍ͨͱ͖͸

Slide 33

Slide 33 text

Swiftʹ͍ͭͯ ΋ͬͱ஌Γ͍ͨͱ͖͸

Slide 34

Slide 34 text

ͱΓ͋͑ͣॻ͖ͳ͕Β΍ͬͯΈ͍ͨʂ • ԦಓXcodeͰߦ͖͍ͨਓ • Xcode8ʹ͸ϦϑΝΫλϦϯάػೳ͕ͳ͍(স) • playgroundsͰؾܰʹॻ͚Δɺͨͷ͍͠ • JetBrainsڭͷਓ • iOSͱҰॹʹ΍ΔͳΒAppCodeɺpure SwiftͳΒCLion • Vimmer • ͪΌΜͱߋ৽͕௥͍͍ͭͯΔͷ͸ͳ͍Μ͡Ό… • Emacser • ͪΌΜͱߋ৽͞ΕͯΔɺͣΔ͍

Slide 35

Slide 35 text

͋ͱ͸͜ͷลಡΜͰ͓͘ͱ͍͍Αɻ • https://developer.apple.com/library/content/documentation/Swift/ Conceptual/Swift_Programming_Language/ • https://developer.apple.com/documentation/swift • https://swift.org/

Slide 36

Slide 36 text

·ͱΊ

Slide 37

Slide 37 text

Swiftͷ͕͍͜͜͢͝ʂ • ڧ͍੩తܕ෇͚ͰprotocolͰenumͰ͍͢͝ʂ • αʔό΋ίϚϯυϥΠϯπʔϧ΋࡞ΕΔʂ • ͦΕPythonͰΑ͘ͳ͍ʁ • ಈతܕ෇͚͸அͯ͡Noɺઈରʹڐ͞ͳ͍ • ͦΕGo • ͦͷՄೳੑ͸͋Δ • ͦΕKotlin • ૉͰAWSLambda͍͚ΔΜͩ΋ΜͳʔͣΔ͍Αͳʔ