Fraktio

Kysy meiltä: Mobiilikehitys ja React Native

Vitali Gusatinsky

Fraktio

Teemu Virta

Fraktio
BisnesTeknologia

Mobiilikehitys on osa Fraktion arkea. Meiltä usein kysytään miten mobiilisovellusta kannattaisi lähteä rakentamaan ja mitä asioita mobiilikehityksessä tulisi ottaa huomioon. Päätimme järjestää kevyen kysely ja vastaus -tuokion. Kysyimme ihmisiltä somessa mitä he haluaisivat tietää mobiilikehityksestä ja varsinkin React Nativesta. Päiviä ennen kesälomien alkua katsoimme Fraktion kokeneiden kehittäjien kysymyksiinne vastauksia yhdessä Meetsin välityksellä.

Aatu ja Sanna komeili meidän IG-kyselyssä IG-kyselyn kuvassa Fraktion kehittäjät Aatu ja Sanna

Mikä on React Native?

Fraktiolla käytämme usein JavaScript-pohjaista Reactia rakentaessamme web-projekteja. React Native mahdollistaa mobiiliappien rakentamisen yhdellä koodipohjalla Androidille ja iOS:lle. Kehittäjälle React Nativeen siirtyminen ja käyttöönotto on erittäin suoraviivaista jos React on jo tuttua. React webbikehityksessä opitut ajattelutavat siirtyvät aika suoraan React Nativen avulla mobiiliappien maailmaan.

Mitkä on React Nativen hyödyt verrattuna Swiftiin, Flutteriin, tai muihin toteutustapoihin?

React ja React Nativelle löytyy paljon avointa lähdekoodia mitä voi ottaa suoraan omaan käyttöön. Tämä nopeuttaa kehitystyötä kun kaikkea ei tarvitse tehdä itse. Flutter varsinkin on vielä sen verran uusi että vastaavaa hyötyä ei ole vielä ehtinyt muodostua, tulevaisuudessa tilanne voi toki hyvinkin olla toinen.

React Nativessa parasta on tehokkuus ja nopeus. Usein niin mobiili- kuin webbiprojekteissa tavoitteena on saada mahdollisimman kustannustehokkaasti ja nopeasti aikaan ensimmäinen käyttäjille saatava versio (MVP). Kokeilut ja kokonaisuudet syntyvät nopeasti ja suoraviivaisesti sillä yhden koodipohjan avulla mobiilisovellus on käytettävissä niin Androidilla kuin iOS:lla.

Jos React on jo tuttu niin hyppy React Nativeen tapahtuu nopeasti. Parissa päivässä voi helposti jo tehdä tuottavaa koodia. Siirtyminen kokonaan uuteen ajattelutapaan ja teknologiaan vie huomattavasti enemmän aikaa.

 

Mitä onnistunut mobiiliprojekti vaatii?

Mobiilisovellusten markkinat ovat erittäin ruuhkautuneet. Valmis appi harvoin löytää käyttäjän ilman hyvää markkinointia.

Mobiilisovellusten käyttöaika on huomattavasti matalampi kuin webissä, ellei kyseessä ole some- tai uutispalvelu. Jos käyttäjää ei aktivoi käyttämään sovellusta se voi helposti jäädä inaktiiviseksi ja lopuksi tulla poistetuksi.

On tärkeä että appi toimii nopeasti, eikä vain suorituskyvyn näkökulmasta. Asennus, käynnistyminen ja käyttö täytyy olla mietitty ja mahdollisimman kitkatonta. Näiden asioiden kehittäminen voi usein viedä enemmän aikaa kuin mitä aluksi voisi kuvitella.

Mobiilisovelluksissa sujuvan ja nopean käyttökokemuksen lisäksi silmäkarkki kuten animaatiot ja selkeästi mietitty käyttöliittymä alkavat olla jo vaatimuksia sille että mobiilisovelluksien tasolle jotta niitä halutaan palata käyttämään kerta toisensa jälkeen.

Yksi hyvä asia mikä on hyvä pitää mielessä on että iOS ja Android julkaisualustat ovat erillisiä. Hyväksyntäprosessi ja ajat voivat olla tosi erilaiset. Vaikka appi olisi valmis niin on tärkeää huomioida että julkaisu ei tapahdu hetkessä.

 

Kysymys 1
Millä kriteereillä valitsette tällä hetkellä natiivin vs. Esimerkiksi PWA? Ainoastaan kun vaatimuksissa on vaikkapa NFC tai muuta tiukempaa alustaintegraatiota/suorituskykyvaatimuksia vai koetteko että natiiveilla on yhä paikkansa yksinkertaisemmissakin sovelluksissa?

