Slide 1

Slide 1 text

WWDC19ͷLabࣄ৘ 2019/06/12 @ؼ͖ͬͯͨؔ੢ϞόΠϧΞϓϦݚڀձ#2 Yutaro Muta @yutailang0119

Slide 2

Slide 2 text

• Yutaro Muta @yutailang0119 • Hatena Co., Ltd. @Kyoto • Conference Staff • builderscon 2017, 2018 • try! Swift Tokyo 2019, 2020 • WWDC19ެࣜࣸਅ "Off to a Running Start" ʹࡌͬͨͷͰɺ୳ͯ͠Ͷ Who am I ?

Slide 3

Slide 3 text

WWDC/Labs

Slide 4

Slide 4 text

WWDC/Labs • Technology΍User InterfaceΛ࢝ΊɺAppleͷΤϯδχΞɺσβΠφʔɺଞ৬ छͷ֤ΤΩεύʔτ͕ొ৔ͯ͠ɺ࣭໰ʹ౴͑ͯ͘ΕͨΓɺఏҊͰ͖ͨΓ͢Δ • ͦͷ৔ʹߦ͚͹࣭໰Ͱ͖ΔLab or நબ༧໿͕ඞཁͳLab • WWDCݱ஍ʹߦ͘ͳΒɺઈରʹ଍ΛӡΜͩํ͕͍͍ͱݴΘΕΔ͋Ε • ηογϣϯͷཪͳͷͰɺ೰ΉͳΒLabʹߦ͚ (ηογϣϯ͸ಈըͰݟΕΔ) • ηογϣϯͱಉ͘͡ɺKeynoteޙʹ൑໌͢ΔLab΋ଟ਺͋Δ • ΋ͪΖΜӳޠ

Slide 5

Slide 5 text

WWDC19/Labs

Slide 6

Slide 6 text

WWDC19/Labs • [New] ࠞࡶ͍ͯ͠ΔLabͰ͸WWDCΞϓϦͷQRίʔυΛ࢖ͬͯɺLab QueuingʹೖΓɺॱ൪ ͕དྷΔͱΞϓϦ௨஌Ͱݺͼग़ͯ͘͠ΕΔ • [New] Expanding to JapanͷΑ͏ͳɺϦʔδϣϯຖͷάϩʔεʹϑΥʔΧεͨ͠Lab͕ొ৔ • SwiftUI΍iPad Apps for Mac౳ͷ৽ొ৔Lab͕ଟ͍ͨΊɺUIKit and Xxxͱ͍ͬͨUIKitͰ͢Β๊ ͖߹Θ͕ͤଟ͘ͳͬͨ • ൒ެࣜʁεςοΧʔΛ഑͍ͬͯͨΓͨ͠ • SwiftUI • Swift Package • and more

Slide 7

Slide 7 text

WWDC19/Labs/Technology Accelerate Lab Accessibility Lab AirPlay Lab App Distribution and Device Management Lab App Store Connect and TestFlight Lab AppKit and Combine Lab AppKit Lab Apple Podcasts Lab Apple Search Ads Lab AR Quick Look and Reality Composer Lab ARKit Lab Audio Lab AVFoundation Lab AVKit Lab Building, Signing, and Distributing Lab Business Chat Integration and iMessage App Lab CallKit, VOIP Pushes and Identity Lookup Lab Camera Capture Lab CarPlay Lab ClassKit and Education Technologies Lab Contacts and EventKit Lab Core Animation and Quartz 2D Lab Core Bluetooth Lab Core Data and CloudKit Lab Core Data Lab Core Haptics Lab Core Image Lab Core Location Lab Core Motion Lab Core NFC Lab Core NFC, Apple Pay & Wallet Lab Core OS Lab Core Spotlight and Search Lab Documents, File Management and Quick Look Lab Documents, File Management and Quick Look Lab Feedback Assistant Lab File Systems Lab Foundation and Combine Lab Game Center Lab Game Controllers Lab Getting Started with Xcode Lab Health and Fitness Technologies Lab HomeKit Lab HTTP Live Streaming Lab iCloud and CloudKit Lab In-App Purchases & Subscriptions Lab Installer Lab Interface Builder and Auto Layout Lab Internationalization Lab iPad Apps for Mac Lab LLVM Compiler, Objective-C, C++, and Linking Lab Mac App Notarization Lab Machine Learning Lab MapKit, MapKitJS, and Indoor Location Lab Metal for Machine Learning and Ray Tracing Lab Metal for Pro Apps Lab Metal Lab Metal Optimization Lab Monetizing with Subscriptions MusicKit Lab Networking Lab New to Apple Platforms Lab Notifications Lab Performance, Power, Crashes, and Debugging Lab PhotoKit & Photos Extensions Lab Privacy Lab RealityKit and Reality Composer Lab ReplayKit Lab ResearchKit and CareKit Lab Safari, WebKit, and Authentication Services Lab SceneKit Lab Security Lab Sign In with Apple Lab Simulator, Testing, and Continuous Integration Lab Siri Shortcuts and SiriKit Lab Siri Shortcuts Lab SiriKit and Shortcuts Lab SiriKit, Shortcuts, and Siri Event Suggestions Lab Speech Recognition Lab SpriteKit Lab Swift Open Hours Swift Packages Lab Swift Playgrounds Lab SwiftUI Lab Text, Fonts, and SF Symbols Lab tvOS Lab UIKit and Collection Lab UIKit and Dark Mode Lab UIKit and Multitasking Lab UIKit and PencilKit Lab USD and usdz Lab watchOS Independence Lab watchOS Lab watchOS Runtime Lab Xcode Open Hours ܭ95 * ׬શҰகͰॏෳআڈ

