21.10.2014

Internetin mobiilikäyttö on lisääntynyt jatkuvasti ja joissain maissa se on jo ohittanut perinteisen työpöytäkonekäytön. Tämä suuntaus on luonut tarpeen suunnitella verkkosivuista ja palveluista responsiivisia, jotta niiden käyttäminen on mahdollisimman helppoa päätelaitteesta riippumatta. Responsiivisuus onkin nykyään jo uusien verkkopalveluiden suunnittelussa enemmän sääntö kuin poikkeus.
Mutta onko responsiivinen verkkopalvelu sellaisenaan riittävä vai voiko käyttökokemusta vielä parantaa? Jos palvelussa on paljon toimintoja, paljon erilaisia näkymiä ja paljon tietoa, ei pelkkä responsiivinen ulkoasu välttämättä tee käytöstä helppoa ja vaivatonta.
Yksi vaihtoehto on toteuttaa erillinen mobiilisovellus (aplikaatio, appi tai äppi). Erityisesti silloin, jos palvelua tai sen osia käytetään yleensä ”tien päällä”, niitä varten voi olla järkevää luoda erillinen sovellus. Erillinen sovellus on mahdollista suunnitella myös rajatulle määrälle toimintoja, jolloin sen ei tarvitse sisältää kaikkea mahdollista. Tällöin käyttökokemus suunnitellaan tukemaan vain näitä tiettyjä käyttötapauksia, joita käyttäjät usein tarvitsevat kun ovat poissa työpöytäkoneen ison ruudun äärestä.
Mobiilisovelluksen kehittäminen on perinteisesti ollut kallista ja hankalaa. Älypuhelinalustoja on useita, sama sovellus täytyy ohjelmoida kaikille erikseen. Riittävätkö iOS- ja Android-sovellukset vai tarvitseeko sovelluksesta kehittää myös Windows Phone versio? Entä jos sovellus on tarkoitettu vain yrityksen oman henkilöstön käyttöön, eikä sitä voi siksi laittaa julkisiin sovelluskauppoihin jakeluun?
Nykyisin on olemassa varteenotettavia vaihtoehtoja ns. natiivisovelluksille. Seuraavassa pieni katsaus eri vaihtoehtoihin.

Natiivi mobiilisovellus

Natiivisovellus tarkoittaa jokaiselle eri laitealustalle erikseen ohjelmoitua sovellusta. Eri laitealustat eivät ole keskenään yhteensopivia, vaan esimerkiksi iOS sovellukset ohjelmoidaan Objective-C ohjelmointikielellä Applen Xcode kehitystyökalujen avulla, kun taas Android sovellukset ohjelmoidaan Java-ohjelmointikielellä käyttäen Googlen tarjoamia kehitystyökaluja. Sovellusten kehittämiseen liittyy myös monia muita asioita, kuten esimerkiksi tietyt käyttöehdot ja säännöt, joihin on sitouduttava ja ennen julkaisua suoritettava tarkistusprosessi.
Natiivisovelluksen kehittäminen usealle eri alustalle on mm. näistä syistä edelleen kallista ja hankalaa, ja ennen sellaisen kehittämistä kannattaa vaihtoehdot ja sovelluksen tarpeet punnita tarkkaan.
Mitkä sitten ovat natiivisovelluksen todelliset hyödyt?

  • Sovelluskauppojen (App Store, Google Play -kauppa, Windows Phone -kauppa) tarjoamien jakelukanavien kautta sovellus on helppo löytää ja asentaa.
  • Sovellus voi olla maksullinen tai siinä voidaan hyödyntää sovelluksen sisäisiä ostoja ilman erillisiä maksurajapintoja ja verkkokauppatoimintoja.
  • Suorituskyky erityisesti paljon grafiikkaa sisältävissä sovelluksissa, kuten peleissä.
  • Helppo pääsy kaikkiin laitealustan tarjoamiin toimintoihin ja rajapintoihin, kuten esimerkiksi sijainti, kiihtyvyysanturi, puhelimeen tallennetut yhteystiedot, ilmoitukset, puhelut ja tekstiviestit yms.

HTML5 web-sovellus

