Teddy lager apper i Swift: – Nå blir det enklere å lære

Vi fikk en dyktig Swift-utvikler til å svare på alt vi lurte på om Apples Swift-programmeringsspråk.

Teddy Falsen Hiis er mobilutvikler hos Bouvet og koder i blant annet Swift. 📸: Apple / Bouvet
Teddy Falsen Hiis er mobilutvikler hos Bouvet og koder i blant annet Swift. 📸: Apple / Bouvet Vis mer

Utviklere blir neppe noensinne enige om hvorvidt det er lurest å lage mobilapplikasjoner som kryssplattform-apper i for eksempel React Native eller Flutter, eller om man heller bør lage native apper.

Uansett – hvis du først har bestemt deg for å lage en native mobilapp, er det programmeringsspråket Kotlin som gjelder for Android og Swift for Apple-dingser med iOS.

Teddy Falsen Hiis jobber som mobilutvikler hos Bouvet, og koder til daglig apper i Swift. Vi spurte henne om alt (eller i hvert fall noe) av det vi lurer på om Swift. Så slipper du.

– Teddy, kan du kort forklare hva Swift er for en fersk utvikler?

– Swift er et programmeringsspråk brukt for å utvikle applikasjoner på Apples plattform.

– Språket er open source og ble utviklet av Apple, som lanserte det på WWDC i 2014.

– Mest er nok Swift kjent som foretrukket språk til å skrive apper til iPhone (iOS) og Apple Watch (watchOS), men Mac (macOS) og Apple TV (tvOS) støttes også.

– Hvorfor skal jeg bruke Swift, og ikke en kryssplattformløsning?

– Mange vil nok påstå at dette er en artikkel i seg selv. Men mitt svar her er vel at man enkelt og greit må la bestillingen styre. Og ikke minst framtidsutsiktene for appen man lager.

«Det er interessant å se hvordan Android-utvikling med Jetpack Compose og Swift med SwiftUI blir likere hverandre og man enklere kan samarbeide innad i et team.»

– Med SwiftUI har antall kodelinjer blitt færre og læringskurven flatet noe ut. Det er interessant også å se hvordan Android-utvikling med Jetpack Compose og Swift med SwiftUI blir likere hverandre og man enklere kan samarbeide innad i et team, på tross av å forholde seg til hver sin plattform.

– I tilfellene der appen eksempelvis er et arbeidsverktøy møter vi ofte behov som krever native utvikling. Det kan gjelde sikkerhet, kobling mot logistikk eller krav til native funksjonalitet, som "gestures for accessibility", "development kits" som eksempelvis watchKit, bakgrunnshåndtering, og så videre.

– Når det er sagt er det ikke alle apper som burde være native. Det får være opp til den enkelte utvikleren å vurdere appens riktige retning.

– Apple mener Swift gjør det enklere å skrive sikker kode?

– Jeg er ikke helt sikker på hva Apple selv legger i det utsagnet. Men for meg handler det om elementer som eksempelvis "strong typing", "string safety" og "optionals".

– I tillegg er det relativt enkelt å kjøre tester for både UI og logikk, samt analysere kodebasen. Noe som igjen kan være med på produsere sikker kode.

– Hva bruker dere Swift til der du jobber?

– Vi bruker Swift i native app-prosjekter der vi utvikler apper mot iOS og watchOS.

– I all hovedsak er det SwiftUI det går i. Dette kan enten innebære at vi har vært inne og migrert kode fra UiKit til SwiftUI, eller at vi har utviklet nye apper. Vår erfaring er at disse to rammeverkene i visse tilfeller lever side om side, med utfordringene som kan komme med det.

– Det blir gøy å se hva som ligger av AR/VR-muligheter i AirPods og Apple Watch fremover. Det kommer mest sannsynlig et VR/AR-headset i juni på WWDC 2023, men allerede nå er det tilgjengelige bibliotek for å bruke hodebevegelser med AirPods for eksempel, og håndbevegelser for å styre apper i klokken. Dette kan ha relevanse i samfunnsbyggende prosjekter vi har i Bouvet, eksempelvis innen logistikk og helsesektoren.

– Hvor enkelt er det å komme igang med Swift?

– Det er endring på gang i Swift-verden når det kommer til UI. En endring bort fra UIKit og mot SwiftUI.

«Dersom man eksempelvis er en webutvikler kan dette skiftet oppleves å forenkle læringskurven.»

– Dersom man eksempelvis er en webutvikler kan dette skiftet oppleves å forenkle læringskurven for å komme i gang med Swift, nettopp fordi man ikke lenger trenger å forholde seg til "pains" som autolayout og storyboards.

– Med SwiftUI kan man "deklarere" sine views direkte og på den måten blir koden mer relaterbart til eksempelvis React og JavaScript.

– Har du tips til hvordan man kan lære Swift?

Hacking With Swift med den glade briten Paul Hudson i spissen er et godt sted å starte dersom man er helt fersk. Ut over det er Apples egen Swift-dokumentasjon pedagogisk og oppdatert. Det gjelder både for å komme i gang, og på et mer avansert nivå.

Stackoverflow er jo alltid en vinner, og Udemy, Coursera, og RayWenderlich har ulike kurs på ulike nivåer. Apple har også lansert noe de kaller Playgrounds. Jeg har selv ikke testet, men så vidt jeg vet er dette en Mac/iPad-programvare man kan bruke til å “leke og lære” Swift.

– Er det noe mer du vil fortelle kode24-leserne om Swift?

– Som nevnt er Swift et relativt enkelt språk å komme i gang med, særlig med SwiftUI som nå entrer banen for framtiden. Når det er sagt er SwiftUI fortsatt ferskt og det kan virke litt som om Apple ikke helt har våget å lage retningslinjer for beste praksis.

– Et eksempel på dette er arkitektur der det tidligere har vært en slags gjenganger at man brukte MVVM, men i dag er det mange som velger å gå bort ifra denne strukturen – nettopp fordi det blir mye overflødig kode når alle views skal ha sine egne viewmodeller.

«Det er ikke slik at Swift utelukkende kan brukes til å utvikle applikasjoner mot Apples plattform.»

– Det er ikke slik at Swift utelukkende kan brukes til å utvikle applikasjoner mot Apples plattform, det brukes også for eksempel som serverside-språk og til maskinlæring.

–Det innebærer at Swift kommer med noen andre, ofte litt mer utfordrende oppgaver som omhandler infrastruktur. Selv om vi med SwiftUI nå har Previews og med det kan forkorte tiden det tar å programmere, samt at vi kan forenkle distribusjonen direkte fra Xcode med Xcode Cloud, har vi allikevel flere potensielle hickups sammenlignet med web for eksempel.

– Jeg pleier å si at Xcode-infrastruktur er et fag i seg selv. Kompatibilitet, avhengigheter og distribusjon er nøkkelord her – og dette er noe vi kan bli flinke på, men sjeldent mestre.