Marko Kangas
24.01.2018 · Marko Kangas

Qt-mobiilisovellus – suorituskykyä kustannustehokkaasti

Qt:n avulla sovellus voidaan toteuttaa yhdellä kertaa usealle eri alustalle.

Asiakkaat hoitavat nykyään asioitaan yhä useammin verkossa kivijalkaliikkeiden sijaan. Useiden yritysten nettisivuilta löytyykin esimerkiksi verkkokauppa tai ajanvarauspalvelu. Yhä enemmän syntyy myös täysin digitaalisessa ympäristössä toimivia yrityksiä, joiden toiminta voi perustua esimerkiksi suoratoistoon tai peliin. Pysyäkseen kilpailussa mukana niin perinteisten alojen kuin myös verkossa toimivien yritysten on usein tarjottava palvelunsa myös mobiilisti. Tuomalla tuotteet ja palvelut omassa sovelluksessaan puhelimeen yritys on aina mukana asiakkaan taskussa. On sekä yrityksen että asiakkaan etu, että palvelu on mahdollisimman nopeasti ja vaivattomasti käden ulottuvilla.

Varsinkin perinteisen alan toimijalla voi olla isokin kynnys lähteä kehittämään asiakkaita palvelevaa mobiilisovellusta. Yrityksellä saattaa kuitenkin olla jo verkkopalvelu, joka toimii myös puhelimen ruudulla. Moni käyttääkin eri palveluja puhelimen selaimella, mutta tarkoitukseen suunnitellulla mobiilisovelluksella käyttö on usein huomattavasti sujuvampaa. Mobiilisovellukseen voidaan räätälöidä juuri ne ominaisuudet, joiden tarjoaminen mobiilisti hyödyttää käyttäjää ja yritystä, esimerkiksi paikannus, push-notifikaatiot ja nopean mobiilimaksamisen edut. Tärkeää onkin ymmärtää asiakkaiden tarpeet ja toiveet sekä kartoittaa ne ominaisuudet, joita halutaan käyttää mobiilisti. Sovelluksen kannattavuuteen vaikuttavat suuresti myös toteutuksessa käytetyt menetelmät.

Kehitystyökalun valinta

Mobiilisovelluksen kehittäminen tarkoittaa tänä päivänä sovelluksen toteuttamista käytännössä Android- ja iPhone-puhelimille, mutta tarpeen tullen myös Windows-puhelimille. Puhelinalustat ohjelmointiympäristöineen eroavat suuresti toisistaan ja usein sovellusten kehittämiseen tarvitaan omat ohjelmistokehittäjänsä, tai ainakin työmäärät on laskettava sen mukaan. Tässä kohtaa on siis hyvä pohtia, halutaanko maksaa kahden tai jopa kolmen eri sovelluksen kehittämisestä. Lopputuloksena voi kuitenkin olla vain eri laitteita varten kehitetyt, mutta täysin samalla tavalla toimivat sovellukset.

Onneksi tämän tyyppisen ylimääräisen työn tekemiseen on olemassa vaihtoehtoja. Tarpeeseen voidaan kehittää esimerkiksi web-pohjainen mobiilisovellus, mutta tarjolla on myös erilaisia ohjelmointikirjastoja, joilla voidaan luoda sovellus kerralla useammalle eri alustalle. Tällä menetelmällä yritys voi saada karkeasti arvioiden kaksi tai jopa useamman sovelluksen yhden hinnalla. Yhden ohjelmointikielen käyttäminen tekee myös sovelluksen jatkokehityksestä ja ylläpidosta kustannustehokasta.

Qt

Qt on kehitysympäristö, jonka avulla sovellus voidaan toteuttaa yhdellä kertaa usealle eri alustalle. Historiansa aikana Qt on laajentanut tarjontansa kaikille yleisimmille alustoille työpöytä-, mobiili- ja sulautetuissa laitteissa. Se on erittäin hyvä ratkaisu alustariippumattoman mobiilisovelluksen toteuttamiseen; Android- ja iOS-alustojen lisäksi tarjolla on Windows Phone -tuki, ja samalla vaivalla sovelluksen voi tarvittaessa asentaa myös työpöytäympäristöön, tai integroida vaikka sulautettuun järjestelmään ilman erillistä ohjelmointia.

Ohjelmointia nopeuttaa Qt:n tuki Windows-, Linux- ja OS X -työpöytäympäristöille, joten sovelluksen kehityksessä ei tarvitse käyttää erillistä simulaattoria. Kehitys ja ohjelman ajaminen voidaan tehdä ohjelmoijan haluamassa ympäristössä ja vasta lopputestaus kohdelaitteessa erikseen. Qt-sovellus käännetään alustalle sopivaksi natiivikoodiksi, joten siinä ei ole ajonaikaista kääntäjää hidastamassa sovelluksen ajoa, eikä näkymiä ladata verkon yli. Toisin kuin Qt:ssa, web-pohjaisen käyttöliittymän kehittämisessä on myös otettava huomioon eri alustat ja eri selaimet. Yksi selain voi näyttää sisällön erilaisena kuin jokin toinen selain ja samallakin selaimella näkymissä voi olla eroja eri alustoilla. Kaikkien versioiden tuki tuo lisätyötä kehittäjälle, testauksesta puhumattakaan. Natiivisovelluksissa taas valmiit komponentit ovat erinäköisiä eri alustoilla. Näitä ulkoasuun liittyvien eroavaisuuksien ongelmia ei Qt:ssa ole, vaan Qt-sovellus näyttää ja toimii aina samalla tavalla alustasta riippumatta. Toki Qt:lla onnistuu myös alustakohtaisten ominaisuuksien toteutus silloin, kun sitä halutaan.

