JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT...

62
SWIFTUI, CZYLI ZNOWU WSZYSTKO OD POCZĄTKU… JAKUB KORNATOWSKI

Transcript of JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT...

Page 1: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI, CZYLI ZNOWU WSZYSTKO OD POCZĄTKU…

JAKUB KORNATOWSKI

Page 2: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

JAKUB KORNATOWSKI

POBIERZ PREZENTACJĘ

▸ https://swiftly.pl/4developers

Page 3: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?FROM HERO TO ZERO?

Page 4: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

JAKUB KORNATOWSKI

PRÓG WEJŚCIA WG. JĘZYKÓW

OBJECTIVE-C SWIFT

Page 5: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

JAKUB KORNATOWSKI

PRÓG WEJŚCIA WG. JĘZYKÓW

OBJECTIVE-C SWIFT JS

Page 6: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

JAKUB KORNATOWSKI

PRÓG WEJŚCIA WG. FRAMEWORKÓW

APPKIT UIKIT SWIFTUI

Page 7: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

JAKUB KORNATOWSKI

PRÓG WEJŚCIA WG. FRAMEWORKÓW

APPKIT UIKIT SWIFTUI REACT JS

Page 8: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,
Page 9: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

SWIFTUI

SWIFT 5.1 CATALYST

COMBINE

Page 10: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

SWIFTUI. BETTER APPS. LESS CODE.

▸ SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift. Build user interfaces for any Apple device using just one set of tools and APIs. With a declarative Swift syntax that’s easy to read and natural to write, SwiftUI works seamlessly with new Xcode design tools to keep your code and design perfectly in sync. Automatic support for Dynamic Type, Dark Mode, localization, and accessibility means your first line of SwiftUI code is already the most powerful UI code you’ve ever written.

https://developer.apple.com/xcode/swiftui/

Page 11: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

PO CO I DLACZEGO?

▸ Uproszczenie procesu tworzenia UI.

▸ Uproszczenie tworzenia animacji.

▸ Wsparcie w tworzeniu architektury.

▸ Wprowadzenie deklaratywnego sposobu zapisu statycznego kodu.

▸ Natywne wsparcie dla programowania reaktywnego.

Page 12: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

CZY COMBINE JEST REAKTYWNY?

🤔

Page 13: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

▸ What? vs How?

▸ Jestem obok <nazwaSklepu>. Jak mam do Ciebie dojechać?

▸ I: Wyjedź zachodnim wyjazdem z parkingu, następnie skręć w aleje długą i jedź aż do komisariatu policji. Przed czerwonym budynkiem skręć w lewo w ulicę krótką. Po jakichś 200m będziesz pod moim blokiem.

▸ D: Mieszkam na ulicy Krótkiej 21, 00-123 w Warszawie.

PROGRAMOWANIE DEKLARATYWNE, NIE IMPERATYWNE

Page 14: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

PROGRAMOWANIE DEKLARATYWNE, NIE IMPERATYWNE

▸ What? vs How?

▸ Imperatywne: C, C++, Java

▸ Deklaratywne: HTML, SQL

▸ Mix: Swift, JS, C#, Python

Page 15: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5

▸ SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany, żeby wykorzystać potencjał języka.

▸ DSL-like API.

▸ Deklaratywny sposób budowania warstw UI.

▸ Protocol-Oriented.

Page 16: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

SOME

