Mobil Apps – native eller web?

De fire siste årene har jeg jobbet som utvikler for mobile løsninger. Jeg begynte å snuse på mobilutvikling så fort den første iPhone kom på markedet i 2007 og prøvde meg raskt på løsninger som bygget på ActionScript og på JavaScript med HTML/CSS. Løsninger som ikke brukte native kode, men som genererte løsninger som tilsvarte en native løsning. Jeg valgte deretter å spesialisere meg på native løsninger da jeg mente det var den beste veien til virkelige gode løsninger og har siden fungert som en rendyrket iOS-utvikler med fokus på native apps utviklet i sitt naturlige miljø.

Årene har gått og «kampen» mellom native apps og web apps fortsetter i høyt tempo. Jeg tror vel på at det ikke finnes et enkelt svar på at den ene teknologien er bedre enn den andre, men det er løsningene som må definere hva slags teknologi som passer best inn. I dette innlegget skal jeg prøve å oppsummere litt om fordeler og ulemper på de ulike løsningene.

Web apps
Den mest åpenbare fordelen med å utvikle web-apps er at man utvikler til alle plattformer på tvers av operativsystem. Man utvikler en løsning som kan fungere like godt på iOS og Android som på Window Phone eller et annet OS. Utviklingskostnadene kan derfor reduseres vesentlig i forhold til når man skal utvikle egne løsninger for hvert enkelt OS. I tillegg kan man publisere løsningen raskt og enkelt, uten noen mellomledd som skal godkjenne eller vite noe om løsningen din, som f.eks AppStore eller Google Play. Oppdateringer av løsningene er like enkle. Det er heller ingen som skal ha en del av kaka dersom man selger løsningen sin (Apple tar f.eks. 30% av inntektene ved salg av en App via AppStore).
En annen fordel er at veldig mange utviklere kjenner HTML godt, så det finnes mange ressurser der ute og mye kunnskap. En typisk webapp kan også utvikles slik at den ser ut som en native app og kan «installeres» slik at den får et eget ikon på brukerens mobil. Riktignok på en litt mer klønete måte enn det brukerne er vant til via en app store.

Web apps har også sine utfordringer. En av hovedutfordringene er at det finnes mange ulike nettlesere på ulike OS, som alle har ulik støtte for HTML 5 features. Dette er en ganske stor utfordring i forhold til å lage en løsning som fungerer likt på tvers av alle nettlesere og OS. Dette bidrar også til at utviklingskostnadene kan øke i jakten på en løsning som fungerer like bra overalt. En annen ulempe web apps har er deres manglende støtte for offline-modus. I og med at teknologien baserer seg på web er det verre å lage en løsning som fungerer like godt uten nettilgang.

En mobil kan ha mange ulike features som en native app kan benytte fritt. Kamera, stedstjenester, kontaktliste, kompass og mye mye mer. En webapp kan også benytte seg av en del av disse features, men ikke i den grad en native app kan. Inntil videre vil det være en stor fordel for native apps å benytte mulighetene som ligger i en mobiltelefon. Man kan heller ikke stikke under en stol at en native app vil virke vesentlig raskere og gi en bedre brukeropplevelse enn en web app. Native apps har tilgang til de siste native APIene og utviklingsmiljøet vil være tilpasset the latest and greatest, mens dette ikke nødvendigvis er tilfellet for en web app. At ikke alle mobiltelefoner er optimalisert for HTML 5 er også en ulempe web apps må ta med seg. La meg føye til at det absolutt finnes web apps med gode brukeropplevelser og grensesnitt der ute. Forecast.io er en av dem som jeg syntes fungerer veldig fint.

Som nevnt er en av fordelene til web apps publiseringsmåten. Det er likevel ikke alle aspekt av publiseringsmåten som er så positiv. Mobilbrukere verden over er vant til å bruke AppStore og Google Play. Det er et sted de finner løsninger de ønsker. Det finnes rett og slett ingen sentral app store. Det gjør det vanskeligere for brukerne å finne og kjøpe web apps.

«I think the biggest mistake that we made, as a company, is betting to much on HTML5 as opposed to native… because it just wasn’t there…»
Mark Zuckerberg, September 2012

Det at Facebook gründer Zuckerberg gikk ut og innrømte at deres HTML 5 satsning var en fiasko og konverterte Facebook til en native app hjalp nok ikke på entuiasmen for web apps. LinkedIn har også gått fra en HTML basert app til en fullverdig native versjon. I Norge ser vi jo også at Finn.no satser mer og mer på native apps etter å ha prøvd ut mye på web og i starten mente at det var det eneste riktige.

Web apps har absolutt sin rett til å leve der ute og kommer nok til å fortsette å vokse. HTML 5 standarden er fortsatt work in progress og vil garantert kunne utfordre native løsninger mer og mer i fremtiden, men foreløpig vil jeg si at native apps har et veldig fordelaktig utgangspunkt.

Native apps
Så er native apps det beste alternativet? Nei, så enkelt er det absolutt ikke. Her snakker vi om å vekte hva som er viktig for den løsningen du ønsker deg og selvsagt i sammenheng med økonomi og tilgang til ressurser. Men native apps har sine fordeler. For det første kan man si at dagens mobilbrukere elsker apps. Det er på en måte de som definerer din mobiltelefon. BusinessInsider.com rapporterer at mobilbrukere bruker kun 20% av sin tid i en mobil nettleser. Det er apps som dominerer mobilen din.