Mobiilialustojen Internet-selaimet ovat kehittyneet viimevuosina huimaa vauhtia ja ottaneet kiinni työpöytäkoneissa käytössä olevat selaimet. Tämä kehitys mahdollistaa nykyaikaisten web-sovellusten kehittämisen erityisesti mobiilikäyttöön optimoiduksi. Tällöin sama web-sovellus toimii kaikilla eri alustojen laitteilla, mikä tarkoittaa säästöä erityisesti kehittämiskuluissa. Web-sovelluksia eivät myöskään rajoita mitkään tietyn laitevalmistajan säännöt ja ehdot, eikä niitä tarvitse julkaista erillisten jakelukanavien kautta. Tämä mahdollistaa nopean ja iteroivan kehityksen myös julkaisun jälkeen, koska sovellus on Internetin välityksellä aina ajantasalla.
Web-sovellusten kehittämiseen käytetään samoja HTML, CSS ja JavaScript -tekniikoita, joilla verkkosivuja ja -palveluita on aina rakennettu. Tekniikan osaajia on täten hyvin paljon enemmän kuin natiivisovellusten kehittäjiä. Web-sovellusten kehittämiseen käytetyt työkalut ovat kehittyneet viimevuosina nopeaan tahtiin, mikä tarkoittaa että kuka tahansa verkkosivut joskus nikkaroinut ei osaa kehittää laadukkaita HTML5 web-sovelluksia tämänpäivän tarpeisiin.
HTML5 web-sovelluksilla ei ole mahdollista hyödyntää kaikkia laitteen toimintoja samalla tavalla kuin natiivisovelluksilla, mutta esim. paikannus ja kiihtyvyysanturin tiedot saa nykyään JavaScript -rajapintojen kautta. Laitteen tavallisen puhelu- ja tekstiviestisovelluksen voi myös käynnistää web-sovelluksesta erityisesti tätä varten muodostetulla linkillä, jossa voi välittää mukana puhelinnumeron ja tekstiviestin sisällön.

Hybridi mobiilisovellus – best of both worlds

Hybridi mobiilisovellus tarkoittaa HTML5-tekniikoilla toteuttua web-sovellusta, jota kuitenkin ajetaan laitteissa omana erikseen asennettavana sovelluksena. Käytännössä asennettava sovellus sisältää niin kutsutun WebView-näkymän, joka on kuin sovellukseen sisäänrakennettu Internet-selain fullscreen moodissa, eli ilman osoitepalkkia, takaisin-nappia ja muita selaimen toimintoja. Hybridisovellukset voivat myös hyödyntää kaikkia laitteen toimintoja samaan tapaan kuin natiivisovellukset, erityisesti tätä varten kehitettyjen Javascript-rajapintojen välityksellä. Hybridisovellus luodaan esimerkiksi käyttämällä pohjaratkaisuna avoimen lähdekoodin hybridisovellusalustaa nimeltä Cordova (ent. PhoneGap). Tämän avulla HTML5-sovellus ”paketoidaan” natiivisovellukseksi, minkä jälkeen sen voi lisätä eri laitealustojen sovelluskauppoihin samaan tapaan kuin natiivisovelluksen. Lisätietoa siitä miten tämä prosessi teknisesti toimii, löytyy mm. tästä PhoneGap:n blogipostauksesta (englanniksi).
Hybridisovelluksissa yhdistyy siis molempien, natiivisovellusten ja HTML5 web-sovellusten, parhaat puolet. Hybridisovellukset eivät kuitenkaan ole varsinaisesti uusi asia, ne ovat olleet olemassa jo monta vuotta. Mutta vasta viimeaikoina niiden kehittämiseen käytetyt työkalut ja sovelluskehykset, laitealustojen selainten ominaisuudet sekä laitteiden koko ajan parantuva suorituskyky ovat tehneet hybridisovelluksista  kilpailukykyisiä natiivisovellusten kanssa.
Hybridisovellusten hyötyjä verrattuna web-sovelluksiin ovat mm.

  • Pääsy kaikkiin laitteen toimintoihin ja rajapintoihin, kuten esimerkiksi puhelimeen tallennettuihin yhteystietoihin, ilmoituksiin (ns. push-notifikaatiot) ja sovelluksen sisäisiin ostoihin (in-app-purchase).
  • Laitealustojen sovelluskaupat jakelukanavina mahdollistavat sovelluksen helpon asentamisen sekä myymisen maksullisena.
  • Laitteelle asenettu applikaatio on helpompi käyttää kuin selaimen kautta käytettävä web-sovellus. Ei tarvitse kuin painaa sovelluksen ikonia ja se toimii. Vaikka web-sovelluksen voi lisätä selaimen kirjanmerkkeihin, ja nykyään myös omaksi ikoniksi kotiruudulle, kuinka moni oikeasti tekee niin? Web-sovelluksen avaamiseen on edelleen käyttäjillä suurempi kynnys kuin puhelimeen asennetun sovelluksen.