Slide 8

Slide 8 text

• Accessibility Design Lab • App Icon and SF Symbols Design Lab • Design Lab • Sire Design Lab • watchOS Design Lab WWDC19/Labs/User Interface Design ܭ5 * ׬શҰகͰॏෳআڈ

Slide 9

Slide 9 text

Expanding to Japan Expanding to Korea Expanding to Taiwan Expanding to the Middle East Expanding to the United States Export Compliance By Appointment Lab Getting Started with Apple Search Ads Getting Started with Reporting & Analytics Getting Started with TestFlight Getting Started with the App Store Connect API Learn More About the Today Tab Monetizing with Subscriptions Pitch to Apple Arcade App Review By Appointment Lab App Store Commerce & Features By Appointment Lab App Store Connect By Appointment Lab Apple Developer Program Support By Appointment Lab Apple Marketing Communications By Appointment Lab Apple Search Ads By Appointment Lab Best Practices for Apple Search Ads Business & Marketing By Appointment Lab Commerce Engineering & Technologies By Appointment Lab Discuss Your App with App Review Expanding to Canada Expanding to China Expanding to Europe WWDC19/Labs/App Store ܭ26 * ׬શҰகͰॏෳআڈ

Slide 10

Slide 10 text

yutailang0119͕ߦ͖ͬͯͨ

Slide 11

Slide 11 text

https://github.com/yutailang0119/ProgressSpinnerKit/pull/2 • yutailang0119/ProgressSpinnerKit ͷSwift 5Խ • SwiftPMύοέʔδΛ swift-5.0.1-RELEASE ʹΞοϓσʔτ͢Δͱɺςετ ͸௨Δ͕ɺ࣮ߦ͢ΔͱΫϥογϡ͢Δ • SwiftPMͩ͠ɺAnkit (SwiftPMͷίΞϝϯςφʔ @Apple) ʹฉ͘ͱ͍͍Αͱ LabͷγϑτΛڭ͑ͯ΋Βͬͨ

Slide 12

Slide 12 text

Environment $ swift --version Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5) Target: x86_64-apple-darwin18.6.0 $ xcrun --find swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift Package.swift // swift-tools-version:4.2 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "ProgressSpinnerKit", products: [ .library(name: "ProgressSpinnerKit", targets: ["ProgressSpinnerKit"]), ], dependencies: [ .package(url: "https://github.com/apple/swift-package-manager.git", from: "0.3.0"), ], targets: [ .target(name: "ProgressSpinnerKit", dependencies: ["Utility"]), .testTarget(name: "ProgressSpinnerKitTests", dependencies: ["ProgressSpinnerKit"]), .target(name: "Demo", dependencies: ["ProgressSpinnerKit"]), ] ) ProgressSpinnerKit/Demo Expected Behavior

Slide 13

Slide 13 text

