illustration
Blogitekstejä

Saavutettavuus koodarin silmin

Saavutettavuus ei ole teknisesti kovinkaan suuri haaste. Kyse on enemmänkin ajattelutavan muutoksesta.

Aikaisemmissa blogikirjoituksissamme on kerrottu saavutettavuudesta yleisesti sekä siitä, miten saavutettavuus otetaan huomioon designissa. Näiden näkökulmien rinnalla on tärkeää muistaa saavutettavuus myös teknisestä vinkkelistä.

Saavutettavuus ei ole monellekaan itsestäänselvä ajatus. Diginatiivi ilman rajoitteita ei usein osaa kaivata helpommin käytettävää palvelua. Nykyään digitaalisten palvelujen yhdenvertaisuuteen kiinnitetään onneksi yhä enemmän huomiota. Kyse on kuitenkin lopulta yksinkertaisista asioista, joiden avulla palveluista saadaan parempia ja helpompia käyttää kaikille – ei pelkästään erityisryhmille. Ohjelmistokehityksessä saavutettavuus voidaan kiteyttää ajatukseen: kuinka kaikki voivat käyttää käkätintäsi?


Saavutettavuuden peruspilarit

Teknisestä näkökulmasta saavutettavuus pohjautuu WCAG 2.1 -ohjeistukseen, joka on yleinen standardi webin sisältämille ohjelmistoille. Se ohjaa kehittämään ohjelmistoja niin, että lopputulos olisi mahdollisimman monen käytettävissä tasavertaisesti. Standardi koostuu neljästä perusperiaatteesta, joiden mukaan palvelun tulisi olla

  • ymmärrettävä – esimerkiksi tekstien tulee olla sujuvaa ja yleistajuista kieltä.
  • hallittava – esimerkiksi sivuston käytön tulee onnistua pelkällä näppäimistöllä.
  • havaittava – esimerkiksi värikontrastien tulee olla riittävän selkeitä. 
  • toimintavarma – esimerkiksi sivustoa täytyy voida käyttää avustavilla teknologioilla, kuten vaikkapa ruudunlukijoilla.

WCAG 2.1 -ohjeistuksen periaatteet tulisi huomioida heti kehityksen alkumetreillä. Saavutettavuus ei ole päälle liimattu elementti, vaan sen pitäisi olla koko suunnittelu- ja kehitystyön ytimessä. Yleensäkin ottaen päälle liimatut ratkaisut eivät joko toimi halutulla tavalla tai sitten jotain tärkeää unohtuu. Saavutettavuuden huomioiminen alusta lähtien auttaa välttymään hassuilta paikkauksilta jälkikäteen.


Saavutettavuus teknisestä näkökulmasta

Teknologia on hyvä tasavertaisuuden edistämisen väline, kun sitä käytetään oikein. Esimerkkinä mainittakoon vaikkapa näkövammaisten käyttämät ruudunlukijat tai tekstitulkit, jotka tulkkaavat tekstiä pistekirjoitukseksi eli brailleksi. Saavutettavuus on kuitenkin paljon muutakin. Saavutettavuuden periaatteiden noudattaminen ei ole ohjelmiston tasolla erityisen hankalaa ja saavutettavuuden peruspilareita voidaan yleensä myös mitata erilaisilla työkaluilla. Esimerkiksi kontrastin tarkastajalla voidaan arvioida, kuinka hyvin erilaiset elementit ovat erotettavissa käyttöliittymässä. Avaan seuraavaksi hieman, mitä edellä mainitut saavutettavuuden periaatteet tarkoittavat teknisestä näkökulmasta. 


Ymmärrettävyys

Esimerkiksi ymmärrettävä ja helposti lähestyttävä kieli parantaa käyttökokemusta riippumatta siitä, onko käyttäjällä rajoitteita vai ei. Myös tekniset ratkaisut luonnollisesti vaikuttavat ohjelman ymmärrettävyyteen käyttöliittymän puolella. Käyttöliittymän ja teknisten ratkaisujen tulisikin tukea toisiaan. Esimerkiksi jos ohjelma käyttää paljon aikaa jonkin toiminnon suorittamiseen, kannattaa käyttäjälle kertoa se selkeästi. Ohjelma on myös hyvä suunnitella niin, että mikään toiminto ei lukitse ohjelmaa täysin. 

Hyvä ymmärrettävyys on usein pitkälti selkeän käyttöliittymän ansiota, mutta myös teknisesti selkeä ohjelmisto auttaa käyttäjää keskittymään oikeisiin asioihin ja käyttämään sitä sujuvasti. Mainittakoon tästä esimerkkinä vaikkapa tekstikenttien validointi: pitääkö kenttään kirjoittaa vain tietynlaista tekstiä tai numeroita vai saako siinä olla erikoismerkkejä? Monet käyttäjälle näkyvät tekniset asiat ovat kehittäjille itsestään selviä, mutta ohjelmisto tulisi suunnitella niin, että sitä pystyy käyttämään kaikenlaisilla lähtökohdilla ja pohjatiedoilla.


Hallittavuus

Hallittavuus tarkoittaa, että ohjelmiston on oltava käytettävissä useammalla kuin yhdellä tavalla, eikä se saa olla sidottu yhteen toimintamalliin. Ohjelmisto ei siis saisi olla käytettävissä esimerkiksi ainoastaan älypuhelimella. WCAG 2.1 -ohjeen mukaisesti kaikki sisältö on oltava käytettävissä myös pelkällä näppäimistöllä. Käyttäjän on esimerkiksi pystyttävä navigoimaan tekstikenttien välillä ja voitava klikata käyttöliittymän linkkejä näppäimistöllä. Ohjelmistoissa ei saa myöskään WCAG 2.1 -standardin mukaan olla niin sanottua ei näppäimistöä -ansaa eli mikään yksittäinen osio ei saa saa pysäyttää ohjelmiston käyttöä täydellisesti. Jos esimerkiksi tekstikenttään voidaan navigoida näppäimistöllä, siitä on myös päästävä pois pelkällä näppäimistöllä.