Hybridisovelluksen hyötyjä verrattuna natiivisovelluksiin ovat mm.

  • Kehitys on helpompaa ja nopeampaa, koska sovellus tarvitsee ohjelmoida vain yhden kerran HTML5 muodossa. Eli kehitys- ja ylläpitokustannukset ovat huomattavasti pienemmät.
  • Saman sovelluksen voi ”paketoida” eri laitealustoille soveltuvaksi, joten ulkoasu ja käyttökokemus on yhtenäinen kaikilla eri laitteilla.

Erityisesti ns. tietoon pohjautuvat sovellukset on nykyään kustannustehokkaampaa toteuttaa hybridisovelluksina, koska natiivisovelluksen hyödyt eivät useimmissa tapauksissa riitä oikeuttamaan suurempia kustannuksia. Tietoon pohjautuvalla sovelluksella tarkoitan sovellusta, jossa käsitellään pääasiassa tietoa eikä tarvita erityisiä grafiikkaominaisuuksia tai muita suorituskyvyllisesti raskaita toimintoja. Tieto voi olla tekstiä, numeroita, listoja, taulukoita, mutta myös kuvia tai graafeja. Tällaisessa sovelluksessa on usein palvelinrajapinta, jonka kautta sovellus kommunikoi jonkin taustajärjestelmän kanssa. Tietoa voi sovelluksessa luoda ja muokata esim. lomakkeilla tai erilaisia toimintoja suorittamalla.
Tällasesta tietoon pohjautuvasta mobiilisovelluksesta on helppo ja nopea rakentaa prototyyppi hybridisovelluksena.  Toteuttamalla sovelluksesta lyhyen kehitysjakson aikana prototyyppi, päästään nopeasti kokeilemaan, miten sovellus oikeasti toimii ja testaamaan sitä käytännössä. Tämä mahdollistaa iteroivan ja ketterän kehityksen, jossa voidaan oikeasti huomioida loppukäyttäjän tarpeet ja saada arvokasta palautetta hyvissä ajoin.

Entä offline-tuki?

Nettiyhteyteen ei vielä nykyäänkään voi aina luottaa. Offline-tuki on mahdollista toteuttaa kaikkiin yllä kuvattuihin sovellustyyppeihin, riippumatta siitä onko sovellus erikseen sovelluskaupasta asennettava aplikaatio vai nettiselaimessa toimiva web-sovellus.
Lähes poikkeuksetta yllä kuvatun kaltaiset tietoon pohjautuvat sovellukset kommunikoivat jonkin taustajärjestelmän kanssa rajapinnan välityksellä. Tällöin offline-toiminnallisuus tulee suunnitella tarpeen mukaan. Erilaisia vaihtoehtoja ovat mm.

  • Säilöä rajapinnan kautta haettua tietoa laitteen muistissa ja näyttää sitä kun yhteyttä ei ole.
  • Tallentaa laitteella luotu uusi tieto laitteen muistissa ja lähettää se järjestelmään jälkikäteen kun yhteys taas saadaan muodostettua.
  • Tallentaa laitteella tehdyt muokkaukset laitteen muistissa ja synkronoida muutokset järjestelmään kun yhteys taas saadaan muodostettua.
  • GSM-verkon kattavuus on mobiilia Internet-yhteyttä laajempi ja luotettavampi. Yksi mahdollisuus on lähettää järjestelmään tietoa tekstiviestillä, jonka mobiilisovellus luo ja lähettää. Tämä on varteenotettava vaihtoehto etenkin silloin, kun tiedon saaminen järjestelmään on tärkeää Internet-yhteydestä riippumatta, kuten esimerkiksi erilaiset hälytykset tai avunpyynnöt.

