2.6.2018

Miten valita oikea teknologia

Mobiilisovelluksia suunnitellessa voi olla vaikea päättää, mitä teknologiaa olisi parasta käyttää. Onko tekeillä progressiivinen web-sovellus (PWA) vai natiivisovellus? Mille alustoille sovellus on tarkoitettu ja mitä valmiuksia se vaatii?

Natiivisovellukset

Vaikka web-sovellusten ominaisuudet ovat viime aikoina kehittyneet, on vielä paljon sellaista, mihin vaaditaan natiivisovellus.

Android / iOS

Kun tavoitteena on paras suorituskyky ja hallittavuus, natiivisovellus on usein paras ratkaisu. Androidilla tämä tarkoittaa ohjelmointia Android SDK:lla joko Javalla tai Kotlinilla. Kotlin on melko uusi tulokas, mutta sillä on Googlen täysi tuki. IOS:lle käytetään Swiftiä ja XCodea.

Flutter-ohjelmistotyökalut

Flutter on Googlen uusi monialustainen kehitysalusta. Sen ensisijainen käyttötarkoitus on sovellusten tuottaminen Googlen uudelle Fuchsia-käyttöjärjestelmälle, mutta koska Fuchsian valmistumista saadaan vielä odotella, pääpaino tällä hetkellä on luoda sovelluksia iOS:lle ja Androidille. Sovellukset kirjoitetaan Dartilla ja yhdistetään Android SDK:n ja XCoden kanssa natiivisovelluksiksi. Ohjelmistokehys on aitoihin natiivisovelluksiin verrattuna hieman laaja, mutta kehitystyö on erittäin nopeaa.

Unity

Unity on tunnetusti pelimoottori, mutta se kannattaa ottaa esiin tässä yhteydessä: se keskittyy vahvasti monialustaiseen kehitykseen. Perussovellusten kehittämiseen se ei täysin sovellu, koska sen käyttöliittymäominaisuudet ovat muita ympäristöjä heikommat. Mutta jos käynnissä on pelin luominen, Unity on ylivoimaisesti paras valinta.

Progressiiviset web-sovellukset (PWA)

Mobiililaitteiden natiivisovelluskehitykseen on tarjolla runsaasti työkaluja, mutta kehittäminen ja käyttöönotto on edelleen helpointa web-pohjaisilla sovelluksilla. Ne ovat myös aidosti monialustaisia. Viime aikoina selaimiin on lisätty runsaasti ominaisuuksia, joiden ansiosta web-sovellukset lähenevät natiivisovelluksia: muistipaikan luku, viestien lähetys, tehtävien ajo taustalla ja laitteen kameran käyttö ynnä muut toiminot onnistuvat. Toistaiseksi ei ole mahdollista rekisteröidä niitä sovelluksiksi muutoin kuin lisäämällä ne kotinäytölle.

Progressiiviset web-sovellukset kirjoitetaan ECMAScriptillä (Javascript) tai jollakin muulla kielellä, joka on konvertoitu ECMAScriptiksi. Suositeltavaa on käyttää ohjelmakirjastoja ja ohjelmistokehyksiä.

React

React on Facebookin kehittämä ohjelmakirjasto käyttöliittymäkehitykseen. Sitä käytetään yleensä yhdessä muiden kirjastojen kuten Reduxin kanssa. React ei itse asiassa ole ohjelmistokehys, mutta se edellyttää tiettyjen toimintatapojen noudattamista. React on erittäin suosittu, ja saatavilla on runsaasti sen tukemia valmiskomponentteja ja kirjastoja. Reactin opettelu, erityisesti Reduxin kanssa, voi olla haastavaa; lisäksi useimpia kirjastoja päivitetään usein. Voi siis olla, että puoli vuotta sitten opittu toimintatapa ei enää tänään ole sovellettavissa.

Vue

Myös Vue on työkalu käyttöliittymäkehitykseen, mutta Reactiin verrattuna se on ennemminkin ohjelmistokehys. Se yhdistelee templaatteja, tilakoodia ja tyylejä yhdeksi komponenttitiedostoksi. React tarjoaa vain view layer -kerroksen, kun taas Vue sisältää vähän enemmän. Käytännössä se on kuitenkin hyvin samantyyppinen kuin React siinä suhteessa, että Reactiin kuuluu lähes aina standardikirjastopaketti. Vue on jonkin verran vähemmän tekninen kuin React.

