SlideShare a Scribd company logo
1 of 23
Download to read offline
LAVORARE CON
TECNOLOGIE “COOL”
SENZA RINUNCIARE
ALL’ACCESSIBILITÀ
Emanuele Rampichini Software Engineer @spreaker
“
C’è vero progresso solo quando
i vantaggi di una nuova
tecnologia diventano per tutti.
Henry Ford
Siamo Spreaker
15 dipendenti tra Europa e Stati Uniti
La nostra piattaforma di Podcasting ha l’obiettivo di dare voce a tutti quelli
che hanno qualcosa da dire
Quando
parliamo di
tutti di cosa
dobbiamo
tenere
conto?
285 Milioni
Di persone con disabilità visive nel
mondo
39 Milioni
Di non vedenti
4
OK, L’ACCESSIBILITA’ E’
IMPORTANTE MA E’ UNA
COSA VECCHIA …
5
… NOI VOGLIAMO COSTRUIRE
APPLICAZIONI BELLE, ED
ESSERE COOL
6
SI PUO’ FARE!
7
8
Spreaker
Studio per
Mac e
Windows
● Console per registrare e
trasmettere podcast
● Scritta con React e basata su
Electron
● Layout e interazione altamente
personalizzati
● Concettualmente è una WebApp
9
Partiamo dai “Low hanging
fruits”
10
<img /> Utilizzate sempre l’attributo alt nelle
vostre immagini con un testo
descrittivo del contenuto.
<img
src=”developer.png”
alt=”A cool developer programming in
ReactJS”
/>
11
<form /> Utilizzate componenti standard per le
vostre form. Utilizzate sempre tag
<label /> per le label e legateli ad i
tag <input /> con l’attributo for:
<label htmlFor=”username”>
</label>
<input
id=”username”
name=”username”
/>
12
NON SI VIVE DI SOLI <div>
https://developer.mozilla.org/en-US/docs/Web/HTML/Element 13
Spingiamoci oltre con ARIA
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA
14
aria-hidden Utilizzate l’attributo aria-hidden per il
markup di pura presentazione, gli
screen reader ignoreranno il
contenuto.
Può essere usato anche quando
mostrate finestre modali per
escludere il contenuto sottostante
dalla navigazione.
15
aria-label Aria label serve per etichettare con una
stringa l’elemento a cui viene applicato.
Può essere utile per aggiungere
descrizioni ad elementi non standard.
E’ molto comodo utilizzato in accopiata
con le region per descrivere zone della
propria applicazione.
16
role=”button”
aria-pressed
Certe volte è proprio impossibile utilizzare
un componente standard per avere una
resa grafica o un comportamente
soddisfacente.
Con role button possiamo istruire gli screen
reader su cosa è effettivamente un bottone,
anche senza utilizzare il tag <button>.
In combinazione con l’attributo aria pressed
possiamo rappresentare bottoni di tipo
toggle.17
role=”checkbox”
aria-checked
Componenti che hanno
comportamento di una checkbox
ma non lo sono possono essere
resi accessibili con questa
accoppiata di attributi.
18
role=”tablist”
role=”tabpanel”
role=”tab”
aria-selected
Possiamo utilizzare questi attributi
per istruitre gli screen reader su una
struttura a tab.
Utilizziamo il ruolo tablist per definire
la zona di selezione dei tab.
Utilizziamo tab e aria selected per
identificare quali sono gli attivatori e
quale è selezionato.
Utilizziamo tabpanel per identificare
il contenuto del tab.
19
role=”region”
aria-label
Con l’accoppiata del ruolo region e
di una label possiamo definire delle
zone navigabili della nostra
applicazione.
Questa accoppiata è molto utile
quando si hanno layout complessi
all’interno dell’applicazione.
Spreaker Studio per Desktop ne fa un
uso estensivo.
20
aria-live L’attributo aria live serve per marcare
delle zone che hanno un contenuto
dinamico non legato all’interazione
utente.
Ad ogni cambiamento lo screen
reader andrà a leggere il nuovo
contenuto.
Possono essere associate delle
policy per la rilettura:
off | polite | assertive
21
22
DEMO TIME!
Grazie! Emanuele Rampichini
Software Engineer @spreaker
Get It Touch
emanuele.rampichini@gmail.com
@emanuele_r

More Related Content

Similar to Lavorare con tecnologie "Cool" senza rinunciare all'accessibilità

wow factor apps and ux design techniques ( for i phone and ipad )
wow factor apps and ux design techniques ( for i phone and ipad )wow factor apps and ux design techniques ( for i phone and ipad )
wow factor apps and ux design techniques ( for i phone and ipad )
Acrmnet s.r.l.
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2016
 
