lauantai 6. joulukuuta 2014

Esteettömien sovellusten kehittäminen iOS-laitteisiin

Applen Tim Cook on sanonut: Kun mahdollistamme sen, että näkövammaiset voivat käyttää tuotteitamme, emme laske takaisinmaksuaikaa.
Tämä ideologia näkyy useissa Applen laitteissa: Olipa kyseessä sitten iPhone, iPad, iPod tai Apple-tietokone, myös näkövammainen voi sitä käyttää. Käytännössä tämä tarkoittaa sitä, että laitteiden käyttöjärjestelmässä on sisäänrakennettuna ruudunlukuohjelma, jonka avulla laitteen käyttö onnistuu näkemättä näyttöä. iPhone-puhelimessa esteettömyysajattelu on viety pitkälle. Esimerkiksi kamerasovellus osaa puhumalla kertoa, mistä kuvan kohdasta löytyy ihminen. Vastaavasti laitteen mukana tuleva vatupassisovellus osaa puhuen kertoa puhelimen asennon, jolloin myös sokea voi esim. laittaa taulun seinälle suoraan.

Sovelluskehittäjälle tämä tarkoittaa, että asiakaskunta kasvaa, kun varmistetaan sovelluksen toiminta myös ruudunlukijalla. Kokemuksesta voin sanoa, että sokeiden kansainvälinen yhteisö on tiivis ja tieto hyvistä esteettömistä sovelluksista leviää mm. AppleVis-palvelulla. Samasta kanavasta on mahdollista löytää myös testikäyttäjiä sovellukselle.

Vaikka näkövammaisten käyttäjien ryhmä voi vaikuttaa alkuun marginaaliselta, se ei sitä ole. Maailman Terveysjärjestö WHO raportoi, että maailman 285 miljoonasta näkövammaisesta 39 miljoonaa on sokeita.

Ruudunlukijan käyttäminen

Suosittelen kaikille sovelluskehittäjille ja testaajille VoiceOver-ruudunlukijan käytön opiskelemista. VoiceOverilla voi käyttää iOS- ja OSX-käyttöjärjestelmillä toimivia laitteita.

iOS-laitteissa VoiceOverin voi kytkeä tarpeen mukaan päälle ja pois, kun tekee seuraavan asetuksen: Asetukset / Yleiset / Käyttöapu / Käyttöapu-oikotie / VoiceOver. Tämän jälkeen VoiceOverin voi kytkeä päälle ja pois kolmoisnapauttamalla koti-näppäintä.

Kun VoiceOver on kytketty päälle, näytölle ilmestyy kursori, joka lukee näytöllä olevan elementin (esim. “Viestit”, “Kamera”, “Kalenteri” jne.). Seuraavan elementin voi valita pyyhkäisemällä sormella näytön vasemmasta laidasta oikeaan ja edellisen vastakkaissuuntaisella pyyhkäisyllä. Valittu elementti aktivoidaan kaksoisnapauttamalla näyttöä mistä tahansa kohdasta. Näin yksinkertaisesti voidaan jo soittaa puheluita, kirjoittaa tekstiviestejä, lukea sähköposteja jne. Samoin voidaan käynnistää Safari, jolla onnistuu verkkosivujen esteettömyystestaus.

iOS-sovelluksen esteettömyys

Olen kuullut tarinoita, joissa sovelluskehittäjä on saanut palautetta tekemästään pelistä, jossa näkövammainen loppukäyttäjä on juuttunut pelissä johonkin kohtaan esteettömyysongelman takia. Kehittäjä on ollut suuresti hämmästynyt ymmärrettyään, että hänen sovellusta voi ylipäänsä pelata näkemättä käyttöliittymää.

Tämä on mahdollista, sillä esteettömyystoiminnot on rakennettu Applen sovelluskehitysvälineiden ytimeen. Näin ollen sovelluksista tulee usein melko esteettömiä ilman lisätyötä. Tämän varmistamiseksi esteettömyys kannattaa asettaa sovellusvaatimukseksi ja opetella testaamaan sovelluksen käyttö VoiceOverilla. Tämä pätee myös verkkosivujen laatimiseen: Kokeilemalla sivustojen käyttöä iPadin Safari-selaimella VoiceOver-elein voi varmistua, että käytetyt html-koodaukset ja JavaScriptit toimivat myös ruudunlukijalla.


