Programmare per tutti: il lavoro del team tecnico sull’accessibilità

Il programmatore Davide Marchi al lavoro sull'accessibilità

Negli ultimi due articoli del blog abbiamo approfondito il tema dell’accessibilità raccontando il lavoro di Lais Kantor Caserta e Danila Bigazzi – rispettivamente consulente per l’accessibilità e grafica e UI/UX designer di Comuni-Chiamo. Ci sono altre persone che si impegnano per garantire l’accessibilità dei nostri applicativi: i programmatori del team tecnico. Si chiamano Matteo Buferli, Davide Marchi e Daniele Cortesi, ed è soprattutto grazie a loro che Comuni-Chiamo esiste e funziona. Oggi diamo spazio al loro punto di vista, e cerchiamo di capire come contribuiscono all’accessibilità di Comuni-Chiamo.

Prima di cominciare, vale la pena sottolineare che il tema dell’accessibilità è stato importante fin dall’inizio, nel lontano 2011. Matteo, uno dei fondatori e vera colonna portante di Comuni-Chiamo, a tal proposito dice: “Siamo stati fortunati. Per anni abbiamo avuto il piacere di lavorare con Jacopo Solmi, che fin dall’inizio ci ha spiegato l’importanza dell’accessibilità e ci ha incoraggiato a lavorarci. Ammetto che inizialmente, da tecnico, ero scettico e non riuscivo a capirne tutti i benefici. Approfondendo il tema ho cambiato presto idea, e come me tutto lo staff tecnico. Oggi siamo fieri di dedicare tutte queste energie all’accessibilità.”

L’accessibilità dal punto di vista di un programmatore

Dal punto di vista di un programmatore, che cosa significa garantire l’accessibilità?

[Daniele Cortesi]  Per quanto riguarda il web, vuol dire strutturare la pagina html secondo gli standard di accessibilità del W3C (World Wide Web Consortium). Bisogna dare alcuni attributi a vari elementi che magari non sono immediatamente visibili all’utente ma che vengono letti dagli screen reader. A livello di programmazione, però, non ha quasi alcuna implicazione.

[Davide Marchi] All’inizio pensavo all’accessibilità come a una funzionalità secondaria, qualcosa “in più” da aggiungere in un secondo momento. Oggi, invece, lavorare in ottica accessibilità per me significa semplicemente lavorare. Per Comuni-Chiamo mi occupo soprattutto delle app. Se devo realizzare o modificare un componente o una schermata dell’app, parto già dal presupposto che la prima cosa da fare è renderla accessibile per tutti. 
Dal punto di vista tecnico, garantire l’accessibilità significa rispettare le linee guida, come il già citato standard del W3C e la documentazione Apple e Android. Vuol dire anche assicurarsi che ogni componente si possa usare anche tramite tecnologie assistive come gli screen reader (VoiceOver per iOS e TalkBack per Android). 

[Matteo Buferli] Condivido quanto detto dai colleghi. Aggiungerei che il fatto di scegliere con attenzione le librerie e progettare l’architettura del front end come accessibile fin dall’inizio riduce molto i problemi di progettazione. Anzi, spesso questo lavoro facilita molto l’implementazione. 

Per voi, quanto lavoro in più comporta questa attenzione all’accessibilità?

[MB] Per imparare ci vuole sempre un po’ di tempo. In generale, comunque, dopo una fase iniziale più faticosa le energie da dedicare a questi aspetti non influiscono quasi per nulla sui tempi di lavoro. 

[DM] Sicuramente lavorare sull’accessibilità comporta un minimo di attenzione in più, non tanto in fase di sviluppo quanto poi in fase di test. Oltre a fare i normali test sul funzionamento delle funzionalità, devi testare tutto anche con le tecnologie assistive. È faticoso perché mi rendo conto che, nonostante la sempre maggior confidenza, non avrò mai la stessa sensibilità di chi le usa per necessità. Magari qualcosa per me funziona, ma quando poi viene testato da utenti reali ricevo feedback di scenari a cui non avevo pensato. A livello di codice, invece, il lavoro da fare in più è davvero poco.

