Kolme kulmaa ohjelmistokehitykseen

Tässä jutussa kolme kehittäjäämme Ilia, Joona ja Emil kertovat mobiilidevauksesta omasta näkökulmastaan. 

Ilia on kehittänyt mobiilisovelluksia Flutterilla, Emil taas on tehnyt natiivisovelluksia iOS:lle ja Joona on työskennellyt React Nativen parissa. Pyysimme näitä asiantuntijoita kertomaan käyttämästään teknologiasta ja yleisesti mobiilisovelluskehityksestä.  

Ilia & Flutter

Kuinka paljon ja kauan olet kehittänyt mobiilisovelluksia, ja paljonko siitä juuri Flutterilla? 
Minulla on 2,5 vuotta kokemusta mobiilikehityksestä ja 2 vuotta niistä olen tehnyt töitä Flutterin parissa. Aloitin 2 vuotta sitten Sohovalla harjoittelijana ja olen koko sen ajan tehnyt jotain Flutterilla.  

Miten päädyit kehittämään juuri Flutterilla? 
Kun tulin haastatteluun joulukuussa 2019, toimitusjohtajamme Jari kysyi minulta, onko Flutter tuttu. Vastasin, että ei ole. Silloin Jari ehdotti, että voisin tutustua Flutteriin ja siitä se sitten lähti.   

Mikä sinusta on Flutterin etu verrattuna Reactiin tai natiiviin?
Flutterilla pystyy tekemään hienon UI:n ja Flutter onkin alkujaan tehty juuri sitä varten. Flutter on varsin kustannustehokas verrattuna natiiviin, eli sovelluksia pystytään toteuttamaan pienemmillä työmäärillä. Teknisistä eduista voidaan nostaa esiin esimerkiksi että renderöinti on aina 60FPS, ja koodin ylläpito on helppoa.

Milloin sinusta kannattaa valita Flutter?
Jos haluaa saada nopealla aikataululla aikaiseksi MVP:n (minimum viable product), eli kun aikataulu tai työmäärä painaa vaakakupissa. Flutter tarjoaa mahdollisuuden tehdä sovelluksia myös web-alustalle. Yksi haaste tämän osalta on, että Flutterilla ei ole ratkaisua hakukoneoptimointiin. Käytännössä siis minkä tahansa sovelluksen voi tehdä Flutterilla, paitsi siinä tapauksessa, jos haluaa sovelluksesta erityisen suorituskykyisen. 

Milloin ehkä ei kannata valita Flutteria? 
Jos haluaa suorituskykyisen sovelluksen, silloin natiivi on Flutteria parempi vaihtoehto. Esimerkiksi näissä tapauksissa Flutteria ei kannata valita: AR/VR -sovellus, pelisovellukset, IoT-sovellukset.

Joona & React Native

Kuinka paljon ja kauan olet kehittänyt mobiilisovelluksia, ja paljonko siitä juuri React Nativella? 
Olen tehnyt uudelleen olemassa olevaa sovellusta 2-3 vuotta. Lisäksi olen tehnyt yhden from scratchin, eli sovelluksen luonnoksesta. Flutterilla olen ainoastaan hakenut dataa rajapinnasta ja näyttänyt sen puhelimen ruudulla. 

Miten päädyit kehittämään juuri React Nativella? 
Päädyin kehittämään React Nativea Javascriptin ja niin sanotusti “Reactin opeilla”. React Nativella voi tehdä natiiveja mobiilisovelluksia, joissa sen natiivin osion hoitaa Expo-niminen kehys automaattisesti. 

Mikä sinusta on Reactin etu verrattuna Flutteriin tai natiiviin? 
Reactissa on sama ohjelmointikieli kuin useissa full stack toteutuksissa: JavaScript. Kielellä voi tehdä rajapintoja, hallinnoida tietokantoja ja sillä voi tehdä web/mobiilikäyttöliittymiä. JavaScript-tulkki kännykässä ei toki ole yhtä nopea kuin natiivi sovellus, mutta nykyisin lähellä sitä, kiitos Googlen tulkin parantelujen. 

Milloin sinusta kannattaa valita React Native? 
Mielestäni silloin, kun yrityksessä on pohjalla React-osaamista ja on tarve saada sillä osaamisella ja samalla koodilla sekä iOS- että Android-sovellus. Tämä on Flutterissakin sama etu, mutta Javascript -osaaminen on hyvä syy koodata Expolla (React Native). 