struct ContentView: View { var body: View { Text("Hello, World!”) } }

Page 17: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

SOME

struct ContentView: View { var body: View { Text("Hello, World!”) } }

Page 18: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

SOME

struct ContentView: View { var body: Text { Text("Hello, World!") } }

struct ContentView: View { var body: some View { Text("Hello, World!") } }

👎

👍

Page 19: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

PROPERTY DELEGATES

struct SettingsView: View { @State var enableAutoSave: Bool

var body: some View { return VStack { Toggle(isOn: $enableAutoSave) { Text("Auto saving enabled!") } } } }

Page 20: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

PROPERTY DELEGATES

struct SettingsView: View { var enableAutoSave: State<Bool>

var body: some View { return VStack { Toggle(isOn: enableAutoSave.projectedValue) { Text("Auto saving enabled!") } } } }

Page 21: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI… I CO DALEJ?

PROPERTY DELEGATES

struct SettingsView: View { var enableAutoSave: State<Bool>

var body: some View { return VStack { Toggle(isOn: enableAutoSave.projectedValue) { Text("Auto saving enabled!") } } } }

Page 22: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

REWRITE THE CODE

WE MUST

Page 23: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUICZYLI ZAADOPTUJ FRAMEWORK

Page 24: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

ADOPCJA

▸ Czy da się połączyć je ze sobą?

Page 25: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

ADOPCJA

▸ Czy da się połączyć je ze sobą?

▸ Jak?

Page 26: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

import UIKit import SwiftUI

Page 27: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

TO MOŻE JEDNAK PRZEPISAĆ?

Page 28: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

HOLD YOUR HORSES

▸ Stopniowe, powolne wdrażanie.

▸ Nie ma pośpiechu w integrowaniu nowości.

▸ oldBugs = newBugs

Page 29: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

MIESZAJ I ŁĄCZ

▸ Pełna interoperacyjność pomiędzy UIKit a SwiftUI

Page 30: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIViewController UIView

Representable Representable

Page 31: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

MIESZAJ I ŁĄCZ

▸ Pełna interoperacyjność pomiędzy UIKit a SwiftUI

struct SettingsView: View { @State var enableAutoSave: Bool

var body: some View { return VStack { Toggle(isOn: $enableAutoSave) { Text("Auto saving enabled!") } } } }

let vc = UIHostingController(rootView: SettingsView(enableAutoSave: true))

Page 32: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

IMPLEMENTACJA WSPÓŁMIERNA

▸ Nie zawsze nadbudowa jest możliwa

▸ Kompatybilność wsteczna

▸ ABSTRAKCJA

Page 33: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

protocol DetailsViewControllerFactory { func makeViewController(for details: Details) -> UIViewController }

struct DetailsViewControllerUiKitFactory: DetailsViewControllerFactory { func makeViewController(for details: Details) -> UIViewController { return DetailsViewController(detailsModel: details) } }

@available(iOS 13, *) struct DetailsViewControllerSwiftUIFactory: DetailsViewControllerFactory { func makeViewController(for details: Details) -> UIViewController { let view = DetailsView(details: details) return UIHostingController(rootView: view) } }

Page 34: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

let detailsViewControllerFactory: DetailsViewControllerFactory = { #if USE_SWIFT_UI if #available(iOS 13, *) { return DetailsViewControllerSwiftUIFactory() } #endif return DetailsViewControllerUiKitFactory() }()

Page 35: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

UIKIT & SWIFTUI

PROBLEMY WIEKU DZIECIĘCEGO

▸ Problemy z iOS 13 i Xcode 11

▸ Ograniczone pokrycie natywnego API

▸ Tylko dla iOS 13 / iPadOS / Catalina (polityka 2-letniego wsparcia)

▸ Support i dokumentacja!

Page 36: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

ARCHITEKTURAPO CO NAM TERAZ VIEWMODEL?

Page 37: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

ARCHITEKTURA

ARCHITEKTURA APLIKACJI W SWIFTUI

▸ SwiftUI to wyłącznie framework do budowania interfejsu użytkownika!

▸ Podejścia architektoniczne do budowania aplikacji na iOS nie zmieniają się znacząco.

▸ Nadal przestrzegamy S.O.L.I.D.nych praktyk, bez względu na język czy framework.

▸ Problem puchnących View Controller’ów nie znika, a migruje.

▸ “Can’t use Core Data with SwiftUI!”

Page 38: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

ARCHITEKTURA

MVC MVVMVIEW VIEW

VIEW CONTROLLER VIEW MODEL

MODEL MODEL

MANGERS

SWIFTUIVIEW

OBSERVABLE

MODEL

CORE OBJECTS

https://matteomanferdini.com/wp-content/uploads/2019/10/The-5-most-common-misconceptions-about-SwiftUI-Matteo-Manferdini.pdf

Page 39: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

ARCHITEKTURA

PYRAMID OF DOOMstruct DummyView: View { var body: some View { ZStack { Color.blue VStack { ForEach(0..<3) { _ in HStack { Text("Dummy”) Text("Text") } } } } } }

DUMMY TEXT DUMMY TEXT DUMMY TEXT

Page 40: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

ARCHITEKTURA

PYRAMID OF DOOMstruct DummyView: View { var body: some View { ZStack { Color.blue VStack { ForEach(0..<3) { _ in HStack { Text("Dummy”) Text("Text") } } } } } }

DUMMY TEXT DUMMY TEXT DUMMY TEXT

Page 41: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

ARCHITEKTURA

struct DummyView: View { var body: some View { ZStack { Color.black createVStack() } } func createVStack() -> some View { return VStack { ForEach(0..<3) { _ in self.createHStack() } } } func createHStack() -> some View { return HStack { Text("Dummy”) Text("Text") } } }

Page 42: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

BEZPIECZEŃSTWOLEPIEJ, CZY NIE LEPIEJ?

Page 43: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

BEZPIECZEŃSTWO

DOSTĘPNOŚĆ NARZĘDZI DO SZUKANIA PODATNOŚCI

▸ Najwięcej narzędzi dostępnych dla aplikacji napisanych w Objective-C, dostępnych na systemy 32-bitowe.

▸ Do czasów ABI Stability w Swift 5 - bardzo mało narzędzi do aplikacji pisanych w Swift.

▸ Im mniejsze wsparcie wsteczne, tym większe bezpieczeństwo (bo tym mniej dostępnych narzędzi).

Page 44: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHINGCZYLI CO DALEJ ZE MNĄ?

Page 45: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

DON’T PANIC

Page 46: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

Page 47: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

POCZĄTKUJĄCY

▸ Tak, to jest ten moment!

▸ Ale…

Page 48: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

REAKCJA NA ZMIANY - RYNEK VS DEVELOPER

▸ „And it would be grate if you have…”

▸ Adopcja w aktualnych rozwiązaniach chwilę potrwa.

▸ Czy sam chcę się rozwijać?

Page 49: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

20/80

▸ Reguła Pareto - 20% wysiłków daje 80% rezultatów - to samo w kontekście integracji nowości.

▸ Warto zacząć od przyswojenia odpowiednich 20%, aby zacząć je poprawnie implementować.

Page 50: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

https://mixpanel.com/trends/#report/ios_13

Page 51: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

WE HOPE THAT SWIFTUI CAN BE A STANDALONE LIBRARY WHICH IS SIMILAR TO SWIFT (BEFORE 5), JETPACK OR APPCOMPAT LIBRARY. IF IT IS BUNDLED IN IOS / MACOS, WE CANNOT USE IT FOR PRODUCTION FOR AT LEAST ONE YEAR SINCE IT’S FAR FROM MATURE NOW.

WildCat

SWIFT COACHING

https://forums.developer.apple.com/thread/123952

Page 52: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFTUI IS A STANDALONE LIBRARY NOW. IT LIVES IN /SYSTEM/LIBRARY/FRAMEWORKS/SWIFTUI.FRAMEWORK, AND IS DYNAMICALLY LINKED LIKE ANY OTHER FRAMEWORK, WITH THE STABLE SWIFT V5 ABI. OR DO YOU MEAN THAT IT WOULD BE AVAILABLE IN SOME FORMAT THAT YOU CAN INCLUDE IN YOUR APPLICATION BUNDLE AS A DEPENDENCY? THAT'S HIGHLY UNLIKELY, GIVEN THAT IT'S VERY DEPENDENT ON PARTICULAR VERSIONS OF THE OPERATING SYSTEM'S OTHER LIBRARIES; THERE'S GOING TO BE SOME SPECIAL SAUCE INSIDE UIKIT, AND SWIFTUI ALSO LINKS DIRECTLY AGAINST COREUI, WHICH IS THE PRIVATE FRAMEWORK THAT HANDLES 'THEME' RENDERING, I.E. THE LOOK & FEEL OF BUTTONS, BARS, ETC. ON EACH PLATFORM. REST ASSURED, THOUGH, THAT THE PACE OF IMPROVEMENT WILL BE BRISK. OF ALL THE TEAMS AT APPLE, THAT ONE HAS SOME OF THE ABSOLUTE BEST & BRIGHTEST WORKING ON IT. THERE ARE SOME ROUGH EDGES RIGHT NOW, BUT MOST CAN BE CIRCUMVENTED IN ONE WAY OR ANOTHER, PLUS YOU CAN ADOPT IT PIECEMEAL VIA UIHOSTINGCONTROLLER AND FRIENDS—IMPLEMENT A MODAL CONTROLLER'S CONTENT IN SWIFTUI, OR A SINGLE TAB IN A UITABVIEW, AND KEEP THE REST AS-IS.

Jim Dovey

SWIFT COACHING

https://forums.developer.apple.com/thread/123952

Page 53: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

INNOVATORS EARLY ADOPTERS EARLY MAJORITY LATE MAJORITY

Elixir Dart Ballerina

Swift Server-side Swift Go Rust Erlang Cloud-based IDE

Swift (for iOS) Python TypeScript C Updates

PHP Ruby JS

TRENDY W JĘZYKACH PROGRAMOWANIA Q3 2019 BY INFOQ

https://www.infoq.com/articles/programming-language-trends-2019/

Page 54: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

MOST LOVED ❤ JĘZYKI PROGRAMOWANIA BY STACKOVERFLOW

RUST

PYTHON

TYPESCRIPT

KOTLIN

WEBASSEMBLY

SWIFT

CLOJURE

0 22,5 45 67,5 90https://insights.stackoverflow.com/survey/2019

Page 55: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

SWIFT COACHING

CO ROBIĆ?

▸ Poranna lektura - ulubione blogi (na końcu prezentacji)

▸ Side projects, Hackathony, Blogi

▸ Podcasty i YouTuby

▸ Powolne, ciche wsparcie w obecnych projektach…

▸ … tam gdzie jest to możliwe.

▸ Niech ludzie, który mają czas, zrobią coś za Ciebie!

Page 56: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

DON’T PANIC

Page 57: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

#GIFTFORSHARE

Page 58: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

#GIFTFORSHARE

@JKORNAT▸ FOLLOW & SHARE

Page 59: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

TO JUŻ PRAWIE KONIEC…

Page 60: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

NA KONIEC

POLECANE BLOGI I PODCASTY▸ Swiftly.pl (https://swiftly.pl) %

▸ Swift (https://swift.org)

▸ Swift By Sundell (https://www.swiftbysundell.com)

▸ SwiftLee (https://www.avanderlee.com)

▸ Matteo Manfredini (https://matteomanferdini.com)

▸ iOS Dev Weekly (https://iosdevweekly.com)

▸ Ray Wenderlich (https://www.raywenderlich.com)

▸ Andrew Bancroft (https://www.andrewcbancroft.com)

▸ Inside iOS Dev (https://podcasts.apple.com/us/podcast/inside-ios-dev/id1231805301)

▸ More Than Just Code (https://podcasts.apple.com/ca/podcast/mtjc-podcast-podcast-about/id906987516?mt=2)

▸ The iPhreaks Show (https://podcasts.apple.com/podcast/the-iphreaks-show/id634022060?mt=2)

Page 61: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

NA KONIEC

ŹRÓDŁA▸ https://swiftly.pl/wwdc-2019/#swiftui - Wspomnienia z WWDC %

▸ https://twitter.com/johnsundell/status/1136610561632980993 - Pyramid of Doom - Twitter

▸ https://github.com/apple/swift-evolution/blob/master/proposals/0244-opaque-result-types.md - Propozycja zmiany do Swift - dodanie ”Some”

▸ https://www.swiftbysundell.com/articles/shifting-paradigms-in-swift/ - Zmiana paradygmatu na nowy (przejście)

▸ https://www.hackingwithswift.com/quick-start/swiftui/answering-the-big-question-should-you-learn-swiftui-uikit-or-both - Dlaczego jeszcze nie SwiftUI

▸ https://www.avanderlee.com/swift/combine/ - Wprowadzenie do Combine

▸ https://swiftly.pl/czym-jest-combine-framework/ - Czym jest Combine %

▸ https://matteomanferdini.com/wp-content/uploads/2019/10/The-5-most-common-misconceptions-about-SwiftUI-Matteo-Manferdini.pdf - Zmiany w architekturze po SwiftUI

▸ https://insights.stackoverflow.com/survey/2019 - Roczna ankieta Stack Overflow

▸ https://www.infoq.com/articles/programming-language-trends-2019/ - Trendy w językach programowania

▸ https://tylermcginnis.com/imperative-vs-declarative-programming/ - Deklaratywny sposób programowania

▸ https://medium.com/swlh/are-you-an-ios-x-expert-81eb9da3623a - Ciekawe spojrzenie na SwiftUI z perspektywy starego iOS'owego wyjadacza

▸ https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit - Praktyczny przykład łączenia SwiftUI z UIKit od samego Vendora

▸ https://mixpanel.com/trends/#report/ios_13 - Adaptacja użytkowników iOS 13 (updating)

▸ https://forums.developer.apple.com/thread/123952 - Wątek na forum Apple o SwiftUI

Page 62: JAKUB KORNATOWSKI SWIFTUI, CZYLI ZNOWU WSZYSTKO OD … · WYKORZYSTAĆ POTENCJAŁ: SWIFTUI & SWIFT 5 SwiftUI to framework w pełni wykorzystujący możliwości Swift 5, zbudowany,

TERAZ KONIEC!MOŻNA KLASKAĆ!