Lázaro: un trabajo final de mucho impacto social

Somos Matías Melendi y Ángeles Tella Arena, alumnos a punto de egresar de la Tecnicatura en Programación Informática de la Universidad Nacional de Quilmes. Ambos somos ayudantes en la materia Programación con Objetos I, y estamos a punto de defender nuestro trabajo final: Lázaro, un lector de pantalla para Pharo Smalltalk.

Queremos contar cómo fue el proceso de desarrollo, y para eso primero necesitamos contar cómo fue la historia que nos impulsó. Es necesario explicar algunos conceptos que van a ser útiles para su entendimiento:  Smalltalk es un ambiente de programación orientado a objetos. Permite un nivel muy interesante de interacción con el entorno; por eso -y otros detalles en los que no vamos a ahondar- es considerado una excelente herramienta a la hora de enseñar a programar. En la comisión de Programación con Objetos I en la que somos ayudantes, usamos una implementación llamada Pharo.

Todo comenzó con el primer estudiante no vidente de la carrera, quien programa con ayuda de lectores de pantalla. Cuando nos contaron que iba a anotarse en la materia y nos pusimos a investigar qué necesitaba para cursar sin problemas, descubrimos que Pharo no podía ser utilizado junto con lectores de pantalla. Esto es porque se trata de un entorno virtualizado. Traducido a lenguaje humano, digamos que esto hace que la ventana en donde se ejecuta el programa parezca invisible ante el lector de pantalla.

Todos lectores de pantalla están construidos en base a sintetizadores de texto a voz (o TTS, text-to-speech) y es necesario traducir cada uno de los componentes visuales a texto (desde el nombre de una ventana, campos de texto editables, columnas, menúes, etc)

Por esto, tuvimos que buscar alternativas para que él pudiera programar, pero haciendo hincapié en que tenga la misma experiencia interactiva que tenían el resto de sus compañeros. La solución que encontramos para esta situación, y sin saberlo, la primer etapa de nuestro trabajo final, fue hacerle modificaciones a Amber Smalltalk. Esta es otra implementación de Smalltalk, con la particularidad de que se ejecuta en navegadores (tales como Firefox o Chrome). Éstos trabajan en conjunto con lectores de pantalla sin problemas y, casualmente, Amber está inspirado en Pharo, por lo que fue la solución óptima. En la primer devolución de nuestro estudiante destacó que había algunas cosas que eran leídas de forma extraña, por lo que nos encargamos de corregir esos problemas para que él pudiera interpretar todo de manera adecuada.

Al terminar la cursada, este estudiante se incorporó como ayudante al equipo docente, y nos pareció valioso que pudiera usar Pharo para corregir los ejercicios de los alumnos. Así fue que decidimos desarrollar Lázaro como trabajo final.

Nuestra primera idea fue adaptar Pharo para que cualquier lector pueda identificar lo que allí se muestra. Hicimos un estudio de campo en el que elegimos lectores de pantalla para trabajar, tales como NVDA y Orca, entre otros. Gracias a esta investigación técnica, descubrimos que todos lectores de pantalla están construidos en base a sintetizadores de texto a voz (o TTS, text-to-speech). Esto, sumado a que teníamos que implementar la traducción de cada uno de los componentes visuales de Pharo a texto (desde el nombre de una ventana, campos de texto editables, columnas, menúes, etc), nos llevó a darnos cuenta de algo:  estábamos a punto de desarrollar nuestro propio lector de pantalla!

Hablando muy a grandes rasgos, nuestro trabajo se resume a:

  • Captar cada evento importante que ocurre dentro de la ventana de Pharo: Cuando se hace foco en una ventana, se abre un menú, se posiciona el mouse sobre un párrafo de texto u ocurre cualquier otro efecto visual, Pharo envía mensajes llamados Announcements. Gracias a ellos, se puede saber qué elemento visual en particular fue el involucrado, lo que nos permite trabajar con él.
  • Enviar la información captada en forma de texto al sintetizador de voz para que lo transforme:Decidimos qué texto de cada anuncio recibido nos interesa reproducir (el título de una ventana, el contenido de un campo de texto, etc.), y acomodamos la información para que sea leída en un orden coherente.

El trabajo todavía está en proceso; la interfaz gráfica de Pharo y sus anuncios son complejos y tratar cada caso a leer por el lector lleva tiempo. Cuando esté terminado, esperamos que no sólo sea útil para nuestra materia, sino a cualquier persona ciega que desee aprender a programar o trabajar con un entorno de este estilo.

Matias Melendi <m.f.melendi@gmail.com>

Ángeles Tella Arena <angeles.tellaarena@gmail.com>

 

Deja un comentario