Milloin ehkä ei kannata valita React Nativea? 
Kun halutaan alusta alkaen oppia mobiiliteknologioita  ja mobiilisovellus on myöskin se päätuote. 

Emil & Native IOS

Kuinka paljon ja kauan olet kehittänyt mobiilisovelluksia, ja paljonko siitä juuri natiivina? 
Olen ollut 3 vuotta mobiilikehittäjänä ja kaiken aikaa olen tehnyt natiivia. Pääasiassa iOS:n kanssa, mutta vuoden verran työskentelin Androidin kanssa. 

Miten päädyit kehittämään juuri natiivina? 
Tein ominaisuuden Android-kouluprojektiin, jonka ansiosta sain työtarjouksen aloittaa vastaavanlaisen ominaisuuden kehittämisen natiiviin iOS-sovellukseen. Sovellusta oltiin jo kehitetty, mikä toimi hyvänä pohjana oppimiselle ja jatkoin siitä. 

Mikä sinusta on natiivin etu verrattuna Flutteriin tai Reactiin? 
Natiivilla kehityksellä voit saada kaiken irti Applen ja Androidin kehitystyökaluista. Sovelluksien koko on omasta kokemuksesta paljon pienempi ja sovelluksen suorituskyky on yleensä parempi. 

Milloin sinusta kannattaa valita natiivi? 
Silloin, kun halutaan sovellus, joka on pienikokoinen ja suorituskyvyltään tehokas. Erityisesti silloin, kun ominaisuudet, joita halutaan, löytyvät vain natiivilta ratkaisulta. 

Milloin ehkä ei kannata valita natiivia? 
Natiivia ei kannata valita siinä tapauksessa, kun kustannukset halutaan pitää matalina. React/Flutter pystyy toteuttamaan kaikki halutut ominaisuudet sovellukselle.

Yhteenveto

Miten mobiilikehitys meillä on muuttunut viime vuosina? 

Mobiilikehitystä on tähän asti tehty meillä React Nativella ja Flutterilla. React Nativen kehyksenä on toiminut ensin Facebookin itse toimittama Metro (käytetty Seepsula Pro -sovelluksessa), josta se ja oma tuotteemme on siirretty Expo-nimiseen kehykseen.  

Kehyksen pointti on toimittaa valmis natiivi mobiilisovelluspino, jonka päälle toimitamme vain oman JavaScript-sovelluksen, jota tulkata. Sohovalla on tehty esimerkiksi Simerock-sovellus Flutterilla ja Endurance Kainuu React Nativella (Metro). 

Viime vuosina React Nativesta ja jopa natiiveista mobiilisovellusprojekteista on siirrytty suosimaan Googlen Flutteria. Yksi argumentti täysin natiivien, Androidille ja iOSille tehtävien sovellusten, puolesta on niiden optimoitu tallennustila, jota ne käyttävät puhelimissa, mutta tilaa löytyy ja ajansäästö on nyt arvokkaampaa. 

Millaiselta mobiilisovelluksen tulevaisuus vaikuttaa?

Hybridisovellukset ovat 2020-luvun trendi. Hybridisovelluksissa mennään valmiiksi tehdyn natiivin kehyksen puitteilla, oli se sitten Expo tai Flutter. Ohjelmistofirma ei silloin murehdi syvimmästä päädystä notifikaatiolupia ja mitä API-kutsuja puhelimen käyttöjärjestelmään tehdään, vaan huolehtii vain sen päälle tehtävästä varsinaisesta JavaScript/Dart sovelluksesta. 

Tulevia juttuja mobiilikehityksessä on kasvava painotus käyttöjärjestelmän “natiiviin lookkiin”. Tässä molemmat Google & Apple ovat panostaneet viime vuosina. Google lähestyy asiaa parantamalla Flutterin ulkoasua uudemman Material You designin mukaiseksi ja myös tukemalla Applen Cuppertino-ulkoasua. Apple parantelee oman ekosysteemin kykyä tehdä iOS-sovelluksia (Swift UI, Swift-kieli, XCoden parannukset) vähemmän monialustaisuus mielessä. 

Artikkelin ovat kirjoittaneet Ilia, Joona ja Emil

Lähteitä

Material Youhttps://material.io/blog/announcing-material-you 
Flutterhttps://flutter.dev/ 
Expo, React Native, https://expo.dev/ 
SwiftUIhttps://developer.apple.com/tutorials/swiftui 
XCodehttps://developer.apple.com/xcode/ 
BLoChttps://bloclibrary.dev/#/