PWA ei ole mielestämme tuotantovalmiissa kunnossa, verrattuna esim. React Nativeen. Varsinkin iOS -alustalla tuki on aluillaan: push-notifikaatiot, asennusbannerit ja monet muut PWA perusominaisuudet puuttuvat edelleen. Ilman push-notifikaatioita käyttäjän aktivointi voi olla erittäin alhaista ja tämän myötä iso osa hyödyistä mitä appista saa.
Apple suuntaa käyttäjiä kohti heidän omaa App Storea ja markkinoi sitä ainoana tapana levittää sovelluksia iOS-laitteille. PWA:ta voi käyttää erinomaisesti Android- ja työpöytäympäristöissä joten on hyvä harkita ketkä ovat palvelun käyttäjiä valitakseen sopivimman ratkaisun.

Kysymys 2

Moro! Kiinnostais tietää miten hoidatte teemoittelun. Monissa verkossa löytyvistä opastuksista teemat annetaan sovellukselle providerin kautta ja otetaan komponenteissa käyttöön hookeilla. Tällöin teemassa olevat värit jne. joudutaan antamaan komponenteille inline-tyylinä. Tämä kuitenkin vaikuttaa negatiivisesti suorituskykyyn React Nativen renderöidessä kyseisiä komponentteja "turhaan" uudelleen, koska viittaus style-proppiin vaihtuu inline-tyylejä käytettäessä jokaisella renderöinnillä. Oletan, että optimaalinen tapa olisi saada teema suoraan React Nativen StyleSheettien käyttöön, mutta onko tämä mahdollista?

Tämä on aika yksityiskohtainen kysymys. Yksi Reactin kulmakivistä on välttää mahdollisimman paljon uudelleenrenderöintiä memorisoinnilla tai jollain muulla should komponentilla jolloin style propit pysyy samana. 
hän vaikkuttaa myös miten teema on rakennettu: jos teeman providerin kautta tulee kaikki värit ja fontit yms. niin silloin voi olla vaikeaa välttää uudelleen renderöinti. Jos providerilta tulee vain teeman tunniste, kuten light tai dark, niin silloin voit käyttää style sheetteja missä teemaa oikeasti käytetään ja tällöin voidaan välttää uudelleen renderöinti. 

Kysymys 3

Kuumimmat tekit, joita Fraktiolaiset käyttää / haluaisi alkaa käyttää? Onko Go ja Rust viemässä mukanaan vai vetääkö JVM kielet kuten Clojure ja Kotlin puoleensa enemmän?

Me koemme että hypejuna on eniten Go:n ja Rust:in puolella, josta Rust saa ehkä eniten mainintaa. Flutter tulee myös vastaan mutta se ehkä tarvitsisi enemmän huomiota. Kotlinia ei pahemmin ikinä mainita. Fraktiolla meillä on Clojure ja Scala kokemusta mutta Rust on se joka herättää eniten kiinnostusta.

Olemme edelleen React Nativen kelkassa koska JavaScript/TypeScript maailma on sen verran kehittynyttä ja työkalut viimeisen päälle että emme näe kovin nopeasti kelkan kääntyvän pois React/JS maailmasta.

 

Mitkä olisi jotain hyviä resursseja johon tutustua jos mobiilikehitys kiinnostaa?

Expo.io saat yhdellä kommennolla projektin pystyyn ja jos React on entuudesta tuttu niin pääset nopeasti rakentamaan sovelluksia. Järjestämme React Native kursseja jossa voit ohjatusti oppia tekemään sovelluksia alusta julkaisuvalmiiksi.

Jos mobiilikehitys kiinnostaa niin suosittelemme katsomaan uusin silmin omaa puhelimen käyttöä: kuinka sovellukset eroavat web-versioistaan, miten esimerkiksi haptiset värinät muovaavat käyttökokemusta?

Kiitokset kaikille kysymyksistä! Jos jotain jäi mietityttämään niin laittakaa kommentteihin tai someen #KysyFraktiolta tägäyksellä.

Muita artikkeleita

Fraktion koronakysely
Blogi
Teimme kyselyn ihmisten kokemuksista pandemian aikana

Kiinnostuitko?

Petteri Hellgren Fraktio

Petteri Hellgren

Chief Growth Officer

045 279 3970
petteri.hellgren@fraktio.fi
Tuike Järvi

Tuike Järvi

Chief Experience Officer

040 059 2123
tuike.jarvi@fraktio.fi
Joonas Pajunen

Joonas Pajunen

Toimitusjohtaja

050 382 3488
joonas.pajunen@fraktio.fi
Käytämme evästeitä sivun kehittämiseen.Lue lisää