117 add3cd01
117 add3cd01117 add3cd01
117 add3cd01
Mic Apix
 
Define & design apps for success
Define & design apps for successDefine & design apps for success
Define & design apps for success
Acrmnet s.r.l.
 

Similar to Lavorare con tecnologie "Cool" senza rinunciare all'accessibilità (20)

Android programming
Android programmingAndroid programming
Android programming
 
wow factor apps and ux design techniques ( for i phone and ipad )
wow factor apps and ux design techniques ( for i phone and ipad )wow factor apps and ux design techniques ( for i phone and ipad )
wow factor apps and ux design techniques ( for i phone and ipad )
 
Drupal Day 2011 - MobileD!
Drupal Day 2011 - MobileD!Drupal Day 2011 - MobileD!
Drupal Day 2011 - MobileD!
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
 
Android vs iOS
Android vs iOSAndroid vs iOS
Android vs iOS
 
Designing Flex and AIR applications
Designing Flex and AIR applicationsDesigning Flex and AIR applications
Designing Flex and AIR applications
 
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?Ideare un app e farla fruttare: quanti modi? Quale scegliere?
Ideare un app e farla fruttare: quanti modi? Quale scegliere?
 
corso d'aggiornamento sulla LIM
corso d'aggiornamento sulla LIMcorso d'aggiornamento sulla LIM
corso d'aggiornamento sulla LIM
 
App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?App di successo quali strumenti? e le performance?
App di successo quali strumenti? e le performance?
 
Enabling DevOps for Machine Learning with Azure Pipelines
Enabling DevOps for Machine Learning with Azure PipelinesEnabling DevOps for Machine Learning with Azure Pipelines
Enabling DevOps for Machine Learning with Azure Pipelines
 
Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2Introduzione alla programmazione android - Android@tulug lezione 2
Introduzione alla programmazione android - Android@tulug lezione 2
 
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouchProgrammiamo iPhone e iPad (e non solo!) con MonoTouch
Programmiamo iPhone e iPad (e non solo!) con MonoTouch
 
117 add3cd01
117 add3cd01117 add3cd01
117 add3cd01
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Sviluppo Di Applicazioni Su I Os
Sviluppo Di Applicazioni Su I OsSviluppo Di Applicazioni Su I Os
Sviluppo Di Applicazioni Su I Os
 
Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?Cloud & No-Coding: come fare su Azure?
Cloud & No-Coding: come fare su Azure?
 
Total Testing in DevOps
Total Testing in DevOpsTotal Testing in DevOps
Total Testing in DevOps
 
Processing -guida_introduttiva_alla_pro
Processing  -guida_introduttiva_alla_proProcessing  -guida_introduttiva_alla_pro
Processing -guida_introduttiva_alla_pro
 
Open source un'opportunità di business
Open source un'opportunità di businessOpen source un'opportunità di business
Open source un'opportunità di business
 
Define & design apps for success
Define & design apps for successDefine & design apps for success
Define & design apps for success
 

More from Emanuele Rampichini

Coderetreat 2013 @cowo42 (Osimo - AN)
Coderetreat 2013 @cowo42 (Osimo - AN)Coderetreat 2013 @cowo42 (Osimo - AN)
Coderetreat 2013 @cowo42 (Osimo - AN)
Emanuele Rampichini
 

More from Emanuele Rampichini (8)

What is quality? Why should i care?
What is quality? Why should i care? What is quality? Why should i care?
What is quality? Why should i care?
 
I segreti di una campagna di crowdfunding civico di successo
I segreti di una campagna di crowdfunding civico di successoI segreti di una campagna di crowdfunding civico di successo
I segreti di una campagna di crowdfunding civico di successo
 
How to push a react js application in production and sleep better
How to push a react js application in production and sleep betterHow to push a react js application in production and sleep better
How to push a react js application in production and sleep better
 
Building a Desktop Streaming console with Electron and ReactJS
Building a Desktop Streaming console with Electron and ReactJSBuilding a Desktop Streaming console with Electron and ReactJS
Building a Desktop Streaming console with Electron and ReactJS
 
Building a Desktop Streaming console with Node.js and WebKit
Building a Desktop Streaming console with Node.js and WebKitBuilding a Desktop Streaming console with Node.js and WebKit
Building a Desktop Streaming console with Node.js and WebKit
 
Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014Speed up your Titanium app development with automated tests - TiConf EU 2014
Speed up your Titanium app development with automated tests - TiConf EU 2014
 
