Puhelimien ja tablettien käytön kasvu on ollut räjähdysmäistä ja yhä useammat tekevät sovelluksia suoraan suunnaten ne puhelimelle tai tabletille. Olen itse tehnyt mobiilipuolelle sovelluksia suurimmaksi osaksi vain harrastuksena ja vain vähän ammattimaisesti. Vaihtoehtoja on lukuisia, ja yritän vähän avata eri tyyppisiä vaihtoehtoja.
Natiivisovellukset
Natiivisovellukset ovat alustan omilla kehitysvälineillä toteutettuja sovelluksia. Android-sovelluksia yleensä kehitetään Javalla. Applen iOS-alustaan sovelluksia kehitetään Swift-kielellä. Kummallekin alustalle on tarjolla oma kehitysympäristönsä.
Natiivisovelluksilla saadaan sujuvin käyttöliittymä, koska kaikki komponentit voivat olla natiivikomponentteja ja toimivat samalla tavoin kuin alustassa yleensäkin. Sovelluksen toteuttamisen nopeus riippuu tekijöiden natiiviosaamisesta ja jokainen sovellus pitää tehdä kullekin alustalle erikseen. Tällä kuitenkin voidaan saada paras lopputulos, mutta luultavasti toteutusaika on pidempi kuin muissa vaihtoehdoissa ja vaatii kehittäjiltä hyvää osaamista Andoir- ja iOS-alustoista. Usein näitä huippuosaajia on valitettavan harvassa.
Natiivikomponenteiksi kääntyvät alustat
Koska toteutus jokaiselle alustalle erikseen on työlästä, ovat esille nousseet toteutukset jotka yrittävät abstraktoida natiivikomponentteja yleisiksi komponenteiksi, jotka voisivat toimia jokaisessa alustassa samalla tavalla. Esimerkkejä näistä ovat React Native, NativeScript ja Xamarin. Tavoitteena olisi, että toteutus tarvitsisi suurimmaksi osaksi tehdä vain kerran; vain se osa toteutuksesta, joka täytyy tehdä erikseen eri alustoilla, tehdään erikseen. Tavoitteena on lyhentää sovelluksien kehitysaikaa ja saada lopputulos aikaiseksi vähemmällä vaivalla ja nopeammin. Usein natiiviosaajia ei enää tarvita niin montaa ja osa kehityksestä onnistuu esimerkiksi Web-kehittäjien tai muiden kehittäjien toimesta. Usein käytön sujuvuus saadaan natiivin kaltaiseksi. Monesti käyttäjä ei huomaa käyttävänsä hybridisovellusta natiivin sijasta. Tiimissä olisi silti hyvä olla joku, joka ymmärtää natiivialustojen toimintaa, koska projekti kuitenkin paketoidaan sovellukseksi alustojen omiin verkkokauppoihin ja yleensä sisältää joko kirjastojen tai projektin myötä tulevaa natiivikoodia.
Web-pohjaiset mobiilialustat
Web-pohjaisissa mobiilialustoissa, kuten Ionic tai Phonegap, toteutuskoodi on yleensä HTML:ää ja JavaScriptiä ja tyylit on tehty CSS:llä. Käytön sujuvuus jää aina hieman natiivitoteutuksesta, mutta verkkoyhteys ei ole välttämätön, toisin kuin perinteisissä verkkopalveluissa. Käyttöliittymä saadaan ulkonäöllisesti kyllä säädettyä hienon oloiseksi, mutta helposti animaatiot ja siirtymät eri näkymien välillä eroavat natiivista toteutuksesta.
Web-pohjaisten mobiilialustojen etuna on se, että natiiviosaamista ei juurikaan tarvita ja toteutus voidaan lähes kokonaan tehdä web-kehittäjien toimesta. Eri sukupolven laitteissa voi olla hyvinkin erilainen toteutus web-sisällön näytölle, mikä saattaa aiheuttaa ongelmia. Kuten natiivikomponenteiksi kääntyvissä alustoissa, myös web-pohjaisten mobiilialustojen osalta olisi hyvä olla joku joka ymmärtää natiivialustoista. Usein kuitenkin tarvitaan jotain natiivikomponentteja apuna. Esimerkiksi Ionic-sovelluskehyksessä on omia komponentteja, joilla saadaan parempi käyttötuntuma kuin mitä upotettuun web-näkymään on mahdollista saada.
Prototypointityökalut
Moni on jo tarjoamassa web-käyttöliittymässä muokattavaa prototyypinteko-työkalua, kuten FeedHenry tai Appgyverin Composer, jolla voidaan tehdä prototyyppi lähes ilman koodausta. Käyttötuntuma on riippuvainen työkalun toteutuksesta ja voi olla vaikea saada tehtyä siihen isompia muutoksia. Tuollainen prototyyppi voi olla hyvä kuitenkin esimerkiksi johonkin demoon tai ensimmäiseksi tuotetestaukseksi. Jos on todella kiire saada tuote ulos, niin nämäkin voi olla ihan validi vaihtoehto.
Mitä kannattaa valita?
Paras käyttötuntuma saadaan ehdottomasti natiivitoteutuksella. Toisaalta useat natiiviksi kääntyvät alustat, kuten React Native, NativeScript ja Xamarin alkavat päästä lähelle samaa tuntumaa. Erilaiset Web-pohjaiset ja Webview-näkymiin perustuvat toteutukset jäävät kyllä käyttötuntumaltaan natiivisovelluksista jälkeen. Toisaalta ne ovat toteutukseltaan ehkä hieman helpompia tehdä ja voidaan ehkä tehdä jopa puhtaasti web käyttöliittymässä ilman tarvetta erityisille alustakohtaisille kehitystyövälineille. Se, mitä kannattaa valita, riippuu kehitystiimisi osaamistaustasta, rakennettavan sovelluksen tarpeista ja toteutuksen aikataulusta. Sujuvan sovelluksen tekeminen vie aina aikaa riippumatta käytettävästä välineestä.