Noen åpenbare fordeler har jeg allerde nevnt. En native app har tilgang til mobilens native API, tilgang til alle features og mobilens native brukergrensesnitt. Alt dette bidrar til at man enkelt kan utvikle og utnytte de mulighetene som ligger på mobilen og dermed få løsninger som er raske og gir en god flyt og brukeropplevelse. Og her ligger mye av en apps kraft, mye av nøkkelen til om en bruker fortsetter å bruke appen eller avinstallerer den umiddelbart. I tillegg kan man utnytte alle de mulighetene som dagens smarttelefoner gir oss på en best mulig måte (kamera, kompass, nfc, lyd, +mye mer). Native apps kan også fungere fint uten nettilgang. Selv om visse tjenester er avhengige av nettilgang så har ikke native apps det samme kravet til å være online som en web app har.

Distribusjonskanalen til native apps kan ses på som noe negativt. F.eks. på AppStore må man gjennom en godkjennelsesprosess før man får appen lansert eller oppdatert. Prosessen er låst og lite påvirkelig. Prosessen tar også tid som man må legge til i utviklingsløpet sitt. På den annen side kan man se på dette som en kvalitetskanal. Det fordrer utviklerne til å ta ekstra vare på brukerne sine. Det retter søkelyset mot at man skal lage løsninger som fungerer både teknisk og funksjonelt. Dessuten er det en enestående måte å distribuere løsningene sine på. Alle mobilbrukere vet hvor de finner apps og hvordan de skal installere dem. Alt er enkelt og tilrettelagt. Dette er en kjempefordel for plattformen de lanseres på. Oppdateringer av native apps skjer på samme måte og må gjennom samme prosess, så spesielt på iOS-plattformen er det vanskelig å gjøre raske opprettinger på løsninger som ligger ute. På den annen side så bidrar prosessen til at brukerne blir veldig klar over hva som skjer med løsningen. Man kan på den måten vise brukerne at man jobber kontinuerlig med forbedringer og at man hører på tilbakemeldinger fra brukerne, bevisstgjøre brukerne om hva som er nytt.

En siste fordel jeg ønsker å nevne for native apps er sikkerhet. Per dags dato har man muligheten til å bake inn mye høyere sikkerhet i en native app enn en web app.

Native apps har selvsagt sine ulemper også. Den mest sentrale ulempen ved å utvikle native apps er kostnaden knyttet til det. Det er dyrt å utvikle løsninger for flere plattformer. Dersom man skal utvikle en native app til iOS, Android og Windows er det sannsynligvis lite kode man kan gjenbruke på tvers av plattformene. Det blir dermed 3 mer eller mindre separate utviklingsløp. Oppdateringer og vedlikehold av appene blir da også mer omfattende. Det krever da også flere ressurser med ulik kompetanse for å gjennomføre slike prosjekter.

Publiseringsløsningen kan også ses som en ulempe. Jeg har allerede nevnt noen av ulempene ved å publisere gjennom AppStore, men personlig syntes jeg fordelene veier sterkere enn ulempene. For de som ønsker å ta betalt for sine apps er det selvsagt en ulempe at de respektive app stores skal ha sin kvote av inntektene. Hele 30% av inntektene faktisk, men samtidig vil man sannsynligvis nå en kundemasse av et helt annet nivå enn om man skulle publisert løsningen selv. Og det hadde nok ikke vært gratis det heller.

Det finnes også diverse verktøy som gjør at du kan utvikle på en plattform og distribuere til flere plattformer. Dette er en helt annen diskusjon som jeg kanskje vil se nærmere på senere, men foreløpig lar jeg den ligge.

Den gyldne middelvei
Så hva skal man velge? Det finnes ingen fasit, men jeg tror dersom man setter seg ned og avveier hva som er viktigst for den løsningen nettopp du skal lage, så finner man raskt ut hva som er best for deg. Har du en relativ enkel løsning som skal nå flest mulig brukere på flest mulig plattformer? Ja, da er sannsynligvis en web app løsningen for deg. Skal du lage en app med et moderne grensesnitt som gir den beste brukeropplevelsen, som utnytter potensiale i mobilen? Ja, da velger du en native løsning. Og sånn kan man holde på…

Og så finnes da den gyldne middelvei og den skal man ikke glemme. Lag en native app som utnytter og benytter HTML 5 sine fordeler inne i appen. Det er fullt mulig og kan gjøre at man finner løsninger hvor man kan utnytte begge plattformenes fordeler. Denne muligheten burde absolutt vurderes i alle tilfeller. Her har man gode muligheter til å lage fremtidsrettede apps som er enkle å vedlikeholde og distribuere til alle kanaler.

Avslutningsvis vil jeg vel bare si – tenk mobilt! Uansett hvilket valg av teknologi man tar så er det viktigste å tenke mobil i sine løsninger. Ikke vent, kast deg på bølgen nå :)

BusinessInsider har en god artikkel med illustrasjoner på mye av det jeg har beskrevet her. Anbefaler å ta en titt her: http://www.businessinsider.com/html5-vs-native-apps-for-mobile-2013-4?op=1

2 thoughts on “Mobil Apps – native eller web?

  1. Ole Fredrik says:

    Veldig godt oppsummert :) Skal trekke frem denne bloggposten som en referanse neste gang jeg havner i en native vs webapp diskusjon.

Leave a Reply