Автором нашей новой статьи стал Майкл Бернштайн (Michael Bernstein), ведущий разработчик в команде User Interface Platform, в чьи задачи входят вопросы специальных возможностей в Windows. Под специальными возможностями мы понимаем API и функции, позволяющие применять Windows пользователям с различными физическими возможностями. Для этого в состав Windows входит набор специальных утилит и API, используемых сторонними разработчиками для организации поддержки специальных возможностей в их приложениях. Данная тема крайне важна для Microsoft, поэтому при разработке Windows 7 ей уделяется особое внимание. С этой целью в Microsoft организована специальная группа, которая проверяет, насколько легко увидеть, услышать и использовать Windows. Подробнее об инициативах Microsoft, направленных на упрощение доступа к компьютеру пользователей с ограниченными физическими возможностями, можно ознакомиться по адресу http://www.microsoft.com/enable/. Стивен

Добрый день! Меня зовут Майкл Бернштайн и я занимаюсь вопросами специальных возможностей и распознавания речи в Windows 7. В этой статье хотелось бы поделиться некоторыми нашими мыслями по поводу специальных возможностей в Windows 7.

Мы хотим, чтобы Windows 7 стала самой доступной из ОС, когда-либо выпущенных Microsoft. При планировании этой версии выяснилось, что понятие «доступность» не такое простое, как может показаться. «Доступность» в некотором смысле напоминает «безопасность»: либо в системе есть известная проблема, либо система безопасна или доступна. Такой подход, как оказалось, имеет ряд ограничений. Очевидно, что потребности слепых пользователей значительно отличаются от потребностей глухих. Также потребности слепых отличаются от нужд слабовидящих: экранная лупа совершенно бесполезна для одних, и незаменима для других. И что делать в ситуациях, когда какая-то функция в системе хоть и формально доступна (например, когда для выполнения примитивного сценария требуется 36 щелчков мыши), но ее использование не приносит пользователям ничего, кроме разочарования и гнева? Конечно же, по��ятие «доступность» – это далеко не всегда выбор из двух вариантов ответа: да или нет. Тут вопрос в удобстве использования для конкретной группы с индивидуальными потребностями.

Поскольку большинство поступающих к нам вопросов довольно сложны, ответы на них, соответственно, тоже не простые. С целью улучшить доступность Windows 7 мы приняли стратегию, строящуюся на четырех столпах:

I. Создать крепкую основу с помощью компонента UI Automation

В Windows Vista компания Microsoft реализовала новый компонент для обеспечения специальных возможностей – UI Automation. UI Automation дает возможность технологии ассистирования (Assistive Technology или AT – технология, нацеленная на помощь людям с физическими недостатками) программно управлять интерфейсом приложения, а также позволяет приложениям демонстрировать реализованные в них специальные возможности более простым и доступным способом, чем в предыдущих версиях Windows. Благодаря компоненту UI Automation в Windows появилась идея шаблонов управления (Control Patterns): любой из элементов UI может самостоятельно решить, каким образом следует им управлять. Кнопки, к примеру, подразумевают Нажатие, поля со списком – Свертывание и Развертывание. Мы намеренно ввели широкую номенклатуру элементов управления, отказавшись от идеи унификации. Windows Vista стала первой ОС, где мы воспользовались новой концепцией, а Windows 7 станет ее логическим продолжением.

В Windows 7 мы значительно увеличили производительность системы UI Automation и разработали для нее новый API, который сделает иные AT-системы более эффективными. Теперь приложения, написанные на C++, равно как и реализованные с помощью .NET Framework, могут использовать преимущества UI Automation.

