Alustariippumaton mobiilikehitys, kokemuksia Flutterista

FrostBit ohjelmistolaboratorio on viime vuosina kiinnostuneena seurannut Googlen tuottamaa Flutter-alustaa, sekä ottanut sitä myös aktiivisesti käyttöön mobiilisovellusten toteuttamisen tueksi. Tarve tehokkaalle alustariippumattomalle teknologialle on ollut suuri, sillä kahden erillisen natiivisovelluksen (Android + iOS) tuottaminen erikseen ei ole ollut tarpeeksi kustannustehokasta, oli kyse sitten kehitys- tai ylläpitovaiheesta.

Natiivisovellusten vahvuus on niiden täysi kustomoitavuus sekä mahdollisuus hyödyntää kaikkia puhelimen ominaisuuksia helposti, mutta niiden heikkous on kehitysprosessin tarvitsemassa henkilöstöresurssin määrässä, sekä nopeasti kehittyvän laitekannan tuoman jatkuvan ylläpidon tuomissa haasteissa. FrostBitin väki on aiemmin kokeillut mm. PhoneGap-alustaa alustariippumattomien sovellusten tuottamisessa, mutta sen tuomat rajoitteet todettiin liian haastaviksi FrostBitin teknisiin tarpeisiin nähden.

Vuonna 2017 Google julkaisi ensimmäisen version Flutterista, ja se herätti välittömästi suurta mielenkiintoa FrostBitin väessä. Koska FrostBitin projektikalenterissa oli silloin kaksi suurempaa mobiilisovellusprojektia tiedossa, päätimme rohkeasti kokeilla Flutteria molemmissa projekteissa natiivisovellusten tuomien ongelmien välttämiseksi.

https://en.m.wikipedia.org/wiki/File:Google-flutter-logo.png

Kun kuljemme nyt kohti vuotta 2021, olemme alustavasti erittäin positiivisesti yllättyneitä ja optimististia Flutterin suhteen alustariippumattomien sovellusten tuottamisessa, ja aiomme hyödyntää sitä myös tulevissa hankkeissa mahdollisimman paljon. Mutta koska mikään maailmassa ei ole täydellistä, on myös Flutterissa vahvuuksien lisäksi myös joitain heikkouksia. Olemme tämän vuoksi FrostBitin kesken keränneet kokemuksiamme Flutterin parissa viimeiseltä kahdelta vuodelta, ja tulleet alla olevaan lopputulokseen.

Flutterin hyvät puolet:

  • Kehittäminen on helpompaa verrattuna esimerkiksi PhoneGapiin tai Xamariniin, koska Flutter tarvitsee vähemmän alustakohtaista koodia
  • Flutter on alustariippumaton; sillä on mahdollista kehittää sovelluksia yhtä aikaa Androidille, iOS:lle, Windowsille, Linuxille, MacOS:lle, web ym.
  • Flutterilla sovellusten kehittäminen on nopeaa
  • Flutter mahdollistaa monimutkaisten ja kustomoitujen UI-komponenttien rakentamisen, sillä kaikkeen ulkoasuun liittyvän voi vaikuttaa
  • Flutterissa on hyvä dokumentaatio ja paljon esimerkkejä saatavilla. Myös Flutterin käyttäjäkunta kasvaa nopeasti
  • Flutterin taustalla on erittäin suorituskykyinen 2D-käyttöliittymämoottori (sky_engine), joka toimii hyvin tarvittaessa myös 120Hz –näytöillä
  • Flutterin käyttämä Dart-ohjelmointikieli on helposti opittava olio-ohjelmointikieli
  • Google on suuri organisaatio, jolla on varaa kehittää Flutteria tehokkaasti. Google myös itse käyttää Flutteria omassa toiminnassaan
  • Flutter-koodi kääntyy lopulta natiiviksi sovelluskoodiksi eri laitteilla
  • Flutterille on saatavilla hyvät kehitystyökalut mm. Android Studiolle ja Visual Studio Codelle
  • Flutter kehittyy nopeasti

Flutterin heikkoudet:

  • Monimutkaisten ulkoasujen tekeminen on joskus erittäin työlästä
  • Flutterin nopea kehittyminen tuo paljon muutoksia lyhyessä ajassa itse alustaan, mikä saattaa vaikeuttaa isojen projektien toteuttamista
  • Dart-ohjelmointikieli ja Flutter ovat vielä melko uusia, minkä vuoksi ne tulevat myöskin kehittymään jatkuvasti. Tämä ongelma tosin tasaantuu ajan myötä.
  • Flutterin parhaat ominaisuudet ovat vielä kehitysvaiheessa (null safety, web- ja työpöytäsovellustuki jne.)
  • Jos haluttuun alustakohtaiseen (Android tai iOS) ominaisuuteen ei Flutterissa löydy valmista liitännäistä, vaaditaan silloin alustakohtaista ohjelmointia
  • Flutterin nopeasti kasvanut suosio ja helppo ohjelmoitavuus on tuonut sen, että tarjolla on runsaasti kolmannen osapuolen liitännäisiä, joiden laadussa voi olla puutteita
  • Flutterin nuoren iän vuoksi ns. parhaat käytänteet ja arkkitehtuurit eivät ole vielä muodostuneet

