Это текст для тех, кто хочет разрабатывать программы с учётом ограничений разных людей — тех, кто плохо видит, слышит, не может управлять курсором и т. д. Начнём с базы — для тех, кто плохо видит.
Что такое скринридер
Скринридер — это специальная программа, которая озвучивает всё, что происходит на экране.
Что озвучивает скринридер:
- какое приложение сейчас активно;
- пункты меню;
- названия элементов интерфейса;
- кнопки и ссылки;
- назначение и содержимое полей ввода;
- текст на экране;
- набираемые символы;
- выделенный текст;
- системные сообщения и содержимое диалоговых окон.
Переключаться между элементами, окнами и контентом можно с помощью сочетаний клавиш. В каждом скринридере они разные, но Tab работает более-менее везде — с помощью этой клавиши можно перемещаться по содержимому окна и получить представление о том, что перед нами за программа и что она делает.
Пример работы скринридера на MacOS (с таймкода):
Скринридер NVDA читает сайт на русском (с таймкода)
Работа скринридера TalkBack на Android (с таймкода)
Как скринридер понимает, что и как озвучивать
Во время работы скринридер получает от операционной системы служебную информацию: какой элемент активен и что с ним можно делать. С помощью синтеза голоса ридер зачитывает эту информацию. Например:
- журнал яндекс практикума ссылка;
- кнопка подписаться;
- список два из трёх контакты;
- поле ввода почта пустое.
Всё это работает только в том случае, если приложение делится данными с операционной системой и скринридером. Если что-то запрограммировано не по стандарту и не общается с операционной системой, ничего не прочитается.
Примеры скринридеров
В Windows есть свой скринридер «Экранный диктор», вызывается нажатием Win+Ctrl+Enter.
В MacOS скринридер VoiceOver тоже встроен в систему. Настраивается в панели управления на экране «Универсальный доступ» (Accessibility).
Есть и другие скринридеры:
- NVDA и Jaws для Windows;
- TalkBack, который встроен в Андроид.
Сторонние скринридеры в некоторых ситуациях работают лучше встроенных — у них больше настроек, есть поддержка автоматизации и другие дополнительные возможности.
Проблемы с доступностью в разных программах
Сейчас версия для слабовидящих обязательно должна быть только у государственных и муниципальных программ и сервисов, всё остальное — по желанию разработчиков.
Чтобы скринридер получал нужную информацию, программистам нужно потратить много сил:
- добавить подписи и описание к каждому элементу интерфейса;
- настроить правильный порядок переключения элементов;
- скрыть для скринридера те элементы, которые озвучивать не нужно;
- проверить всё это в деле и исправить, если что-то пошло не так.
И это нужно сделать для каждого окна в приложении, а потом поддерживать в каждой следующей версии. Это дорого и долго. По этой причине у большинства программ нет полноценной поддержки работы для слабовидящих людей, но даже у крупных сервисов бывают такие проблемы.
Например, пользоваться Телеграмом с помощью скринридера не получится — он просто не отдаёт скринридеру ни одного события, которое там происходит. Даже если мы выделим текст мышкой внутри переписки, скринридер ничего не озвучит: скринридер сообщит, что перед нами пустое окно Телеграма, и всё.
С другой стороны, многие современные российские программы и сервисы оптимизируют свой софт под скринридеры. Например, Яндекс полностью переработал свои основные сервисы, чтобы ими было удобно пользоваться с помощью скринридера: почту, браузер, поиск, такси и карты.
Сравните названия старых и новых элементов, которые озвучивает скринридер в приложении почты:
Скринридеры и сайты
В вебе задача скринридера — получить от браузера содержимое страницы, понять, что на ней есть, и озвучить это в нужном порядке. Браузеры ничего не знают о содержимом и просто отдают внутреннюю структуру документа, а скринридер сам уже разбирается, что с ним делать.
Со страницами есть одна общая проблема: если разработчик не предусмотрит работу с сайтом через скринридер и не добавит специальные параметры и теги, то полноценно работать с таким сайтом не получится. Технически скринридер прочитает всё, что ему будет доступно на странице. Но, скорее всего, такое месиво из элементов будет неудобно слушать.
Что дальше
В следующий раз поговорим о специальных атрибутах для HTML-тегов — они помогают скринридерам понимать, что находится на странице, как эти элементы себя ведут и как их озвучивать.