Jokainen mobiili-applikaatioiden parissa työskentelevä tietää koulukunnan jakautuvan kahtia. Toinen osa uskonomaisesti saarnaavat natiivi-applikaatioiden puolesta, kun taas toinen leiri vannoo HTML5-sovellusten nimeen. Molemmilla applikaatioilla on omat validit pointtinsa ja käyttötarkoituksensa, mutta jos mietit kumman leiriin sinun start-up ideasi liittyisi, tarjolla on myös kolmas vaihtoehto – hybridi-applikaatiot.
Web-teknologioilla rakennetut niin sanotut hybridi-applikaatiot pitävät sisällään sekä mobiililaitteen natiivi-ohjelmointikieltä (kuten Java tai Objective-C) sekä HTML ja Javascript koodia. Mikä erottaa hybridi-applikaatiot normaaleista mobiiliselaimessa ajettavista web-applikaatioista, on mahdollisuus käyttää natiivisti mobiililaitteen käyttöjärjestelmän tarjoamia ominaisuuksia, kuten kameraa, kiihtyvyysanturien dataa sekä geolokaatiota. Mutta tämän lisäksi niitä voidaan jakaa myös sovelluskauppojen kautta, kuten App Store tai Android Market. IMO suurin syy HTML5 pohjaisten web-applikaatioiden hitaaseen leviämiseen mobiilimarkkinoilla on ollut nimenomaan keskitetyn jakeluverkoston puuttuminen. Nyt hybridi ratkaisuun ovat päätyneet jo muun muassa Facebook, NetFlix sekä LinkedIn.
Miten hybridi sovellusten kyhitys käytännössä tapahtuu?
Viimeisen vuoden aikana, uusia alustoja joiden avulla ohjelmoijat voivat luoda mobiili-applikaatioita web-teknologioilla, on noussut kuin sieniä sateella. Näistä mainittakoon muun muassa Worklight, PhoneGap, MoSync, Appcelerator sekä suomalainen AppGyver. Olisin halunnut kokeilla AppGyveria (paras nimi koskaan kehitysympäristölle), mutta se on vielä yksityisessä beta testauksessa eikä ehtinyt mukaan tähän blogikirjoitukseen. Valitsin siis nopean googlaamisen perusteella suosituimman, PhoneGapin.
PhoneGap tukee laajaa kirjoa eri mobiilialustoja (iOS, Android, WP7, BB, Symbian, ...), mutta koska satun omistamaan MacBookin, päätin kokeilla iOS applikaation luomista. PhoneGap asentui helposti OS X Lion ympäristööni ja dokumentointi miten projektin saa aluilleen oli selkeä ja hyvin kuvattu. Minulla ei ole aiempaa kokemusta mobiilisovellusten kehittämisestä ja varsinkin XCode on täysin tuntematon sovellus, mutta onneksi ainoat asiat mitä XCoden puolella tarvitsee tehdä on projektin luonti, sekä iOS simulaattorin ajaminen. Itse HTML5 osuuden voi jokainen koodata omalla lempieditorillaan. XCode projektin sisällä oleva www –hakemisto pitää sisällään HTML sekä Javascript koodit ja tulee olemaan yhteinen applikaation kaikille eri mobiilialustaversioille.
Lyhyen pohdinnan jälkeen päädyin tekemään demoapplikaation, joka havainnollistaa mobiililaitteen kiihtyvyyspiirien käyttöä. Yksinkertaisuudessaan applikaatio sisältää yhden näkymän, jossa “biljardipallot” poukkoilevat ympräri ruutua, kun puhelinta fyysisesti kääntää kädessä. Ensiksi huomasin, että PhoneGapin mukana ei tule jQuerya , joten lisäsin sen projektiin erikseen. Tämä kävi yhtä helposti kuin missä tahansa web-applikaatiossa. Hetken pohdittua totesin, ettei applikaationi tarvitse suositeltua jQuery Mobile laajennusta, sillä näkymässäni ei ole juurikaan mobiiliappiksista tuttuja graafisia elementtejä.
Sitten itse koodin ja PhoneGap APIn kimppuun. accelerometer.watchAcceleration –metodilla sain helposti rekisteröityä kuuntelijan kiihtyvyysantureille, johon API sisälsi selkeät esimerkkikoodit. Omassa applikaatiossani laitoin päivitys frekvenssiksi 50ms, minkä pitäisi riittää mainiosti tarkoitukseensa. Ajattelin ensiksi kokeilla puhdasta CSS ratkaisua, jossa muutan absoluuttisesti asetettujen kuvaelementtien sijaintia, mutta pallojen lisääntyessä sulavuus ei ollut mielestäni halutulla tasolla, joten päädyin 3d transformattuun canvakseen. Muutama tunti sekä kirjasta kaivettu fysiikan kaava myöhemmin, käsissä oli toimiva appis (joskaan ei vielä kovin kaunis).

Jo parin tunnin testailun jälkeen voin lämpimästi suositella PhoneGapia erinomaiseksi vaihtoehdoksi mobiili web-sovelluksien kehittäjille. Kehitys ei muutamaa välivaihetta lukuun ottamatta eroa juuri normaalin mobiilille optimoidun web-palvelun kehityksestä, mutta hybridi-ratkaisun etuna saat käsiisi paremmat jakelukanavat, oikein suunniteltuna offline käytettävyyden sekä pääsyn suoraan päätelaitteen natiivikomponentteihin. Ainoana miinuksena todettakoon HTML sekä Javascript koodin debuggaus, joka tapahtuu XCode:n konsolin kautta. Google Chrome:n Developer Tools –työkaluun tottuneena, XCode:n käyttö tuntuu mielestäni rajoittuneelta ja kömpelöltä. Lisäksi jokaisen muutoksen jälkeen sovellus pitää kääntää uudelleen, jotta muutokset saadaan näkyviin.