Julkinen / yksityinen sovellus

Mobiilisovelluksen ei välttämättä tarvitse olla julkinen, sovelluskaupasta kenen tahansa ladattava sovellus. Myös yritysten oman henkilöstön tai vaikka järjestöjen jäsenten käyttöön on mahdollista toteuttaa mobiilisovellus, jota ei levitetä julkisia jakelukanavia pitkin. Helpointa rajatulle käyttäjäryhmälle jakelu on web-sovellusten osalta, jolloin sovellus toimii omassa verkko-osoitteessaan ja vaatii tavallisesti sisäänkirjautumisen.
Myös natiivisovelluksia ja hybridisovelluksia on mahdollista toteuttaa rajatulle käyttäjäryhmälle, mutta ei yhtä helposti kuin web-sovelluksia. Eri laitealustoille on olemassa erillisiä ns. enterprise-ohjelmia, jotka ovat maksullisia palveluita mutta mahdollistavat sovellusten jakelun sovelluskauppojen ulkopuolella tai sovelluskaupan kautta erillisellä yksityisellä kanavalla. Toki on myös mahdollista lisätä sovellus julkiseen sovelluskauppaan, mutta vaatia sisäänkirjautuminen ennen käyttöä. Tällöin kuka tahansa pystyy sovelluksen asentamaan, mutta sitä pystyvät käyttämään vain henkilöt joilla on tarvittavat käyttäjätunnukset.
Tässäkin tapauksessa paras ratkaisu riippuu tarpeista, loppukäyttäjistä sekä budjetista. Helpoin ja halvin ratkaisu on toteuttaa web-sovellus, joka on erityisesti mobiilikäyttöön optimoitu, eli samoja periaatteita ja työkaluja käyttäen kuin esim. hybridisovellus. Web-sovelluksen lisäämisen kotiruudulle ikoniksi voi kuitenkin ohjeistaa omalle henkilöstölle, jolloin käyttökokemus on lähes samaa luokkaa sovelluskaupasta asennettavien sovellusten kanssa. Yksityinen natiivi- tai hybridisovellus tulee kyseeseen mm. siinä tilanteessa, jos sovelluksessa on tarve käyttää jotain sellaisia laitteen ominaisuuksia joita web-sovelluksen kautta ei ole mahdollista käyttää.

Yhteenveto

Mobiilisovellusten kehittäminen hybridisovelluksena on helpompaa ja kustannustehokkaampaa kuin natiivisovellusten, ja myös suorituskyvyn osalta ne ovat nykyään kilpailukykyisiä. Hybridisovelluksissa yhdistyy natiivisovellusten ja HTML5 web-sovellusten parhaat puolet, joten se tarjoaa paljon mahdollisuuksia ja ketterää kehitystä hyödyntämällä voidaan käytettävä prototyyppi toteuttaa lyhyessäkin ajassa.
Ennen sovelluksen kehittämistä tulee kuitenkin tarkkaan kartoittaa sovelluksen ja kohderyhmän tarpeet, jotta voidaan tehdä päätös siitä mikä on paras tapa toteuttaa kyseinen sovellus.
Jos sinua tai yritystäsi kiinnostaa mobiilisovelluksen kehittäminen, ota yhteyttä niin jutellaan lisää ja mietitään yhdessä mikä olisi paras ratkaisu juuri teille.


Carl_bw
Carl Vuorinen työskentelee W3 Groupissa tiiminvetäjänä ja sovellusarkkitehtina. Häntä kiinnostaa kaikki web-kehitykseen liittyvä ja jatkuva oppiminen. Viimeaikoina hän on perehtynyt mm. hybridimobiilisovellusten kehittämiseen.

Tags: , , , ,