[DC] Parlando di programmazione “pura”, lato web non c’è quasi niente da fare in più. Si tratta più di strutturare bene i contenuti delle pagine html. Ad esempio non bisogna saltare alcun elemento <h> (sono gli heading, di solito usati per i titoli) e usare un solo <h1> (il titolo di primo livello, considerato il solo e unico titolo di tutta la pagina). Oppure si deve usare il tag <main> per indicare dove comincia il contenuto principale della pagina. Per lavorare bene devi fare delle cose che altrimenti magari non faresti, in primis provare a navigare il sito senza mouse e tramite screen reader. 

HTML (HyperText Markup Language) è il linguaggio di marcatura usato per le pagine web. Il suo scopo è strutturare i contenuti delle pagine associandogli vari tag (marcatori, per esempio <h1> per i titoli di primo livello) che ne specificano funzione e formattazione grafica.

Lavorare sull’accessibilità: procedure e strumenti

Potete farmi qualche esempio pratico di cose che fate o avete fatto per migliorare l’accessibilità di Comuni-Chiamo?

[DC] Per il momento, il mio lavoro consiste principalmente nel costruire i nuovi grafici in cui verranno visualizzati i dati delle segnalazioni. Per esempio ho “nascosto” allo screen reader dei pezzi di grafico che il software leggeva per errore. Per ogni grafico ho creato una tabella nascosta equivalente destinata solo a essere letta dallo screen reader. Così anche chi non vede può fruire i dati rappresentati visivamente. 

[DM] Per l’app Comuni-Chiamo ho costruito dei veri e propri componenti riutilizzabili basati sui principi di accessibilità. Mi riferisco ad esempio al ridimensionamento dei testi in base alla grandezza del font impostata dall’utente, oppure alla presenza degli alt text nelle immagini per descriverle. Ancora, per migliorare la navigazione tramite screen reader alcuni elementi vengono raggruppati. 

Per alcuni componenti dell’app Android ho implementato le accessibility actions, che sono un modo alternativo per permettere a chi usa tecnologie assistive di eseguire una certa azione. Nello specifico nella sezione dei promemoria rifiuti è possibile attivare/disattivare le notifiche di un promemoria, modificarlo o eliminarlo senza dover navigare con lo screen reader fino ai singoli pulsanti.

[MB] Io sono parte meno attiva del processo, perché sono specializzato in ambiti dove sono richiesti altri principi. Ma do sempre il mio contributo quando dobbiamo fare scelte complesse. Per noi tecnici in questi mesi la parte difficile è convertire la porzione di software che non è stato progettato così. Se fin dal 2011 avessimo tenuto conto dell’accessibilità, oggi il nostro software sarebbe migliore. In parte lo riscriveremo, in parte lo sistemeremo, cercando di colmare le lacune il prima possibile. 

Che strumenti usate per controllare e validare il vostro lavoro?

[DC] Per ora uso solo lo screen reader open source NVDA

[Davide] Gli strumenti che uso cambiano in base ai sistemi operativi. In ambiente iOS

  • Uso VoiceOver per verificare che l’app sia utilizzabile con lo screen reader;
  • Zoom, per verificare che immagini e testi siano leggibili anche quando ingranditi del 200% o più. Controllo anche che i servizi rimangano accessibili anche con i testi ridimensionati;
  • Controllo che i testi rimangano accessibili anche quando un utente modifica le impostazioni dei colori;
  • Uso Accessibility Inspector per testare l’accessibilità dei singoli componenti dell’app;
  • Quando scrivo il codice, SwiftLint mi aiuta dandomi già qualche suggerimento per migliorare l’accessibilità.

Per quanto riguarda invece Android

  • Come screen reader uso TalkBack;
  • Per controllare l’ingrandimento degli elementi e dei testi uso questo strumento, per verificare l’accessibilità dei testi ingranditi quest’altro;
  • Per verificare l’accessibilità dopo la modifica dei colori, sfrutto questo;
  • Uso anche l’app Accessibility Scanner di Google, che permette di fare screenshot e video all’app e dà feedback importanti sulle parti non accessibili o migliorabili; 
  • In fase di scrittura del codice, in questo caso mi faccio dare suggerimenti dal linter di Android

