Skip to content

Kolme kulmaa mobiilikehitykseen

rodion-kutsaev-0VGG7cqTwCo-unsplash

Sohovalla kehitetään myös mobiilisovelluksia. Mobiilikehityksessä on käytössä erilaisia alustoja sekä teknologioita ja Sohovalla työskentelevät kolme mobiilikehittäjää ovat kukin tottuneet eri malliin.

Nyt kehittäjämme 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 kehittäjiä 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, Jari kysyi minulta, onko Flutter tuttu. Vastasin, että ei ole. Silloin Jari ehdotti, että voisin joululoman aikana 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 
  • Kustannustehokas verrattuna natiiviin 
  • Renderöinti aina 60FPS  
  • Koodin ylläpito 

Milloin sinusta kannattaa valita Flutter? 

  • Jos haluaa nopealla aikataululla MVP (model-view-presente) pystyyn 
  • Haluaa sovelluksen jatkossa WEBille (ilman SEO) 
  • Käytännössä minkä tahansa sovelluksen voi tehdä Flutterilla, paitsi siinä tapauksessa, jos haluaa sovelluksesta erittäin 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: Natiivi 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.

mobiilikehitys_blogi

Miten mobiilikehitystä on tähän asti tehty ja miten se 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 Agenda Go 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. 

2020-luvun trendi ja mobiilikehityksen tulevat uudet, kiinnostavat jutut

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. 

Mitkä ovat mobiilikehityksen kiinnostavimman uudet ja tulevat jutut? 

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

Flutter on sekä natiivi pino että kirjasto, jonka päälle kirjoitetaan Dart-ohjelmointikielellä. Flutterin ohjeissa on muista kehyksistä ja toteutuksista tuleville kuvaus, miten lähestyä Flutteria. Esimerkiksi Android-kehittäjälle on tällainen ohje: https://docs.flutter.dev/get-started/flutter-for/android-devs 

Entä natiivisovellusten osalta?

Natiiveista sovelluksista on hankala kertoa enempää kuin se, mitä niistä olemme tässä  sivussa maininneet. Mielestämme natiivi ei ole yhdellekään firmalle hyöty- tai haittamielessä kannattavaa.  

Flutter state management ja testaus

Aiemmin käytettiin Provider + ChangeNotifier. Se sopii hyvin pienempiin sovelluksiin.  
Nyt käytetään Business logic component eli BLoC.  

  • Parempi soveltuu isompiin kokonaisuksiin kuin Provider + ChangeNotifier.  
  • Helpompi testata 
  • Hyvä (paras) dokumentaatio 

Unit-testejä käytetään business-logic:n oikean toiminnallisuuden tarkistamiseksi. Jatkossa haluan käyttää integraatio- sekä widget-testejä, jotta voi nopeasti varmistaa, että uudet ominaisuudet eivät riko vanhoja.

Kirjoittajat

Ilia, Joona ja Emil
Sohovan mobiilikehittäjät

Lähteet

Material You, https://material.io/blog/announcing-material-you 
Flutter, https://flutter.dev/ 
Expo, React Native, https://expo.dev/ 
SwiftUI, https://developer.apple.com/tutorials/swiftui 
XCode, https://developer.apple.com/xcode/ 
BLoC, https://bloclibrary.dev/#/