AngularDevConf - Tools and testing
AngularDevConf - Tools and testingAngularDevConf - Tools and testing
AngularDevConf - Tools and testing
 
Coderetreat 2013 @cowo42 (Osimo - AN)
Coderetreat 2013 @cowo42 (Osimo - AN)Coderetreat 2013 @cowo42 (Osimo - AN)
Coderetreat 2013 @cowo42 (Osimo - AN)
 

Lavorare con tecnologie "Cool" senza rinunciare all'accessibilità

  • 1. LAVORARE CON TECNOLOGIE “COOL” SENZA RINUNCIARE ALL’ACCESSIBILITÀ Emanuele Rampichini Software Engineer @spreaker
  • 2. “ C’è vero progresso solo quando i vantaggi di una nuova tecnologia diventano per tutti. Henry Ford
  • 3. Siamo Spreaker 15 dipendenti tra Europa e Stati Uniti La nostra piattaforma di Podcasting ha l’obiettivo di dare voce a tutti quelli che hanno qualcosa da dire
  • 4. Quando parliamo di tutti di cosa dobbiamo tenere conto? 285 Milioni Di persone con disabilità visive nel mondo 39 Milioni Di non vedenti 4
  • 5. OK, L’ACCESSIBILITA’ E’ IMPORTANTE MA E’ UNA COSA VECCHIA … 5
  • 6. … NOI VOGLIAMO COSTRUIRE APPLICAZIONI BELLE, ED ESSERE COOL 6
  • 8. 8
  • 9. Spreaker Studio per Mac e Windows ● Console per registrare e trasmettere podcast ● Scritta con React e basata su Electron ● Layout e interazione altamente personalizzati ● Concettualmente è una WebApp 9
  • 10. Partiamo dai “Low hanging fruits” 10
  • 11. <img /> Utilizzate sempre l’attributo alt nelle vostre immagini con un testo descrittivo del contenuto. <img src=”developer.png” alt=”A cool developer programming in ReactJS” /> 11
  • 12. <form /> Utilizzate componenti standard per le vostre form. Utilizzate sempre tag <label /> per le label e legateli ad i tag <input /> con l’attributo for: <label htmlFor=”username”> </label> <input id=”username” name=”username” /> 12
  • 13. NON SI VIVE DI SOLI <div> https://developer.mozilla.org/en-US/docs/Web/HTML/Element 13
  • 14. Spingiamoci oltre con ARIA https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA 14
  • 15. aria-hidden Utilizzate l’attributo aria-hidden per il markup di pura presentazione, gli screen reader ignoreranno il contenuto. Può essere usato anche quando mostrate finestre modali per escludere il contenuto sottostante dalla navigazione. 15
  • 16. aria-label Aria label serve per etichettare con una stringa l’elemento a cui viene applicato. Può essere utile per aggiungere descrizioni ad elementi non standard. E’ molto comodo utilizzato in accopiata con le region per descrivere zone della propria applicazione. 16
  • 17. role=”button” aria-pressed Certe volte è proprio impossibile utilizzare un componente standard per avere una resa grafica o un comportamente soddisfacente. Con role button possiamo istruire gli screen reader su cosa è effettivamente un bottone, anche senza utilizzare il tag <button>. In combinazione con l’attributo aria pressed possiamo rappresentare bottoni di tipo toggle.17
  • 18. role=”checkbox” aria-checked Componenti che hanno comportamento di una checkbox ma non lo sono possono essere resi accessibili con questa accoppiata di attributi. 18
  • 19. role=”tablist” role=”tabpanel” role=”tab” aria-selected Possiamo utilizzare questi attributi per istruitre gli screen reader su una struttura a tab. Utilizziamo il ruolo tablist per definire la zona di selezione dei tab. Utilizziamo tab e aria selected per identificare quali sono gli attivatori e quale è selezionato. Utilizziamo tabpanel per identificare il contenuto del tab. 19
  • 20. role=”region” aria-label Con l’accoppiata del ruolo region e di una label possiamo definire delle zone navigabili della nostra applicazione. Questa accoppiata è molto utile quando si hanno layout complessi all’interno dell’applicazione. Spreaker Studio per Desktop ne fa un uso estensivo. 20
  • 21. aria-live L’attributo aria live serve per marcare delle zone che hanno un contenuto dinamico non legato all’interazione utente. Ad ogni cambiamento lo screen reader andrà a leggere il nuovo contenuto. Possono essere associate delle policy per la rilettura: off | polite | assertive 21
  • 23. Grazie! Emanuele Rampichini Software Engineer @spreaker Get It Touch emanuele.rampichini@gmail.com @emanuele_r