Мы проделали огромную работу для того, чтобы тесно интегрировать UI Automation в систему Microsoft Active Accessibility (MSAA), и разработали новые подходы, объединяющие свежие разработки с хорошо зарекомендовавшими себя технологиями. Клиенты UI Automation могут читать информацию из MSAA-приложений и наоборот. Это обеспечивает максимальную доступность системы независимо от использованного API. Поскольку UI Automation и MSAA довольно тесно взаимодействуют, мы решили дать объединенной системе новое имя – Windows Automation API. Новая система является основой для текущих и последующих усилий, направленных на обеспечение доступности Windows.

II. Улучшить наши специальные утилиты

В Windows 7 мы доработали встроенные специальные утилиты. Специалисты Microsoft тесно сотрудничают с компаниями, ведущими разработку различных AT, которые помогают сделать Windows более доступной пользователям с ограниченными физическими возможностями, но и мы ведем независимую разработку утилит, призванных обеспечить пользователей доступом к функциям системы до установки специального программного обеспечения. В Windows 7 мы приняли решение усовершенствовать две утилиты: экранную клавиатуру и экранную лупу.

Наиболее заметным изменением в экранной клавиатуре, пожалуй, является новый интерфейс, хотя, конечно, это далеко не основное изменение. Внешний вид этой утилиты не менялся с момента релиза Windows XP, хотя пользователи просили, по крайней мере, обеспечить возможность изменять ее размер. В Windows 7 мы реализовали эту возможность за счет взаимодействия с разработчиками команды TabletPC, чтобы сделать экранную клавиатуру похожую на клавиатуру, предназначенную для рукописного ввода. Теперь обе панели имеют привлекательный внешний вид и их размеры можно менять. Тем не менее, это разные утилиты, потому что предназначены они для разных задач: пользователи планшетных компьютеров, как правило, динамически переключаются между рукописным вводом и вводом с клавиатуры, а те, кто пользуются экранной клавиатурой, предпочитают использовать режимы, в которых требуется лишь провести курсором над клавишей, если их физические возможности не позволяют осуществлять щелчки мышью. В дополнение к этому мы добавили возможность автоматического завершения слов, которая позволит ускорить ввод текста. Если вы уже имели возможность оценить экранную клавиатуру, то наверное, заметили, насколько с ее помощью ускоряется ввод текста.

Экранная лупа подверглась глубокой переработке. Поведение этой утилиты в Windows Vista и Windows XP было, к сожалению, не столь интуитивным: при наведении лупы на определенную область экрана увеличенный участок появлялся в отдельном окошке, прикрепленном к верхней границе экрана. Наводите на одну область, но видите в другой. Для решения этой проблемы мы нашли два возможных решения: 1) увеличивать весь экран целиком или 2) при наведении лупы увеличивать выделенную область, при этом остальная часть экрана остается нетронутой. Это привело к появлению в Windows 7 двух режимов работы экранной лупы: полноэкранного и режима линзы.

Полноэкранный режим незаменим, когда требуется увеличить размер всех элементов рабочего стола. Если фокус мыши или клавиатуры находится в центре рабочего стола, то стол остается неподвижным, но если переместить фокус к краю, то экранная лупа начнет прокручивать стол. Недостатком такого режима является возможная потеря контекста. Дабы устранить этот досадный недостаток, мы добавили контекстную анимацию, которая показывает ваше текущее местоположение в отношении всего рабочего стола.

Режим линзы полезен, когда необходимо увеличить какой-то определенный элемент рабочего стола. В этом режиме центром линзы является курсор, благодаря чему у пользователя создается впечатление, что он держит в руках линзу. Размер линзы можно изменить, если вам, к примеру, хочется просматривать документ построчно.

Такой дизайн избавил еще от одной проблемы, на которую часто жаловались пользователи: окно экранной лупы занимает слишком много места на рабочем столе. Мы разместили органы управления лупой на маленькой панели, которая при бездействии становится полупрозрачной. Остальные опции доступны через диалог Options. Наконец, практически каждое действие может быть осуществлено с помощью комбинации клавиш, поэтому если вы привыкли пользоваться лишь клавиатурой, вы сможете спокойно обходиться только ей. Win-+, к примеру, увеличит масштаб рабочего стола.