Mikäli sovelluksessa on nappeja ilman tekstiä, VoiceOver ei tiedä, mitä puhua. Tällöin sovelluksen toiminta ruudunlukijalla muuttuu hankalaksi ja vaatii loppukäyttäjää kokeilemaan ja opettelemaan ulkoa. Tätä varten XCoden Interface Builderistä löytyy jokaiselle käyttöliittymäkontrollille esteettömyystietoja (Accessibility). Niistä tärkein on “Label”, johon voidaan kirjoittaa kontrollin kuvaus, jonka ruudunlukija lukee, vaikka näytöllä näkyisi vain ikoni

Kuva 1: Asetukset-nappiin on asetettu ruudunlukijan lukema teksti



Tällä videolla demonstroin joitain tyypillisiä esteettömyysongelmia ja kerron myös, miten helposti ne tämän artikkelin vinkein voi korjata:

BlindSquaressa esteettömyys on viety loppuun asti

BlindSquare on puhuva lisätyn todellisuuden GPS-sovellus näkövammaisille. AloittaessaniBlindSquare-sovelluksen tekemisen vuoden 2012 alkupuolella en tuntenut yhtään sokeaa enkä myöskään tuntenut laitteen VoiceOver-mahdollisuuksia. Sovelluksen ensimmäinen versio valmistui kolmessa kuukaudessa ja jo kolmen viikon jälkeen sillä oli käyttäjiä kolmestakymmenestä maasta. Yhdessä loppukäyttäjäyhteisön kanssa olen oppinut, kuinka rakennetaan optimaalisesti toimiva esteettömyystoiminnallisuus.

Sovellus on lokalisoitu 23 kielelle, mikä normaalisti toisi ison haasteen käyttöohjeiden ylläpitämiseen ajan tasalla, varsinkin kun käyttöliittymään tulee uudistuksia lähes kuukausittain. Ratkaisuna tähän on VoiceOveriin liittyvä vinkkisysteemi (hints). Kullekin käyttöliittymäkontrollille voi asettaa vinkin (hint, kts. kuva 1), joka luetaan, jos VoiceOver-kursori jättää elementin päälle. Sovelluksessani vinkit lisätään dynaamisesti ajon aikana lokalisoituna ja niin, että niissä otetaan huomioon käyttökonteksti: Vinkki vaihtuu siis käyttötilanteen mukaan, joten se kertoo täsmälleen, mitä kyseinen nappi juuri nyt tekee. Käyttöohje on siis integroitu sovellusnäyttöihin; mikäli napin paikka vaihtuu, myös käyttöohjeen järjestys muuttuu automaattisesti.

Toinen erikoisuus liittyy sovelluksen ohjaamiseen silloin, kun laite on taskussa ja sovellus tausta-ajossa. Kun sokea kulkee kadulla valkoinen keppi tai opaskoiran valjaat kädessään, ei laitteen käyttö ruudunlukijalla olisi turvallista. BlindSquaressa automaattipuhetta voi ohjata laitetta ravistamalla. Siinä on myös innovatiivinen audiovalikko, jota ohjataan kuulokkeiden musiikkiohjaimella: Painamalla “Toista”, BlindSquare alkaa lukea valikkoa, jota voi selata “Eteen”- ja “Taakse”-napeilla. Kun haluttu toiminto tai alivalikko kuuluu kuulokkeesta, painetaan “Toista” uudestaan. Näin tärkeitä toimintoja voidaan ohjailla turvallisesti ilman laitteen esille ottamista.

BlindSquare toimii myös kuurosokeilla. Tämän mahdollistaa iOS-laitteiden tuki bluetooth-pistenäytöille. Pistenäytöllä voidaan lukea Braille-pistekirjoituksena kaikki se, mitä VoiceOver puhuu. BlindSquaressa on myös komentokäyttöliittymä, eli pistenäytön näppäimistöltä voidaan myös kirjoittaa komentoja tyyliin “lisää bussipysäkki” tai “navigoi koti”.


Aihesta lisää: Ronja Oja kirjoittaa blogissaan samasta aiheesta, mutta loppukäyttäjän näkövinkkelistä.

Tämä artikkeli on julkaistu Sytyke-lehdessä 4/2014