par Patrick Raffinat
Cet article peut être librement diffusé à l’identique dans la limite d’une utilisation non commerciale suivant la license CC-by-nc-nd : http://creativecommons.org/licenses/by-nc-nd/3.0/fr/legalcode
A) Introduction
Dans le N°52 de MathémaTICE, C. Declercq a souligné le défaut d’accessibilité de Scratch aux élèves présentant divers handicaps. Dans la conclusion de son article, il a appelé à commentaires et à contributions les lecteurs intéressés par cette problématique. Cela m’a conduit à approfondir le sujet pour Blockly, un autre logiciel de programmation par blocs que je connais beaucoup mieux que Scratch.
Au départ, je pensais simplement à réagir (par mail) à une remarque de C. Declercq qui déplorait la difficulté de « lecture écran d’un programme sur la version de Scratch en ligne » : je lui aurais alors signalé que Blockly ne nécessitait pas de recours à des « outils externes de type loupe », puisqu’il peut facilement être configuré pour augmenter la taille des blocs avec la molette de la souris. Mais comme le sujet de l’accessibilité a piqué ma curiosité, j’ai finalement décidé de ne pas en rester là et d’explorer d’autres pistes :
- grossissement des menus contextuels et des bulles d’aide (illustration).
- navigation dans un programme à l’aide du clavier (flèches de déplacement).
- installation d’un retour vocal pour indiquer, en cas de handicap visuel important, sur quel bloc on se trouve.
- ...
Ma curiosité m’a même conduit à explorer la reconnaissance de la parole, un domaine dont j’ignorais tout, y compris en tant que simple utilisateur. Avant d’y revenir en détail dans l’article, voici quelques résultats obtenus :
B) Piste 1 : agrandir pour mieux voir
Menus
Comme je l’ai signalé en introduction, Blockly permet d’agrandir les blocs d’un programme avec la molette de la souris. Mais il n’y a hélas pas de dispositif prévu pour agrandir les menus, que ce soit le menu principal ou les nombreux menus contextuels.
J’ai donc cherché dans les sources de Blockly des feuilles de styles, c’est à dire des fichiers dédiés à la mise en forme de pages web. Mais, contrairement à de nombreuses applications web, ce n’est pas cette solution qui a été retenue par les développeurs de Blockly, ce qui a compliqué ma tâche [1].
Après diverses péripéties, voici le résultat auquel je suis parvenu :
C) Piste 2 : navigation dans les blocs
Flèches de déplacement
Pour naviguer dans les blocs, un dispositif alternatif à la souris peut être utile à des élèves en situation de handicap moteur.
Parmi les dispositifs alternatifs, C. Declercq évoque les « raccourcis clavier », ce qui m’a conduit à rechercher (sans trop y croire) des informations exploitables sur la gestion des évènements liés au clavier dans le forum de Blockly. Et, comme cela arrive de temps en temps, j’ai trouvé une pépite à partir de ce message du forum : une démonstration très convaincante, et des fichiers que j’ai téléchargés [3] afin de pouvoir les réutiliser dans mes propres extensions de Blockly.
Pour tester la navigation avec les flèches du clavier, il faut cliquer sur ce lien, puis choisir un des programmes disponibles (bouton Load). Je vous invite vivement à essayer, car j’ai été bluffé par les résultats obtenus.
Outre les flèches du clavier, on peut aussi utiliser la touche de tabulation qui, pour l’exemple ci-dessous, ouvre même la liste déroulante du bloc atteint à partir du bloc Si :
Pour finir, j’ajouterai que la touche espace du clavier fait apparaître le menu contextuel d’un bloc.
Bloc courant et message vocal
Pour aider les élèves souffrant d’un handicap visuel important à se repérer lorsqu’ils naviguent dans les blocs d’un programme, on peut aussi songer à leur donner des informations sur le bloc courant. Cela peut être un message textuel (en bas de page et très agrandi) ou un message vocal : tester.
D) Piste 3 : reconnaissance vocale
Introduction
Dans son article, C. Declercq a émis le souhait que des commandes vocales soient proposées comme dispositif alternatif à la souris pour des handicapés moteur.
J’ai donc exploré cette piste avec Chrome, le seul navigateur à proposer la reconnaissance vocale sur mon ordinateur portable. L’inconvénient de Chrome est que Google facture ce service au delà d’une heure d’utilisation par mois. Mais comme Chrome respecte les préconisations du W3C, organisme qui établit les normes du web, mon code devrait être portable lorsque d’autres navigateurs intègreront la reconnaissance vocale : or, cela semble être en bonne voie pour Firefox...
Avant d’écrire la moindre de ligne de code, j’ai d’abord effectué quelques tests sur le site http://monwebfacile.free.fr/ (rubrique « synthèse vocale ») pour savoir si la reconnaissance vocale de Chrome donnait des résultats concluants. Globalement c’est le cas, mais certaines surprises ne sont pas à exclure : par exemple, Chrome reconnaît correctement « variable y égal x », mais transforme le « x » en « 6 » pour « variable y égal deux fois x plus trois ». J’ai aussi observé sous quelle forme était retranscrit un ordre vocal, information essentielle pour pouvoir ensuite l’interpréter : par exemple, « variable y égal vingt-et-un fois z plus quatre » est retranscrit en « variable y = 21 x z + 4 ».
Dans la suite de l’article, je ferai part des premiers résultats que j’ai obtenus : aux lecteurs en charge d’élèves handicapés de me signaler si mon prototype mérite ou non d’être poursuivi, avec les pistes à privilégier en cas de réponse positive.
Prototype
Le prototype peut être testé à partir de ce lien.
Chaque commande vocale est lancée en cliquant sur le bouton « Son ». Si vous ne voulez pas attendre que le logiciel détecte la fin de la reconnaissance vocale, cliquez sur le bouton « Fin Son ».
Si vous ne disposez pas de la synthèse vocale, il y a un bouton (nommé Alternative) permettant de visualiser l’effet d’une commande en tapant un texte dans une boîte de saisie : par exemple vous pouvez créer des blocs en entrant « variable y = 2 * y + 10 ».
Exemple
Le service de reconnaissance vocale de Chrome étant payant au delà d’une certaine durée, j’ai construit ce programme avec des commandes textuelles (bouton Alternative). Je me suis imposé comme règle de ne jamais déplacer le moindre bloc avec la souris :
- l’attachement (au bloc courant) des blocs créés par une commande est géré par la commande.
- en cas d’erreur, je n’ai donc pas supprimé de blocs en les envoyant à la poubelle, mais avec la touche de suppression.
En procédant ainsi, j’ai obtenu 4 premiers blocs reliés les uns aux autres :
- variable a = 1
- variable b = -3
- variable c = 2
- variable delta = b * b
Pour compléter le calcul de delta, j’ai sélectionné le bloc « b*b » auquel j’ai appliqué cette commande : « -4*a*c ». J’ai ensuite sélectionné le bloc « variable delta = ... » pour que lui soit attaché un bloc « si » avec cette commande : « si delta > 0 ».
Pour que l’affichage de la première solution de l’équation soit inséré dans l’instruction conditionnelle et non après, j’ai fait précéder la commande d’affichage par le mot faire : « faire afficher -b - racine delta ». J’ai ensuite complété le calcul en sélectionnant le bloc « -b - racine delta », puis en lui appliquant cette commande : « / 2 * a ».
E) Conclusion
Les divers articles que j’ai publiés dans MathémaTICE témoignent de l’intérêt que j’accorde à l’enseignement du « codage » au lycée et au collège. Mais, mea culpa, je ne m’étais jamais préoccupé de problèmes d’accessibilité avant d’être alerté sur ce sujet par l’article de C. Declercq.
Son article m’a fait prendre conscience que des efforts devaient être menés pour rendre l’introduction de la programmation par blocs (en cycle 3 et en cycle 4) plus accessible à des élèves en situation de handicap. C. Declercq a mentionné Scratch, le logiciel le plus emblématique, mais j’ai préféré me pencher sur Blockly parce que je me sentais plus compétent pour y apporter des réponses satisfaisantes. Je laisse les lecteurs en juger, en particulier ceux qui travaillent avec des élèves en situation de handicap et connaissent réellement leurs besoins.
Des élèves sans handicap peuvent également tirer parti de mon travail : par exemple, le recours à des commandes a permis d’éviter plusieurs manipulations fastidieuses de blocs pour traiter l’équation du second degré. De plus, cet article m’a conduit à améliorer l’ergonomie des extensions « tortue » et « tableur ».
Si des programmeurs (chevronnés) souhaitent développer des extensions adaptées au handicap, ils peuvent librement s’inspirer des codes sources que je mets à leur disposition. J’ai aussi pensé aux utilisateurs, qui pourront modifier un fichier de configuration pour notamment adapter la taille des menus et des bulles d’aide.
La partie relative aux commandes vocales n’est pas incluse dans ce fichier : il me reste à la développer et à la documenter, ce qui est prévu pour un prochain article.