Environment $ swift --version Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5) Target: x86_64-apple-darwin18.6.0 $ xcrun --find swift /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift Package.swift // swift-tools-version:5.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "ProgressSpinnerKit", products: [ .library(name: "ProgressSpinnerKit", targets: ["ProgressSpinnerKit"]), ], dependencies: [ .package(url: "https://github.com/apple/swift-package-manager.git", .revision("swift-5.0.1- RELEASE")), ], targets: [ .target(name: "ProgressSpinnerKit", dependencies: ["SPMUtility"]), .testTarget(name: "ProgressSpinnerKitTests", dependencies: ["ProgressSpinnerKit"]), .target(name: "Demo", dependencies: ["ProgressSpinnerKit"]), ] ) ProgressSpinnerKit/Demo Fatal error bash-3.2$ make demo swift run Demo default: ⠋ ⠙ Stop box1: ⠋ Fatal error: Attempted to read an unowned reference but object 0x7fd6fb40d470 was already deallocatedmake: *** [demo] Abort trap: 6

Slide 14

Slide 14 text

OutputByteStream͕ݪҼͩͱਪଌ͚ͨ͠Ͳɺ ৄ͘͠ͳ͍͔ΒΘ͔Βͳ͍

Slide 15

Slide 15 text

Swift Open Hours

Slide 16

Slide 16 text

Swift Open Hours • SwiftPMͷ͜ͱͩ͠ɺAnkit (SwiftPMͷίΞϝϯςφʔ @Apple) ʹฉ͘ͱ͍ ͍ΑͱLabͷγϑτΛڭ͑ͯ΋Βͬͯɺࠓ͍Δͱͷ͜ͱͳͷͰ͙͢ʹߦͬͨ • SPMUtilityͷ͜ͱͰ࣭໰͕͋Δͱݴ͏ͱɺAnkitʹܨ͍Ͱ΋Β͑ͨ • apple/swift-package-manager Ͱ͍ͭ΋ݟΔɺ͋ͷAnkitͩ!!!

Slide 17

Slide 17 text

࠷ॳʹ࿩ͨ͜͠ͱ • Swift CLI༻ͷProgressSpinnerϥΠϒϥϦΛ࡞͍ͬͯΔ • Success/FailureͷDemoΛݟͤΔ • SwiftPMͷґଘόʔδϣϯΛΞοϓσʔτ͢ΔͱɺΫϥογϡ͢ΔΑ͏ʹ ͳͬͯ͠·ͬͯɺ͜Εͷमਖ਼ํ๏͕Θ͔Βͳ͍͔ΒΞυόΠεΛ͍ͩ͘͞ • ͢ͰʹGitHub্ʹPull RequestΛग़͓͍ͯͨ͠΋ͷ΋ݟͤͨ

Slide 18

Slide 18 text

Ankit < ͡Ό͋ɺҰॹʹݟͯΈΑ͏

Slide 19

Slide 19 text

ϖΞϓϩ։࢝ • ϖΞϓϩܗࣜͰɺ͋ͨΓΛ͚͍ͭͯͬͯ͡ΈΔ • ݴΘΕΔ͕··ʹλΠϓͨ͠Γɺ͜͏ʁͬͯฉ͖ͳ͕Βߟ͑Λॻ͍ͯΈͨΓ • 20෼͘Β͍͔͚ͯɺແࣄղܾͨ͠ • https://github.com/yutailang0119/ProgressSpinnerKit/pull/2/commits/ e45916ad07cae8973d2182f578c6a8e3108daeff

Slide 20

Slide 20 text

ݪҼ͸ਪଌ௨ΓOutputByteStreamͰɺ SwiftPMͰͷInterface͕มߋ͞Ε͍ͯͨ͜ͱ (͍ͭͰʹผͷόά΋मਖ਼Ͱ͖ͨ)

Slide 21

Slide 21 text

ͦͷଞͷLab • Swift Packages Lab • XcodeͰϩʔΧϧPackageͷґଘΛ௥Ճ͍ͨ࣌͠Ͳ͏͢Δͷʁ • dSYM͸Ͳ͏ʹ͔ѻ͑Δʁ • SwiftUI Lab, Xcode Open Hours

Slide 22

Slide 22 text

·ͱΊ

Slide 23

Slide 23 text

https://twitter.com/yutailang0119/status/1137062817159307264

Slide 24

Slide 24 text

https://twitter.com/yutailang0119/status/1137063999688757249

Slide 25

Slide 25 text

https://twitter.com/yutailang0119/status/1136680641238409216

Slide 26

Slide 26 text

&OKPZ88%$ 5IBOLT w NVUBZVUBSP!HNBJMDPN w IUUQTUXJUUFSDPNZVUBJMBOH w IUUQTHJUIVCDPNZVUBJMBOH