6.6.2013

Windows Phone 7 -sovelluskehitys käytännössä

Erkka Peltoniemi

Meteoriitin sovelluskehittäjä Erkka Peltoniemi on yksi Sinisen Meteoriitin Windows Phone -sovelluskehityksen osaajista.  Erkka sai hiljattain valmiiksi opinnäytetyön Windows Phone 7 sovelluskehityksestä. Meteoriitti.comin toimitus onnittelee suorituksesta ja esittää pari kiperää kysymystä tuoreelle insinöörille.

Miksi valitsit Windows Phone 7 -kehityksen opinnäytetyösi aiheeksi?

Olen pitkään ollut kiinnostunut mobiilikehityksestä, mutta ajan puute on estänyt minua ottamasta haltuun suosituimpien mobiilialustojen sovelluskehitystyökaluja (Android, iOS). Kun Microsoft vuonna 2010 julkaisi Windows Phone -kehitystyökalut, tartuin kuitenkin innolla tilaisuuteen, sillä Windows Phone -kehittäjänä pystyisin hyödyntämään samoja teknologioita ja työkaluja, joita olen jo neljän vuoden ajan käyttänyt .NET-ohjelmoijana työelämässä ja koulussa.

Kun näin Windows Phone 7 -käyttöjärjestelmän toiminnassa ensimmäisen kerran, ajattelin että siinäpä on elinvoimainen ja uudenlainen tapa käyttää mobiililaitetta! Tässä vaiheessa en tietenkään edes tiennyt vielä Nokian ja Microsoftin liitosta mitään. Käyttöjärjestelmän erot kilpailijoihin nähden ja kehitystyökalujen hyvä laatu saivat minut kuitenkin uskomaan, että Windows Phone ei tule jäämään marginaaliseksi Suomessakaan.

Mitä opinnäytetyösi käsittelee?

Halusin opinnäytetyössäni valottaa keskeisiä Windows Phone -sovelluskehityksen piirteitä. Näkökulmat peilasin työn tiimoilta julkaisemani Windows Phone -sovelluksen kehitysprosessin kautta.

Toteuttamani Reitti-sovellus on tarkoitettu Helsingin joukkoliikennettä käyttävien ihmisten apuvälineeksi. Sovelluksella voi nopeasti löytää nopeimmat ja mukavimmat reitit pääkaupungin joukkoliikenteessä, yhdessä HSL:n Reittiopas API:n ja Windows Phone -laitteen palveluiden avulla.

Esittelen työssäni koodiesimerkeillä joitakin sovellukseni mielenkiintoisimmista kohdista, ja tuon myös esille hyväksi havaitsemiani Silverlight for Windows Phone -ohjelmointikäytäntöjä. Työssä tuodaan esiin myös jonkin verran käyttöjärjestelmän peruspiirteitä.

Opinnäytetyöni on kirjoitettu niin, että se on ymmärrettävä ja hyödyllinen aloittelevalle Windows Phone -kehittäjälle, jolla on jo kuitenkin jonkin verran .NET-kokemusta.

Miten paljon käytit aikaa opinnäytteeseen liittyneen sovelluksen tekemiseen?

Kehitin sovellusta iltaisin päivätyöni ohessa. Kokonaisuudessaan ohjelmointityötä kertyi arviolta 8-10 henkilötyöpäivän verran. Isoin yksittäinen työ oli HSL:n monipuolisten Reittiopas-ohjelmointirajapintojen opiskelu. Toinen merkittävä asia oli Windows Phone -käyttöjärjestelmän erityispiirteiden haltuunotto. Erityispiirteistä piti sovelluskoodissa huomioida mm. sovelluksen tilan hallinta sekä käyttöjärjestelmän palveluiden, kuten GPS:n, kameran ja tietovaraston käyttö.

Mitkä ovat sovelluksen mielestäsi parhaat toiminnot?

Kun aloin suunnittelemaan Reitti-sovellusta, halusin aloittaa pienestä ja saada sovelluksen nopeasti julkaistua. Julkaisun jälkeen voisin keskittyä kuuntelemaan käyttäjäpalautetta ja jatkokehittää sovellusta sen perusteella. Ohjenuorani oli, että sovelluksen tulisi olla mahdollisimman suoraviivainen ja tarjota käyttäjälle kaikkein oleellisimmat palvelut mahdollisimman nopeasti. Reitti-sovellus alkaakin välittömästi käynnistymisensä jälkeen automaattisesti paikantaa käyttäjän sijaintia – käyttäjän työksi jää vain syöttää määränpäänsä sovelluksen osoitekenttään ja painaa hakupainiketta.

Sovelluksen tarjoamia reittivaihtoehtoja voi tarkastella kahdella eri tavalla, jossa toisessa hyödynsin Silverlight-vektorigrafiikkaa, joka näyttää käyttäjälle ikonilistauksen ja selitteet reitillä käytettävistä julkisen liikenteen linjoista. Sovelluksen karttanäkymässä taas käytin valmista Bing Maps -Silverlight-kontrollia, jonka päällä sovellus kuvaa reitin eri vaiheet.

