Blogi

Kysy meiltä: Mobiilikehitys ja React Native

Vitali Gusatinsky Bisnes Teknologia

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ä.

 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

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 puutt uvat edelleen. Ilman push-notifikaatio i ta 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

 
Tämä on aika yksityiskohtainen kysymys . Yksi Reactin kulmakivistä on välttää mahdollisimman paljon uudelleen renderöintiä memorisoinnilla tai jollain muulla should komponentilla jolloin style propit pysyy samana. 
 
hän vaikkuttaa myös miten teema on rakennettu: jos teema n providerin kautta tulee kaikki värit ja fontit yms. niin silloin voi olla vaikeaa välttää uudelleen renderöin ti . 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ält tää uudelleen renderöinti. 
 

Kysymys 3

 

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ä.