Angular

Angular on Googlen kehittämä sovellusohjelmistokehys, jolla on Typescript- ja Dart-versiot. Reactiin ja Vuehun verrattuna Angular on huomattavasti kattavampi ohjelmistokehys. Versiosta 5 eteenpäin Angularissa on ollut sisäänrakennettu tuki progressiivisille web-sovelluksille.

Käyttökokemussuunnittelu (UX)

Keskeinen osa mobiilisovelluskehitystä on käyttökokemuksen (UX) suunnittelu. Vaikka sovellus olisi kuinka hyvin ohjelmoitu, nopea ja responsiivinen, sovelluksen käyttäminen ei ole miellyttävää, jos käyttökokemus on jäänyt huonolle suunnittelulle.

Tarjolla on runsaasti UX-suunnittelua tukevia ohjelmistokehyksiä, joissa käytetään tuttuja graafisia elementtejä ja käyttöperiaatteita. Todennäköistä kuitenkin on, että sovellukseen halutaan yksilöllisiä ominaisuuksia. Tämä saattaa aiheuttaa ongelmia, sillä iOS- ja Android-käyttökokemussuunnittelu eroavat toisistaan, vaikkakin ovat viime aikoina jonkin verran lähentyneet.

Material Design

Googlen oma ulkoasun ja tuntuman suunnittelukieli Androidille on nimeltään Material Design, ja se tarjoaa kirjastoja useille eri alustoille. Android-natiivisovellukset perustuvat Material Design -elementteihin, mutta sen voi liittää myös Flutteriin, ja web-versioita on myös saatavilla. Material Designin käyttö voi olla hyvä vaihtoehto erityisesti silloin, kun käyttökokemussuunnittelulle ei ole varattu mittavia resursseja.

Adobe XD

Käyttökokemussuunnittelussa Adobe Experience Design (XD) on hyödyllinen työkalu helppoon käyttökokemusmallien luomiseen. Suunnitelmat voi jakaa asiakkaille ja kehittäjille tehokkaasti verkkosivuna, jolloin ohjelmiston asennusta ei vaadita.

Tiedon tallennus

Sovellusta suunnitellessa dataa täytyy todennäköisesti tallentaa jonnekin. Suunniteltavasta sovelluksesta riippuu, kuinka paljon ja millä tavoin.

Paikallinen tallennustila

Useimmat sovellukset vaativat paikallista tallentamista, ja vaikka käytössä olisi muitakin tallennusmenetelmiä, paikallista tallennusta usein tarvitaan. Web-sovellusten kohdalla paras vaihtoehto useimmiten on käyttää selaimen paikallis- tai sessiotallennustoimintoa.

Rest API

Rest API -rajapinta on yleensä mobiilisovelluksissa luonteva ratkaisu. Tämä on paras valinta silloin, kun tietovuo on käyttäjätoimintolähtöistä. Hankaluuksia voi tuottaa runsas asiakas-palvelinliikenne, mutta ratkaisuun voidaan yhdistää muita liikennemenetelmiä tai käyttää kiertokyselyä.

Firebase

Kun tarvitaan reaaliaikaista kaksisuuntaista liikennettä sovelluksen ja tallennustilan välillä, Googlen Firebase on hyvä valinta. Se käyttää NoSQL-datakoosteita, jotka voi kytkeä kulloisenkiin sovellukseen reaaliaikaisia päivityksiä varten. Firebase tarjoaa kirjastoja useimmille teknologioille, joita mobiilisovelluskehityksessä käytetään.

Firebase käyttää käyttäjärekisteröintiä ja -todennusta, joten sovellusten luominen sillä on yksinkertaista.

Miten siis valita?

Oikean teknologian valinta on aina haastavaa: tarjolla on niin runsaasti vaihtoehtoja, että monetkin niistä olisivat tarkoituksenmukaisia. Yleensä tuttujen teknologioiden käyttö on hyvä ratkaisu, mutta ensimmäiseksi on syytä selvittää, olisiko tarjolla sopivampi vaihtoehto. Vanha viisaus sanoo, että kun sinulla on vasara, näet vain nauloja. Niinpä kannattaa pohtia, onko käsillä oleva projekti yksi nauloista, vai pitäisikö harkita sopivampaa työkalua.

 

Teksti: Niklas Schönberg
Kuvat: Daniel Kouvo

 

Niklas Schönberg

Comments

comments