Keskimäärin kuitenkin Flutterissa on huomattavasti enemmän hyviä kuin huonoja puolia, joista suurin osa liittyy lähinnä Flutterin nuoreen ikään tekniikkana.

Jos tarkastelemme lisäksi vielä joitain aiheeseen liittyviä internet-artikkeleita, voimme todeta että kokemuksemme ovat monessa asiassa samoilla linjoilla muiden maailmalla olevien kehittäjien näkökulmien kanssa (ks. Rozwadowski 2020;  Costa 2019; Sannacode 2020;  Powalowski 2019). Artikkeleiden mukaan Flutterin heikkouksia ovat lisäksi suuri mobiilisovelluksen koko, sekä tietyt kompromissit mobiilisovelluksen ulkoasussa, jotka liittyvät Androidin ja iOS:n virallisiin suosituksiin ulkoasusta (esim. material design). Emme kuitenkaan ole FrostBitin toiminnassa kokeneet näitä liian ongelmalliseksi nykyisten mobiiliprojektiemme osalta.

Olemme hyödyntäneet Flutteria kahdessa isossa hankkeessa, joista toinen on Arktori (Arktinen kehittyvä rehtori) ja toinen DWELL. Arktori-hankkeessa olemme tuottamassa mobiilisovellusta, jonka avulla pohjoisen alueen oppilaitosten rehtorit voivat verkostoitua, kehittää osaamistaan sekä mentoroida toisiaan omassa työssään. DWELL-hankkeessa sen sijaan olemme tuottamassa yhteisöllisen asumisen mobiilisovellusta, jonka pilotointikohteena on Rovaniemellä sijaitseva DAS Kelo –opiskelija-asuntola. Molempien projektien osalta olemme olleet tyytyväisiä Flutterin tarjoamiin mahdollisuuksien mobiilisovellusten kehittämisessä.

Alla kuvakaappauksia Arktori- ja DWELL-mobiilisovelluksista.

Arktori-mobiilisovellus (Flutter), kehitysversio joulukuu 2020
Arktori-mobiilisovellus (Flutter), kehitysversio joulukuu 2020
DWELL-mobiilisovellus (Flutter), kehitysversio joulukuu 2020
DWELL-mobiilisovellus (Flutter), kehitysversio joulukuu 2020

Flutter on osoittanut voimansa alustariippumattomien mobiilisovellusten tuottamisessa, mutta tulevaisuudessa jää vielä nähtäväksi, kuinka taipuisa ja tehokas Flutter tulee olemaan web- ja työpöytäsovellusten maailmassa. Jos Flutter tulee olemaan aidosti kilpailukykyinen myös mobiilisovellusten ulkopuolella, on täysin realistinen vaihtoehto keskittyä sovelluskehittäjän näkökulmasta pääsääntöisesti Flutteriin, jota tuetaan muilla tekniikoilla vain niiltä osin, joihin Flutter ei tehokkaasti taitu.

Emme ole vielä FrostBitissä aivan varmoja onko Flutter vielä kaikenkattavan tehokas tekninen alusta kaikenlaisiin tarpeisiin, mutta kukaan ei voi väittää etteikö se sitä tosissaan yrittäisi olla. Joka tapauksessa, tulemme seuraamaan Flutterin kehitystä jatkossakin erityisen suurella mielenkiinnolla ja olemme aina valmiita kokeilemaan Flutteria uusiin käyttötarkoituksiin!


Kirjoittanut Tuomas Valtanen | 11/12/2020

Viitatut Flutter-artikkelit:
https://www.futuremind.com/blog/pros-cons-flutter-mobile-development
https://medium.com/flutter-community/pros-and-cons-of-using-flutter-1f5d1269a4b9
https://medium.com/@sannacode/advantages-and-disadvantages-of-using-flutter-543bac7ced76
https://10clouds.com/blog/flutter-business-pros-and-cons

Tietoa Arktori-hankkeesta:
https://www.lapinamk.fi/fi/Yrityksille-ja-yhteisoille/Lapin-AMKin-hankkeet?RepoProject=521710

Tietoa DWELL-hankkeesta:
https://www.lapinamk.fi/fi/Yrityksille-ja-yhteisoille/Lapin-AMKin-hankkeet?RepoProject=521834