Обе утилиты в значительной степени улучшают доступность системы для пользователей со слабым зрением. Думаю, что эти утилиты окажутся полезны всем, независимо от физических возможностей.

III. Упростить разработку доступного ПО

Windows API, к сожалению, не могут обеспечить доступность сами по себе – серьезная роль в этом вопросе возлагается на плечи Windows-приложений, которые должны предоставлять информацию о доступности прямо в AT-приложения. Например, экранный диктор может быть очень полезен, но что если он не может читать из вашего любимого обозревателя? Такие AT-приложения, как экранные дикторы и лупы являются всего лишь клиентами системы специальных возможностей, а приложения, в которых вы хотели бы воспользоваться ими, являются провайдерами. И лишь комбинация этих двух элементов является гарантом успеха – чтобы добиться максимальной доступности, требуется высококачественный клиент и грамотно написанный провайдер. В экосистеме есть масса провайдеров, поэтому нам сложно выверять грамотность написания каждого.

С целью устранить эту проблему наша команда разработала утилиты UI Accessibility Checker (или для краткости AccChecker) и UI Automation Verify (UIA Verify), которые сканируют приложение (то есть провайдер) и выдают отчет по обнаруженным проблемам с доступностью. Разработчики программного обеспечения могут использовать AccChecker и UIA Verify для обнаружения и устранения проблем до того, как пользователь приложения с ними. Инженеры по качеству ПО вправе использовать их для проверки качества выполненной работы. Мы верим в это, поэтому AccChecker и UIA Verify выпущены c лицензией open-source. Если вы не являетесь программистом, вам вряд ли понадобятся эти утилиты, но как пользователи выиграете от их использования, поскольку они позволяют устранить ошибки до того, как вы их увидите.

IV. Планировать ОС с прицелом на доступность с первого дня

Для обеспечения качества разрабатываемых функций Windows мы воспользовались концепцией, заимствованной из технологии оценки рисков Software Development Lifecycle, которую мы применяли при разработке Windows Vista. Перед непосредственным написанием кода каждая планируемая функция Windows 7 оценивалась с точки зрения доступности. Функции, использующие базовые элементы управления, оказались более доступными, поскольку в Windows предусмотрены провайдеры для готовых компонентов; изощренные элементы требовали дополнительной проработки. Подобный процесс планирования вынудил каждую из команд оценивать риск недоступности той или иной функции. Как только всем функциям присваивался рейтинг риска, список сортировался по степени риска, а моя команда могла обратитьс�� к командам, ведущим разработку функций с высокой степенью риска, обеспечив их необходимыми инструментами и ресурсами для обеспечения доступности функции. Мы, со своей стороны, проверяли, что команды провели достаточное количество тестов и утвердили результаты. В результате большинство функций Windows стали более доступными, нежели в предыдущих релизах, и это благотворно сказывается на общих впечатлениях при работе в Windows 7.

Подводя итог статье, хотелось бы еще раз подчеркнуть, что при разработке Windows 7 мы уделили особое внимание обеспечению доступности. Мы добились хороших успехов в доработке архитектуры и усовершенствовали ставшие традиционными специальные утилиты, среди которых экранная клавиатура и экранная лупа. Утилиты AccChecker и UIA Verify в значительной степени упрощают проверку соответствия приложений существующим AT, а также новым технологиям на базе Windows Automation API. Наш подход к доступности функций в Windows стал более тщательным, последовательным и всеобъемлющим – и все благодаря нескольким сотням инженеров, работающим в различных отделах нашей компании. Мы гордимся своими успехами в Windows 7 и надеемся, что ОС поможет пользователям с ограниченными физическими возможностями проявить свой потенциал да и просто насладиться работой в Windows.

Майкл Бернштайн,

ведущий разработчик в команде User Interface Platform