Piirtoon Qt käyttää laitteen tarjoamaa OpenGL-grafiikkakirjastoa ja Qt tarjoaakin sovellukselle rautakiihdytetyn natiivin sovelluksen suorituskyvyn, jolloin käyttökokemus on aina sulava oikein toteutettuna. Qt-sovellus toimii periaatteessa samalla tavalla kuin natiivi OpenGL-sovellus.

Qt:n monipuoliset rajapinnat

Kehitystiimille Qt tarjoaa nopean tavan toteuttaa käyttöliittymiä QML-kuvauskielellä. QML-koodia tuotetaan käyttämällä hyväksi Javascriptiä. QML on itsessään nopeasti opittavissa oleva kieli. Käyttöliittymän ulkopuoliset rajapinnat ja integroinnit toteutetaan tarvittaessa C++-kielellä. Qt Quick -kirjasto lisäosineen tarjoaa valmiit QML-komponentit käyttöliittymän luontiin. Erillinen Qt Quick Controls -moduuli tarjoaa hyvän kattauksen valmiita, muokattavissa olevia komponentteja sovelluksen nopeaan toteuttamiseen. Qt Quick tukee komponenteille erilaisia animointeja, skaalauksia ja teemoja. Svg-grafiikan tuen ansiosta voidaan tuottaa tarkkaa grafiikkaa eri näyttötarkkuuksille, ja Qt:sta löytyy valmis tuki myös kielipakettien käyttöön.

Qt on modulaarinen kokoelma kirjastoja ja tarjoaakin kattavasti yleisimmin tarvitut rajapinnat mm. verkon käyttöön, multimediaan, paikannukseen, sensoreille, 3D-grafiikkaan, kaavioille, esteettömyydelle, web näkymälle sekä moneen muuhunkin. Qt käyttää taustalla natiivi-alustan tarjoamia kirjastoja, joten toimivuus vastaa niidenkin osalta natiivisovelluksen toteutusta. Mikäli Qt:n tarjoama rajapinta ei vastaa tarpeita, niin avoimen lähdekoodin tuotteena Qt:n koodia voi myös itse muokata omaan sovellukseen toimivaksi. Ja jos Qt ei itsessään tarjoa ollenkaan jotain tarvittavaa rajapintaa, niin se voidaan integroida Qt-sovellukseen käyttämällä natiiveja alustan omia tai kolmannen osapuolen rajapintoja.

Valinnan vaikeus tai helppous

Mobiilisovelluksen tarpeista riippumatta suosittelen ainakin punnitsemaan, mitä etuja Qt:n valitseminen voisi tuoda sekä asiakkaalle että kehitystiimille. Qt:n edut korostuvat suorituskyvyssä ja tilanteissa, joissa on tarve luoda sovellus useammalle eri alustalle kustannustehokkaasti. Käyttämisessä voi tietysti tulla vastaan haasteita kuten muissakin kehitysympäristöissä. Qt:n käytössä onkin hyvä ymmärtää, että se on periaatteessa kokoelma kirjastoja natiivin rajapinnan ja sovelluksen välillä. Tarvitut Qt-kirjastot ovat avoimia ja mahdolliset ongelmat ovat yleensä aina ratkaistavissa.

Riippuu myös saatavissa olevista kehittäjistä, onnistuuko projekti parhaiten käyttämällä natiivia, Qt:ta vai jotain muuta kehitystyökalua. Kehitystiimille tärkeä asia voi ollakin Qt:n tekninen tuki, joka vastaa nopeasti ja auttaa aina mahdollisten ongelmien ratkaisemisessa. Qt:ta kehitetään jatkuvasti ja uusi versio ilmestyy puolen vuoden välein. Qt:ta käyttämällä tuotteiden ja palveluiden kehittäminen ja ylläpito on kuitenkin nopeaa ja kaikille asiakkaille saadaan sama käyttökokemus laitteesta riippumatta. Yksi esimerkki onnistuneesta Qt-sovelluksesta on Bitfactorin bussiyhtiö Savonlinjalle kehittämä palvelukokonaisuus, johon kuuluvat muun muassa kuljettajien ja matkustajien mobiilisovellukset. Matkustajan Linjalla-sovellus on ladattavissa AppStoresta ja Google Play -kaupasta.

Bitfactor on The Qt Companyn virallinen palvelukumppani. Lisää tietoa Qt:sta ja palvelukumppanuudestamme saat täältä.

Kategoria
Technology

Viimeisimmät blogikirjoitukset