Käyttöliittymäsuunnittelussa pidin tärkeänä, että sovellus näyttää ja tuntuu Windows Phone -sovellukselta ja toimii saumattomana jatkeena käyttöjärjestelmälle. Sovellus noudattaakin tarkasti Windows Phonen Metro Design-kielen suuntaviivoja ja myös reagoi dynaamisesti käyttäjän asettamiin väriteema-asetuksiin käyttöjärjestelmässä.

Halusin, että käyttäjät voivat myös tallentaa suosikkipaikkojaan sovelluksen muistiin. Koska Metro Design kannustaa sovellusta olemaan mahdollisimman paljon käyttäjän näköinen, keksin että käyttäjä voi tallentaa suosikkipaikkansa ottamalla kuvan siitä. Seuraavan kerran kun käyttäjä haluaa matkustaa suosikkipaikkaansa, hän voi kuvaa klikkaamalla käynnistää reittihaun!

Mitkä asiat osoittautuivat vaikeimmiksi toteuttaa?

Vaikeimmat asiat liittyivät varmasti Silverlight for Windows Phone -kehityksen erityispiirteisiin, joita ei tule vastaan kehittäessä perinteisiä Silverlight-sovelluksia. Windows Phone -sovellus voi esimerkiksi missä tahansa vaiheessa joutua ns. Tombstone-tilaan, jolloin käyttöjärjestelmä keskeyttää sovelluksen ajon ottaessaan vastaan vaikkapa saapuvaa puhelua. Tällöin kehittäjän tulee tallentaa sovelluksen tila mahdollisimman tarkasti, ja kun sovellus palaa jälleen suoritukseen, palauttaa tila takaisin. Parhaimmillaan toteutettuna käyttäjäei edes huomaa, että sovellus on välillä ollut pois päältä, vaan sovelluksen suoritus jatkuu täsmalleen siitä mihin se jäi ennen Tombstonea.

Minkälaisia tulevaisuuden mahdollisuuksia näet Windows Phone 7 -kehityksessä? Aiotko itse jatkaa omien sovelluksien tekemistä?

Microsoftin tarjoamat ensiluokkaiset kehitystyökalut sekä tiukasti standardoitu alusta lisäävät Windows Phonen houkuttelevuutta kehittäjille. Sovelluksia onkin tullut kauppapaikalle hurjalla vauhdilla. Eniten kiinnostaa tällä hetkellä pilvipalveluiden ja Windows Azuren integroiminen Windows Phone -sovelluksiin. Jos pilvipalveluita hyödyntävien Windows Phone -sovelluksien kehitys tulee helpoksi myös pienkehittäjille, on tilanne herkullinen sellaisille kehittäjille, joilla on paljon ideoita, mutta niukasti resursseja.

Olen pyöritellyt mielessäni erilaisia ideoita ja näyttäisi siltä, että ryhdyn seuraavaksi kehittämään mobiilipeliä Windows Phonen tarjoamalle XNA-alustalle. Aion myös jatkaa Reitti-sovelluksen kehittämistä.

Mitä opit projektin aikana? Yllättivätkö jotkut asiat?

Sain projektista melko vahvan käsityksen siitä, miten Windows Phone -sovelluksia kannattaisi Silverlightia hyödyntäen tehdä. Ehkä eniten yllätti se, miten pieni ja mutkaton matka sovelluksella suunnittelupöydältä kauppapaikalle olikaan.

Minkälaisena näet Market Placen tulevaisuuden? Pitäisikö suomalaisten .Net -kehittäjien ryhtyä tekemään mobiilisovelluksia enemmänkin?

Sovellusten määrä Market Placessa kasvaa nopeasti, ja ne ovat pääasiassa hyödyllisiä ja laadukkaita. Market Place pystyykin päivä päivältä tarjoamaan Windows Phone -käyttäjälle kattavampaa valikoimaa hyödyllisiä ja viihteellisiä sovelluksia. Koska Market Placen sertifiointiprosessi on kiitettävän läpinäkyvää ja nopeaa ja lisäksi kehittäjäksi on helppo rekisteröityä, en näe syytä miksi Market Place ei jatkaisi kasvuaan myös tulevaisuudessa.

Mango-päivityksen myötä Market Placeen on myös tulossa tärkeitä lisäominaisuuksia. Herkullisimpana pidän Market Placen jatkossa tarjoamaa toiminnallisuutta, jossa sovelluksen julkaisija voi avata sovelluksensa rajatulle käyttäjäkunnalle betatestaukseen ennen varsinaista julkaisemista.

.NET-kokemusta omaavan ohjelmoijan on melko kivutonta siirtyä kehittämään sovelluksia Windows Phonelle, joten kannustaisin kaikkia mobiilikehityksestä kiinnostuneita lataamaan ilmaiset kehitystyökalut ja testaamaan miltä Windows Phone -kehitys maistuu.

Linkit

Lisätietoja Sinisen meteoriitin palveluista

Kiinnostuitko? Kysy lisää!