Havaittavuus

Havaittavuuden vaatimus koskee palvelun sisältöä ja sen esittämistä. Palvelussa käyttäjälle on tarjottava tekstimuotoinen vastine äänelle ja kuvalle ja vastaavasti kuva- ja äänimuotoinen vastine tekstille. Kaikki sisältö pitää tarjota siis useammassa kuin yhdessä muodossa. Havaittavuuteen kuuluu myös sisällön esittäminen selkeästi. Tekstin kontrastien täytyy olla sillä tasolla, että teksti on helposti luettavissa ja äänen ja kuvan täytyy toistua pätkimättä. Tämä koskee sekä designia että teknistä toteutusta. Teknisen toteutuksen haaste on tuoda monimutkaiset toiminnot selkeästi ja yksinkertaisesti esille. Onnistunut design ja hyvä toteutus yhteistyössä suunnittelun kanssa takaa käyttäjälle miellyttävän ja toimivan lopputuloksen.


Toimintavarmuus

Toimintavarmuus on kaikissa palveluissa erittäin tärkeä ominaisuus ilman WCAG 2.1 -vaatimuksiakin. On sanomattakin selvää, että epävarmasti toimiva, hidas ja kaatuileva ohjelmisto turhauttaa käyttäjiä ja saa heidät hakeutumaan muihin palveluihin. Hyvin toteutettu ohjelma toimii nopeasti ja varmasti ilman katkoksia. Ohjelmistojen on myös toimittava yhteen avustavien ohjelmien kuten tekstitulkkien kanssa.

Ohjelman olisi hyvä suorittaa aikaa vaativat toiminnot yhtä aikaa, jotta ohjelma tuntuu sujuvammalta käyttää. Myös rajapinnat, datamallit ja muut ohjelman tarvitsemat tiedot kannattaa toteuttaa siten, että paljon käytössä olevat tiedot ovat helposti saatavilla esimerkiksi välimuistissa. Näin voidaan vähentää muun muassa verkkoliikennettä ja saada ohjelma suorituskykyisemmäksi.

Toimintavarmuutta voidaan mitata esimerkiksi kuormitustestaamisella. Sillä testataan, kuinka helposti ohjelmisto saadaan kaatumaan, kun se joutuu käsittelemään erittäin suurta liikennettä tai datamääriä. Monesti myös testaajan työkalupakkiin kuuluu selkeästi vääränlaisen datan syöttäminen. Tällä tavoin saadaan myös kiinni epätoivotut ominaisuudet tilanteissa, joissa ohjelmisto ei osaa tulkita käyttäjän antamaa tietoa.  

Ohjelmien on myös tärkeää ilmoittaa käyttäjälle, jos jokin estää ohjelman käytön osittain tai kokonaan. On hyvä ilmoittaa selkeästi, missä vika on ja miten käyttäjän tulisi toimia ongelman sattuessa. Ohjelmistojen teknisessä toteutuksessa täytyy varmistaa myös ohjelman virheistä toipuminen, kriittisten virheiden käsittely ja osittainen toiminta. 

Virheistä toipumisella tarkoitetaan sitä, että toteutuksessa pitäisi huomioida mahdollisimman monenlaiset virhetilanteet ja niistä palautuminen. Esimerkiksi modernit web-sovellukset toteutetaan usein noudattaen PWA-käytäntöä, jonka mukaan sovelluksen täytyy muun muassa toimia myös offline-tilassa. Nykypäivänä internet on kaikkialla, mutta katkokset ovat mahdollisia. Siksi on tärkeä huomioida, miten ohjelmisto käyttäytyy, kun yhteyttä ei olekaan. 


Lopuksi 

Saavutettava ohjelmisto on huolellisesti suunniteltu ja toteutettu kokonaisuus. Saavutettavuus koskettaa koko kehitystyötä aina ensimmäisistä hahmotelmista toteutukseen ja ylläpitoon asti. Teknisessä toteutuksessa saavutettavuus ei siis ulotu pelkästään koodiin ja siihen leivottuihin ohjeisiin. Se vaatii koko kokonaisuuden hahmottamista sekä kehittäjien ja suunnittelijoiden tiivistä yhteistyötä ja käyttäjien saappaisiin astumista. Koodarin haaste on toteuttaa kaikki ohjelmistokehityksen elementit niin, että ne toimivat harmonisesti yhteen keskenään ja erilaisten käyttäjien kanssa. 

Saavutettavuus on tärkeää, eikä pelkästään siksi, että laki niin sanoo. Sen ydin on tarjota kaikille ihmisille parempi käyttökokemus ja yhdenvertainen mahdollisuus käyttää digitaalisia palveluita. Saavutettavuus ei tarkoita, että asioista pitäisi tehdä hankalampia, päinvastoin. Se vaatii ainoastaan ajattelutavan muutosta suunnittelu- ja kehitystyöhön. Ennen kaikkea kannattaa pitää mielessä, että saavutettavuus on kaikkien etu, myös kehittäjän. Loppujen lopuksi, kun oikein silmin katsotaan, jos softasi on helppo käyttää jonkinlaisen rajoitteen kanssa, on se todennäköisesti helppo käyttää myös ilman sellaista.

Haluatko kuulla lisää tästä aiheesta? Jätä yhteystietosi niin olemme yhteydessä.

Lähettämällä lomakkeen hyväksyn tietojeni tallentamisen ja käsittelyn tietosuojaselosteen mukaisesti.