Questi aiutanti digitali sono fantastici, ma alla fine tutto viene sempre e comunque revisionato da Laís, la nostra consulente per l’accessibilità. Con una sensibilità maggiore rispetto ai tool di test automatici, mi dà feedback su aspetti che magari mi sono sfuggiti. Inoltre, spesso riceviamo suggerimenti importantissimi dagli utenti che usano realmente le app.

L’espressione “accessible by design” indica quei prodotti e servizi che vengono pensati come accessibili fin dalla fase di progettazione. In questi casi l’accessibilità non è un requisito secondario o un “di più” aggiunto in un secondo momento, ma una caratteristica fondamentale da tenere a mente in ogni fase del progetto e dell’implementazione.

L’importanza dell’accessibilità (e qualche consiglio di lettura per approfondire)

Al di là degli aspetti tecnici, perché credete che l’accessibilità sia un valore importante? 

[MB] Ho avuto la fortuna di vedere come lavorano persone che hanno bisogno di strumenti assistivi per usare internet. Mi sono detto che se i servizi che sviluppo non possono essere usati da tutti non sto facendo abbastanza bene il mio lavoro

[DM] Diciamocelo, la vita ci mette già abbastanza a dura prova ogni giorno, no? Mi piace dedicare le mie energie alla creazione di app che non aggiungono difficoltà a quelle già esistenti. Vorrei che i nostri prodotti fossero usati dal maggior numero di utenti con il minor numero di impedimenti possibile.

[DC] Sono d’accordo con Davide, e, per non ripetermi, aggiungo un motivo più pratico. L’accessibilità è importante perché se le persone riescono a essere (più) produttive con ogni strumento si genera più ricchezza, non solo in termini economici. E la qualità della vita aumenta. 
Purtroppo, dove lavoravo prima non c’era la minima attenzione al tema, non c’era consapevolezza (nemmeno da parte mia). Mi pare che non se ne sia parlato nemmeno all’università, se non tra parentesi. In generale credo che gli strumenti di accessibilità non si conoscano proprio. Io ho sempre ascoltato podcast e audiolibri, ma non sapevo che avrei potuto farmi leggere da uno screen reader qualsiasi cosa. In certi momenti saperlo mi avrebbe fatto comodo!

Avete seguito o seguito corsi specifici per formarvi e rimanere aggiornati sul tema?

[DC] Per ora nulla di formale, guardo dei tutorial su YouTube per un’infarinatura sull’argomento o per aspetti più specifici su cui devo lavorare. 

[MB] Nel team tecnico io sono quello meno ferrato sull’argomento accessibilità, quindi cerco di imparare il più possibile dagli altri. Su temi verticali come questo soltanto alcuni possono approfondire tutti gli aspetti. Ogni lunedì mattina noi tecnici ci allineiamo per decidere gli obiettivi settimanali da raggiungere, e in questa occasione possiamo condividere conoscenze e temi specifici.

[DM] Non ho fatto corsi specifici, ma seguo con costanza gli eventi e i webinar organizzati da Accessibility Days e altri eventi in cui il tema dell’accessibilità è presente. Oltre a questo, mi documento in autonomia sia tramite la documentazione ufficiale dei sistemi Apple e Android sia tramite altro materiale (articoli, blog, video ecc.). Al momento i canali in cui trovo le informazioni migliori sono:

Ho notato che negli ultimi anni la sensibilità sul tema sta aumentando, probabilmente per via di tutte le nuove normative a livello europeo. Ma ho la sensazione che il lavoro da fare sia ancora tanto.


I nostri programmatori questo lavoro continueranno a farlo. E, con loro, tutto il team di Comuni-Chiamo. Se il tuo Ente è alla ricerca di un partner tecnologico davvero attento all’accessibilità, non ti resta che compilare il modulo qui sotto per chiederci informazioni! 🙂