-------
| Библиотека iknigi.net
|-------
|  Паван Вора
|
|  Шаблоны проектирования веб-приложений
 -------

   Паван Вора
   Шаблоны проектирования веб-приложений


   Посвящается

   Моей маленькой принцессе Суми


   Благодарность

   Выражаю искреннюю благодарность следующим людям:
   • техническим редакторам – Венди Каслман, Дэвиду Дику, Каарен Хэнсон, Арни Лунду и Дейву Роджерсу – за потраченное время, хорошие советы и полезные комментарии. Их вдумчивые предложения в несколько раз улучшили эту книгу. Однако если в книге остались какие-либо ошибки или слабые места, это моя ответственность и, очевидно, результат того, что я невнимательно следовал их советам;
   • Лену Бисли – за помощь в проведении исследования, а также помощь в редактировании многочисленных черновых вариантов каждой главы книги;
   • команде издательства Elsevier: Мэри Джеймс, моему издателю, за проявленное терпение во время дискуссий со мной, а также за то, что помогала мне следовать намеченному пути и соблюдать сроки; Денис Пенроуз и Диане Серра, за то, что предоставили мне возможность написать книгу на ту тему, которая мне столь интересна; а также технологической группе, включая выпускающего редактора Джоди Аллен и корректора Деборе Прато, за их отличную корректуру и верстку книги;
   • клиентам, коллегам и друзьям, которые наставляют, направляют, выслушивают и поддерживают меня;
   • моей любимой жене Соне – за ее поддержку и терпение в течение долгого времени моей работы над книгой и за то, что не позволяла мне опускать руки в трудные периоды;
   • и Суми – моей маленькой принцессе – за то, что понимала, что папе нужно время на написание книги, и за предложение написать эту книгу, чтобы у него было время играть с ней.

   Паван Вора


   Об авторе

   Паван Вора – основатель и президент компании Alpha Cube, Inc., которая занимается консультированием в области проектирования взаимодействия программы с пользователем. Основные направления деятельности компании – проектирование, анализ и оценка пользовательских интерфейсов программного обеспечения и веб-приложений.
   Он работает в этой сфере более 14 лет и спроектировал пользовательские интерфейсы для широкого диапазона приложений, работающих по схеме «предприятие—потребитель», «предприятие—предприятие», «потребитель для потребителя» и «предприятие—сотрудник».
   Он издал и провел множество уроков и корпоративных практических тренингов по проектированию интернет-сайтов, веб-приложений и шаблонам проектирования в США и по всему миру.
   Паван Вора получил степень магистра, а затем и степень доктора наук в сфере промышленного строительства (в Государственном университете Нью-Йорка в Буффало). Степень бакалавра в сфере промышленного строительства и машиностроения он получил в Техническом институте юбилея Королевы Виктории в Мумбае, Индия.


   Глава 1
   Введение


   Введение

   Все чаще компьютерные приложения разрабатываются на основе веб-технологий, и к ним можно получить доступ с помощью веббраузеров (например, Internet Explorer, Firefox, Safari и Opera). Обычно такие приложения называются веб-приложениями, или размещаемыми приложениями (hosted applications) – приложениями, в основе которых лежит модель программного обеспечения как услуги (SaaS) [1 - SaaS – это модель продажи программного обеспечения, при котором поставщик разрабатывает веб-приложение, занимается его хостингом и управляет им (либо самостоятельно, либо через посредника), предоставляя клиентам возможность пользоваться им через Интернет. Клиенты не платят за право собственности на это программное обеспечение; они оформляют на него платную подписку.] или облачные вычисления (cloud computing) [2 - Веб-приложения считаются одним из видов «облачных вычислений», поскольку приложениями и файлами управляют в пределах «вычислительного облака», состоящего из тысяч компьютеров и серверов, соединенных друг с другом и доступных через Интернет.]. Эти веб-приложения отличаются от более традиционных веб-сайтов в том смысле, что их предназначение – помочь пользователям в выполнении таких задач, как отправка электронных писем, бронирование авиабилетов, поиск домов, оплата счетов, перевод денег, покупка продуктов, рассылка приглашений и т. п. (рис. 1.1–1.4). Веб-сайты, напротив, ориентированы на контент и разрабатываются для поиска и ознакомления с достаточно статической информацией (рис. 1.5).
   Рис. 1.1. Пользователи могут настроить свою электронную почту как в этом примере с Yahoo! Mail, и то же самое можно сделать и в таких клиентских приложениях, как Microsoft Outlook, Mozilla Thunderbird и Eudora

   Рис. 1.2. Пользователи могут искать варианты туристических путевок и осуществлять бронирование билетов с помощью веб-приложений, таких как Expedia

   Рис. 1.3. Пользователи могут найти продающийся дом, узнать его стоимость и увидеть, какие еще дома выставлены на продажу в этом районе. Все это можно сделать на таких сайтах, как Zillow.com

   Рис. 1.4. Пользователи могут совершать покупки на таких сайтах, как Buy.com

   Рис. 1.5. Ознакомиться со статической информацией о компании Ultragrain и ее товарах можно на сайте этой компании (www.ultragram.com)


   Достоинства веб-приложений

   Популярность веб-приложений объясняется тем, что они обладают рядом достоинств. Эти достоинства описаны в данном разделе (Baxley, 2003; Turnbull, 2006).
 //-- Простота доступа --// 
   В большинстве случаев единственный вид программного обеспечения, который необходим для того, чтобы получить доступ и пользоваться веб-приложениями, – это браузер, такой как Internet Explorer, Firefox, Safari и Opera. Чтобы пользоваться веб-приложениями, пользователям не нужно скачивать и устанавливать дополнительное программное обеспечение, хотя в некоторых случаях все же приходится загружать вспомогательные приложения или плагины, такие как Adobe Flash, Java, Microsoft Silverlight и т. д., чтобы получить доступ ко всем частям веб-приложения.
   Более того, так как и приложение, и информация хранятся на серверах поставщика, а не на пользовательских компьютерах, пользователи могут получить доступ к веб-приложениям из практически любого места, где есть подключенный к Интернету компьютер, на котором установлен браузер. Благодаря удаленному хранению данных, пользователи могут делиться информацией и сотрудничать друг с другом; например, они могут совместно пользоваться закладками приложений, такими как Delicious (www.delicious.com) и Furl (www.furl.net), и удаленно совместно работать над одними и теми же документами, применяя повышающие эффективность работы приложения, такие как Google Docs and Spreadsheets (docs.google.com) и Zoho (www.zoho.com).
 //-- Простота применения --// 
   Веб-приложения также популярны среди бизнесменов и разработчиков программного обеспечения, поскольку их можно дорабатывать, обновлять и отлаживать удаленно, при этом пользователям не приходится их устанавливать (или переустанавливать). С этим связано очередное достоинство веб-приложений – их поведение не зависит от операционной системы, установленной на компьютере пользователя. Один и тот же вариант приложения может использоваться практически любым пользователем, вместо того, чтобы создавать отдельные версии приложения для Windows, Macintosh OS X, GNU/Linux и других операционных систем.
 //-- «Обученный» базовый контингент пользователей --// 
   Развитие и распространение Интернета (от 16 миллионов пользователей в декабре 1995 года до почти 1,5 миллиардов пользователей в июне 2008 года согласно данным сайта Internet World Stats www.internetworldstats.com) способствовало тому, что взаимодействие в сети Интернет стало привычным для огромного количества пользователей. Большинство пользователей Интернета сейчас знакомы с терминологией веб-браузеров, например, домашняя страница, назад, вперед, избранное, гиперссылки, кнопки подтверждения и т. д. Принимая во внимание все это и учитывая тот факт, что для пользования веб-приложениями не нужны замысловатые установки, осталось очень мало преград для их использования (или, по крайней мере, для того, чтобы хотя бы с ними ознакомиться). Более того, многими популярными веб-приложениями теперь можно пользоваться бесплатно или бесплатно с ними ознакомиться.
 //-- Надежность и высокий уровень развития связности сети и веб-технологий --// 
   Раньше существенным препятствием для развития веб-приложений являлась ненадежность связности сети и очень нестабильная поддержка веб-стандартов – а именно, HTML, CSS и JavaScript – в веббраузерах. Теперь ситуация изменилась. Поддержка веб-стандартов становится все существеннее, а их несовместимость с браузерами, доводившая раньше разработчиков до отчаяния, уменьшается. Кроме того, связность сети и широкополосный доступ становятся все надежнее, все распространеннее и дешевле в использовании. Согласно результатам исследования Website Optimization, процент домов в США, имеющих широкополосный доступ в Интернет, в марте 2008 года вырос до 57 %, а для активных пользователей сети Интернет он составил 90 % (www.websiteoptimization.com/bw/0807/). Это послужило надежной основой для появления визуальных средств разработки и инфраструктур, способствующих развитию веб-приложений.


   Трудности в разработке интерфейсов для веб-приложений

   Несмотря на все эти достоинства и возрастающую пользу, разработка интерфейсов для веб-приложений остается проблематичной. Сложности при создании удобных в применении способов взаимодействия в основном обусловлены тем, что лежащая в основе веб-архитектура «слабо связана», а также с тем, что веб-браузеры поддерживают ограниченный набор интерактивных средств управления, и с нехваткой руководств по разработке таких аспектов, как например, каким образом осуществлять взаимодействие пользователей с системой.
 //-- «Слабо связанная» веб-архитектура --// 
   Важная проблема, с которой сталкиваются разработчики веб-приложений – это «слабо связанная» природа Интернета. Схема веб-взаимодействия очень проста: пользователь запрашивает веб-страницы с помощью веб-браузера, и серверы в ответ отправляют браузеру запрашиваемые страницы или сообщают пользователям, что при загрузке этой страницы возникли проблемы. Однако когда веб-сервер выполняет просьбу пользователя и отправляет браузеру веб-страницу, осуществляется соединение между веб-сервером и веб-браузером. Когда пользователь производит следующий запрос, снова устанавливается соединение с сервером до тех пор, пока новая страница не загрузится в браузере пользователя.
   Загрузка каждой новой страницы или обновление страницы сопровождается приемлемыми задержками, связанными с необходимостью установить соединение, отправкой ответа на запрос, получением страницы и перезагрузкой страницы в браузере. Все это может показаться пользователям веб-приложений довольно скачкообразным и нестабильным. Например, пользователю, который просматривает данные, структурированные в виде иерархического дерева, возможно, придется ждать после каждого клика, пока узел отсчета будет дополнен или удален на перезагружаемой странице и можно будет увидеть изменения. Хотя эта проблема в большей степени связана с применением технологий создания сценариев, такими как JavaScript и богатые веб-приложения (Rich Internet Applications, см. главу 8), с ней часто сталкиваются пользователи при работе с большинством веб-приложений.
 //-- Ограниченный набор средств управления, или виджетов, для поддержки архитектуры приложения --// 
   В текущей версии стандарта HTML (версия 4.01) поддержка средств управления ограничивается текстовыми окнами, зависимыми клавишами, флажками, раскрывающимися списками и командными или управляющими кнопками. Эта версия не поддерживает сложные взаимодействия, типичные для клиентских приложений, таких как регуляторы прокрутки, календари, экспертные системы, закладки, панели инструментов, перетаскивание, плавающие панели, диалоговые окна, контекстно-зависимые меню и т. д., которые встречаются даже в базовых клиентских приложениях. Хотя подобные элементы управления можно разработать с помощью сценариев JavaScript и каскадных таблиц стилей (Cascading Style Sheets, CSS), недостаток изначальной поддержки привел к появлению разнообразных способов их реализации, обладающих неполным функционалом.
 //-- Несогласованные способы взаимодействия --// 
   Как базовая технологическая архитектура Интернета, так и ограниченный набор доступных элементов управления затрудняют создание таких способов взаимодействия пользователя с веб-приложением, которые были бы на уровне со способами взаимодействия в клиентских приложениях. Кроме этого поскольку большинство веб-приложений разработано так, чтобы с ними можно было работать через браузер, способы взаимодействия и оформление нельзя спроектировать так, чтобы они подходили ко всем операционным системам; например, закладки в интерфейсе Macintosh OS X Aqua внешне выглядят совершенно иначе, нежели закладки в интерфейсе Windows Vista (рис. 1.6).
   (а)

   (б)

   Рис. 1.6. Закладки в интерфейсе Macintosh OS X Aqua (a) и в интерфейсе

   Хотя сравнительно свободная среда проектирования Интернета предоставляет разработчикам простор для творчества, она также приводит к многообразию и неоднородности пользовательских интерфейсов и способов, что во многих случаях вызывает определенные трудности для пользователей. Сложности связаны с тем, что пользователи сталкиваются с различными вариантами интерфейсов и способов взаимодействия, каждый из которых обладает собственной терминологией для названия объектов, действий и изображений, объединенных в одном и том же приложении (см. Тидвелл, 2008). На рисунке 1.7 показан пример изменения названия закладки в Zoho Notes (веб-приложение для записей, похожее на Microsoft OneNote) и Zoho Sheet (веб-приложение для работы с таблицами, похожее на Microsoft Excel). Чтобы изменить название закладки в Zoho Notes, пользователи должны дважды щелкнуть по названию закладки, после чего появится диалоговое окно Rename (Переименовать). Чтобы изменить название закладки в Zoho Sheet, пользователи должны щелкнуть правой кнопкой мыши по закладке и выбрать пункт Rename (Переименовать), который откроет всплывающее окно, позволяющее пользователю сменить имя; при этом с помощью двойного щелчка мыши можно выделить текст и заменить его своим.
   (a)

   (б)

   Рис. 1.7. Два различных способа взаимодействия пользователя с системой для смены названия закладки в Zoho Notes (a) и в Zoho Sheet (б)


   Примечание
   HTML5 будет поддерживать дополнительные элементы формы, которые на данный момент входят в спецификацию Web Forms 2.0, разработанную консорциумом World Wide Web Consortium (W3C) (www.w3.org/TR/web-forms-2/). Эта новая версия предоставит дополнительные элементы управления (например, элемент для создания комбинированных окон и элемент для того, чтобы показывать значения, производные от других элементов управления), а также в ней появятся расширения для существующих элементов управления (например, , и др.), что немного облегчит разработку вебприложений. Браузер Opera (версия 9 и выше) сегодня поддерживает Web Forms 2.0 и предоставляет хорошую базу для разработки интерактивных прототипов.

   Для разрешения этих трудностей и сопутствующих им проблем, связанных с удобством и простотой использования приложений, многие корпорации создают руководства разработки пользовательского интерфейса и руководства по стилю оформления для управления графическим пользовательским интерфейсом веб-приложений.
   Однако применить эти принципы для разработки удобных в использовании веб-приложений не так уж и просто. Принципы разработки обладают ограниченной эффективностью, поскольку они часто предлагают высокоуровневые принципы (например, сделать видимым системный статус; использовать распознавание вместо повторного вызова; предотвращение ошибок) или предоставляют очень узкоспециализированные инструкции (например, выровнять заголовки таблиц относительно выравнивания данных в таблице). С другой стороны, руководства по стилю оформления фокусируются на создании имиджа и аспектах визуального проектирования и обычно предназначены для определенной платформы (например, Macintosh OS X Aqua и Windows Vista) или для приложений, разработанных определенной корпорацией (например, руководство по графическому пользовательскому интерфейсу браузера от компании Oracle: «Oracle Browser Look and Feel [BLAF] Guidelines», 2004), и вовсе необязательно предоставляют подробные инструкции для разработки удобных средств взаимодействия.
   Руководства по разработке и стилю оформления обычно довольно объемные и сложные в использовании, поскольку для реализации одного способа взаимодействия обычно необходимо, чтобы разработчики пользовательского интерфейса ознакомились с несколькими пунктами документа. Например, руководство по проектированию пользовательских интерфейсов от компании Apple: «Human Interface Guidelines» – документ объемом почти в 400 страниц, и чтобы создать диалоговое окно с элементами управления, разработчику пришлось бы ознакомиться с несколькими пунктами части номер 3, называющейся: «Part III: The Aqua Interface» (рис. 1.8), которая содержит примерно 250 страниц, посвященных этому вопросу.
   Рис. 1.8. Раздел «Часть III: Аквавзаимодействие» в «Руководстве по проектированию пользовательских интерфейсов» от компании Apple составляет примерно 250 из 400 страниц документа

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


   Шаблоны проектирования

   Упоминание о шаблонах впервые появилось применительно к архитектуре в работах Кристофера Александра и его коллег: «Язык шаблонов» (Alexander et al., 1977) и «Извечный путь строительства» (Alexander, 1979). Они объясняют суть шаблонов следующим образом:

   Каждый шаблон описывает некую повторяющуюся в нашей среде проблему, а затем таким образом описывает ключ к ее решению, что это решение можно применять многократно, ни разу не придя к одному и тому же результату.
 Alexander et al., 1977, стр. x

   Таким образом, шаблоны фокусируются на проблемах контекста применения и служат ориентиром для разработчиков в том, когда, как и для чего применять данное решение. Шаблоны имеют практическое применение и отвечают требованиям «хорошего» проектирования, при этом они воплощают высокоуровневые принципы и стратегии.
   В последнее время шаблоны все чаще стали применяться разработчиками пользовательских интерфейсов и программного обеспечения [3 - После выхода работы Кристофера Александра в сфере архитектуры, понятие шаблонов было популяризировано и стало применяться в области программного обеспечения. Этому способствовала также работа Эрика Гаммы, Ричарда Хелма, Ральфа Джонсона и Джона Влиссидеса (часто эту группу называют GoF, от англ. Gang of Four – «банда четырех»): «Приемы объектно-ориентированного проектирования. Паттерны проектирования» (Питер, 2007). Впоследствии шаблоны также стали популярны в области взаимодействия компьютера и человека, этому способствовали работы Тидвелла (Tidwell, www.designinginterfaces.com), Уэли (Welie, www.welie.com), Борчерса (Borchers, 2001), Грэхэма (Graham, 2003) и Ван Дюйна (Van Duyne et al., 2002, 2006).], которых привлекают следующие преимущества.
   • Проверенные решения и руководства по их применению. Шаблоны указывают на реальные решения, а не на некие абстрактные принципы или директивы. Помимо этого, благодаря указанию контекста, выявлению проблемы и ее логическому обоснованию, шаблоны объясняют и то, как можно решить проблему, и то, почему это решение подходит для данного конкретного контекста. Однако поскольку это универсальное «ключевое» решение, оно может применяться по-разному в различных реализациях, при этом реализация не будет казаться «типовой» или недостаточно творческой.
   • Усовершенствованный процесс проектирования. Определение шаблонов проекта и их каталогизация может помочь разработчикам пользовательского интерфейса увеличить производительность, сократив время, которое тратится на «изобретение велосипеда». Более того, если элементы пользовательского интерфейса используются в качестве шаблонов и представлены в виде библиотеки шаблонов проектов (см. главу 13), проекты можно разрабатывать, тестировать и дорабатывать довольно быстро, а также можно сократить цикл выпуска.
   • Возможность многократного применения и согласованные интерфейсы. Формирование библиотеки допускающих многократное применение элементов пользовательского интерфейса также может способствовать разработке согласованных интерфейсов приложений. Особенно это удобно для больших корпораций, в которых много рассредоточенных проектных групп, где решения для одной и той же проблемы могут применяться различными проектными группами, что приводит к несогласованности интерфейсов, разработанных одной и той же компанией. Благодаря каталогизации и обмену информацией о шаблонах проекта, группы могут повысить согласованность, предсказуемость, простоту и удобство использования своих проектов (Leacock et al., 2005) и могут сформировать корпоративную память об опыте проектирования (Borchers, 2001).
   • Общий, совместно используемый язык. Шаблоны помогают поддерживать и совершенствовать обмен информацией между членами команды с различной специализацией благодаря развитию общего языка или терминологии при объяснении и обсуждении проектных решений (Borchers, 2001; Erickson, 2000). Это очень важно, поскольку проектировщики пользовательского интерфейса часто работают в междисциплинарных группах, в состав которых входят также разработчики, специалисты в прикладных областях и пользователи или представители пользователей, а в этих группах обычно отсутствует общая терминология для обмена идеями и мнениями по поводу проекта.
   • Эффективное средство обучения и справочное руководство. Для опытных проектировщиков шаблоны также могут быть эффективным средством предоставления инструкций для тех, кто не получил формального образования в области проектирования (Chen, 2003). При наличии наглядных и текстовых описаний неопытным проектировщикам интерфейсов легче увидеть примеры успешного применения шаблонов.
   • Удобные в применении веб-приложения. В конечном итоге, поскольку шаблоны основаны на успешном опыте применения, их использование может сделать веб-приложения удобными в применении, потому как способы взаимодействия, лежащие в основе шаблонов, знакомы пользователям.


   Документирование шаблонов

   Важно, чтобы шаблоны были документально оформлены, чтобы из этой документации можно было понять, что они собой представляют, почему они работают и как они должны применяться для решения проблемы проектирования, чтобы получить вышеупомянутые преимущества. Однако интересен тот факт, что не существует какого-либо «шаблона» для документирования шаблонов (см. главу 13). Авторы шаблонов применяют различные подходы, начиная с тех, кто основывается на более описательном повествовании в духе Кристофера Александра (Borchers, 2001; Graham, 2003; van Duyne et al., 2002, 2006), заканчивая теми, кто следует более структурированному, хотя и минималистическому, подходу (Laasko, 2003); Тидвелл, 2008; www.welie.com) [4 - Чтобы упорядочить разнообразие и несогласованность форм используемых шаблонов и чтобы найти способ объединения шаблонов и их языков от разных авторов в особые тематические коллекции шаблонов, участники конференции CHI 2003 предложили язык разметки на основе XML под названием Pattern Language Markup Language (PLML; произносится как «пэл-мэл»). Чтобы получить больше информации, см. работу Финчера (Fincher, 2003).].
   В этой книге представлен довольно краткий обзор шаблонов. В частности, в описание каждого шаблона входит:
   • Название шаблона. Короткий заголовок, описывающий проектное решение. По примеру других наборов шаблонов названия шаблонов написаны ЗАГЛАВНЫМИ БУКВАМИ, чтобы они выделялись среди остального текста. В тексте приведены названия шаблонов на английском языке, а в конце книги вы найдете список всех шаблонов на английском языке и смысловой перевод в скобках (русские названия шаблонов не утверждены).
   • Проблема. Краткое описание проблем(ы) проектирования, которую решает шаблон, и описание сопутствующих трудностей проектирования и альтернативных вариантов, с которыми сталкиваются проектировщики пользовательских интерфейсов.
   • Решение. Ключевое проектное решение проблемы. Это краткое описание решения (т. е. шаблона), которое сопровождается примером (т. е. наглядным изображением), иллюстрирующим его применение для веб-приложения.
   • Зачем. Логическое обоснование эффективности проекторного решения.
   • Как. Перечисление наиболее успешных опытов применения, описывающее применение этого решения и возможные вариации. Для каждой вариации приводится один или больше наглядных примеров, демонстрирующих, как эти шаблоны могут эффективно применяться в различных ситуациях.
   • Связанные шаблоны проектирования. Поскольку очень часто происходит так, что несколько шаблонов вместе применяются для создания удобного проектного решения, в этом разделе указаны смежные шаблоны, которые могут пригодиться проектировщикам либо потому, что они применяются совместно с данным шаблоном, либо потому, что они влияют на применение данного шаблона.


   Структурирование шаблонов в этой книге

   Шаблоны в этой книге структурированы по главам следующим образом.
   Глава 2: Формы. Формы являются отличительной чертой вебприложений. Именно с помощью элементов формы, таких как текстовые окна, раскрывающиеся меню, зависимые кнопки, флажки и прочие, пользователи вводят информацию и взаимодействуют с веб-приложениями. В этой главе рассказывается о шаблонах, связанных с разработкой форм для веб-приложений и обеспечивающих заполнение формы таким образом, чтобы оно не было трудоемким занятием, а также чтобы эти формы помогали пользователям достигать своих целей. Это такие шаблоны, как CLEAR BENEFITS, SHORT FORMS, LOGICAL GROUPING, LABEL ALIGNMENT, REQUIRED FIELD INDICATORS, SMART DEFAULTS, FORGIVING FORMAT, KEYBOARD NAVIGATION, INPUT HINTS/ PROMPTS, ACTION BUTTONS и ERROR MESSAGES.
   Глава 3: Аутентификация пользователя. Веб-приложения осуществляют взаимно однозначное взаимодействие с пользователями и сохраняют информацию о конкретных пользователях. Для этого требуется, чтобы пользователи создавали учетную запись и получали к ней доступ с помощью уникальных учетных данных. В этой главе описываются шаблоны проектов, имеющие отношение к доступу и завершению работы с веб-приложениями, включая REGISTRATION, CAPTCHA, LOG IN, LOG OUT, AUTOMATIC LOGOUT и FORGOT USERNAME/ PASSWORD.
   Глава 4: Главная страница приложения. Важный для проектировщиков вопрос – что пользователь увидит или на какую страницу будет направлен, когда он входит в свою учетную запись в приложении? В этой главе описаны шаблоны, которыми могут воспользоваться проектировщики при направлении посетителей на эту «главную» страницу приложения, сюда относятся INBOX, CONTROL PANEL, DASHBOARD, PORTAL, PERSONALIZATION, CUSTOMIZATION и BLANK SLATE.
   Глава 5: Навигация. Навигация – это то, как пользователи работают с веб-приложением. Если процесс навигации спроектирован удачно, он становится прозрачным (т. е. незаметным для пользователя) и пользователи могут быстро осуществить свои задачи, не прибегая к ненужному поиску с возвратом. В центре внимания этой главы – шаблоны проектирования навигационных систем, такие как PRIMARY NAVIGATION, SECONDARY NAVIGATION, UTILITY NAVIGATION, FACETED NAVIGATION, SUPPLEMENTARY NAVIGATION, TAG CLOUDS, BREADCRUMBS и WIZARDS.
   Глава 6: Поиск и фильтрация. Для большинства веб-приложений получение информации только с помощью навигационных систем может быть затруднительным и нанести ущерб удобству и простоте использования. По этой причине информация в веб-приложении доступна для поиска, чтобы пользователи могли быстро и эффективно найти то, что им нужно. Кроме тех случаев, когда критерии поиска очень особые, пользователи, скорее всего, получат большое количество результатов. Проектировщики должны предоставлять пользователям возможность с помощью механизмов фильтрации сократить список результатов до удобного в обработке набора вариантов. В этой главе рассказывается о шаблонах проектирования, связанных с поиском и фильтрацией информации в веб-приложениях, сюда относится SIMPLE SEARCH, PARAMETRIC SEARCH, ADVANCED SEARCH, SEARCH TIPS, SEARCH RESULTS, SORTING, PAGINATION, CONTINUOUS SCROLLING, FILTERING, FACETED SEARCH и SAVED SEARCHES.
   Глава 7: Списки. Списки применяются для того, чтобы представить пользователям несколько элементов. Способ этого представления может быть различным, в зависимости от того, какие именно элементы должны быть представлены. В этой главе рассказывается о шаблонах проектирования для различных типов списков, а именно SIMPLE LIST, TABULAR LIST, HIERARCHICAL LIST, EVENT LIST, TIMELINES, IMAGE LIST/ GRID, MAPS, LIST ACTIONS и LIST UTILITY FUNCTIONS.
   Глава 8: Богатые веб-приложения. Богатые веб-приложения (RIA) предоставляют такую же ответную реакцию и интерактивность, что и настольные клиентские приложения, поскольку пользователям не приходится ждать, пока основные данные на странице обновляются и пока вносятся изменения в оформление; по этой причине результаты их действий можно увидеть немедленно. В этой главе рассказывается о часто применяющихся шаблонах проектирования для богатых веб-приложений, к которым относятся RICH-TEXT EDITOR, RICH FORM, AUTOSUGGEST/ AUTOCOMPLETION, EDIT-IN-PLACE, OVERVIEW-PLUS-DETAIL, DYNAMIC QUERYING, LIVE PREVIEW, DRAG-AND-DROP, SLIDER, ANIMATIONS/TRANSITIONS, DELAY/PROGRESS INDICATOR, SPOTLIGHT/YELLOW-FADE и CAROUSEL
   Глава 9: Социальные приложения. Современная тенденция в сфере веб-приложений – это разработка социальных приложений, которые не просто способствуют тому, чтобы пользователи вносили свой вклад и выкладывали свой контент (например, фотографии, видео, закладки и т. д.), но также развивают взаимодействие и помогают создавать сообщества. В этой главе рассказывается о шаблонах проектирования, которые были созданы на основе подобных социальных приложений, включая ADD/UPLOAD CONTENT, TAGGING, RATING, REVIEWS, VOTE TO PROMOTE, USER PROFILE, REPUTATION, DISCOVER NETWORK MEMBERS, FRIEND LIST, GROUPS/SPECIAL INTEREST COMMUNITY, MESSAGING, PRESENCE INDICATOR, SHARING и COLLABORATION.
   Глава 10: Интернационализация. Интернационализация вебприложений является важным шагом к локализации – в данном случае к адаптации этих приложений к определенному региону или языку. Это помогает сократить усилия, необходимые для последующей локализации, и избавляет от необходимости разрабатывать отдельные региональные и языковые версии приложений. В этой главе рассказывается о шаблонах проектирования, которые помогают сделать приложение в достаточной степени универсальным и адаптируемым на первых этапах разработки, сюда относятся EXTENSIBLE DESIGN, DATE FORMAT, TIME FORMAT, NUMBER FORMAT, CURRENCY AND CURRENCY FORMAT, GLOBAL GATEWAY и LANGUAGE SELECTOR.
   Глава 11: Доступность. Шаблоны проектирования, о которых говорится в этой главе, помогают сделать веб-приложения доступными и поддерживающими рекомендации и правила доступности информации в Интернете, например, правила, сформулированные на консорциуме W3C; к этим шаблонам относятся PROGRESSIVE ENHANCEMENT, SEMANTIC MARKUP, UNOBTRUSIVE STYLE SHEETS, UNOBTRUSIVE JAVASCRIPT, ACCESSIBLE FORMS, ACCESSIBLE IMAGES, ACCESSIBLE TABLES, ACCESSIBLE NAVIGATION и ACCESSIBLE ALTERNATIVE.
   Глава 12: Визуальное проектирование. Визуальное проектирование веб-приложений сильно влияет на то, насколько полезным пользователи считают это приложение. Эта глава посвящена тем шаблонам проектирования, которые определяют, как выглядят и какое впечатление производят веб-приложения; сюда относятся LIQUID-WIDTH LAYOUT, FIXED-WIDTH LAYOUT, PROGRESSIVE LAYOUT, GRID STRUCTURE, VISUAL HIERARCHY, HIGHLIGHT и ICONS.
   Глава 13: Библиотеки шаблонов. Несмотря на популярность шаблонов и библиотек шаблонов, в настоящее время еще не достигнуто соглашения о том, как шаблоны должны документироваться, соблюдаться и распространяться. По этой причине в данной главе представлен «шаблон» библиотеки шаблонов и показаны ее ключевые элементы, а также предложены лучшие варианты ее расширения.
   Глава 14: Помощь. Несмотря на то что при соблюдении основных принципов, процессов и шаблонов проектирования создается удобный и эффективный в применении интерфейс, необходимо предоставить помощь, доступную на каждом этапе взаимодействия пользователя с системой. В главе перечислены шаблоны проектирования, связанные с предоставлением помощи в веб-приложениях, к ним относятся CONTEXTUAL HELP, FREQUENTLY ASKED QUESTIONS, APPLICATION HELP, GUIDED TOURS, HELP WIZARDS, HELP COMMUNITY и CLICK-TO-CHAT.

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



   Применение шаблонов в этой книге

   В этой книге предоставлено практическое руководство по проектированию пользовательских интерфейсов для разработки веб-приложений, предлагающее «работающую» отправную точку, с которой проектировщики могут начать внедрение и оптимизацию творческих решений.
   Рассматривайте шаблоны, описанные в этой книге, как рекомендации, а не как конкретные точные проектные решения, и применяйте их, если только они подходят для решения вашей проблемы. Не применяйте шаблон для решения проблемы, только чтобы его применить! Как обозначил Грэхэм (Graham, 2003): «Шаблоны – это абстрактные, ключевые решения проблем, которые возникают в различных контекстах… Практическое применение данного решения может приобретать различные формы в различных приложениях. Поэтому шаблоны не являются готовыми к применению решениями». Поэтому сосредоточьте внимание на сущности шаблона и затем подумайте, как этот шаблон может помочь решить проблему, поскольку шаблоны указывают не на одно-единственное решение, а скорее на стратегию решения проблемы.



   Глава 2
   Формы


   Введение

   Формы являются отличительной чертой веб-приложений. С помощью элементов формы (например, текстовые поля, раскрывающиеся и прокручиваемые списки, переключатели, флажки и управляющие кнопки) веб-приложения позволяют пользователям выполнять такие задачи, как покупка товаров и услуг, бронирование авиабилетов, поиск местоположения, загрузка и выкладывание фотографий и т. д. Чтобы пользователи могли успешно выполнить свои задачи, важно, чтобы формы не были сложными и были спроектированы так, чтобы:
   • их цель была ясна (CLEAR BENEFITS);
   • они запрашивали только минимальную необходимую релевантную информацию (SHORT FORMS);
   • их структура четко передавала взаимоотношения между элементами формы (LOGICAL GROUPING);
   • метки и соответствующие элементы формы были выровнены, чтобы усовершенствовать процесс просмотра (LABEL ALIGNMENT);
   • они четко указывали, что должен сделать пользователь (REQUIRED FIELD INDICATORS, INPUT HINTS/PROMPTS);
   • они сводили к минимуму объем данных, которые должен ввести пользователь, и не требовали от пользователей дважды вводить одну и ту же информацию (SMART DEFAULTS);
   • процесс заполнения формы был результативным (SMART DEFAULTS, FORGIVING FORMAT, KEYBOARD NAVIGATION);
   • они четко указывали, как выполнить задание (ACTION BUTTONS);
   • они давали пользователям четкие инструкции в случае возникновения ошибки (ERROR MESSAGES).
   Хотя выбор подходящих элементов (например, когда использовать флажки, а когда – переключатели) крайне важен для создания удобной в использовании формы, здесь мы об этом говорить не будем, поскольку уже существуют отличные источники, посвященные этому вопросу; например, работа Мейхью (Mayhew, 1991), Галитца (Galitz, 2002), «Руководство по проектированию пользовательских интерфейсов» от компании Apple (2007) и руководство по разработке интерфейса от Windows Vista («User Experience Guidelines», 2007).
   Однако важно помнить, что веб-приложения создаются с помощью HTML и предоставляют не все способы управления, доступные для популярных платформ, таких как Windows или Macintosh. В частности, процесс взаимодействия в веб-приложениях ограничивается следующими элементами формы: текстовые поля (в одну строку или состоящие из нескольких строк), переключатели, флажки, раскрывающиеся списки, прокручиваемые списки, кнопки (включая кнопки с изображением) и особый элемент управления для просмотра файлов. К недостающим элементам управления относятся, например, управление прокруткой, комбинированное окно, элемент управления «дерево» и вкладки. Хотя эти элементы управления можно внедрить с помощью сложных комбинаций HTML, каскадных таблиц стилей CSS и сценариев JavaScript, это всего лишь обходные пути решения проблемы, поскольку в данном случае эти элементы не являются частью основного языка разметки.


   CLEAR BENEFITS (ЧЕТКИЕ ПРЕИМУЩЕСТВА)

 //-- Проблема --// 
   Увидев форму, пользователи могут не понять, как ее заполнение и отправка поможет им выполнить свои задачи и достичь своих целей.
 //-- Решение --// 
   При разработке четко обозначайте преимущества заполнения и отправки форм. Это особенно важно, когда пользователи создают новые учетные записи (т. е. в регистрационных формах), которые являются первым этапом получения доступа к возможностям веб-приложений (рис. 2.1).
   Рис. 2.1. Социальная сеть LinkedIn четко перечисляет преимущества регистрации в пункте LinkedIn helps you (LinkedIn поможет вам)

 //-- Зачем --// 
   Возможно, пользователи не хотят заполнять форму и предоставлять личную информацию, пока не поймут, какие преимущества они получат в этом случае и как это поможет им в достижении целей. Кроме того, они могут быть обеспокоены вопросами конфиденциальности, если не будут знать, как их личная информация будет использована. Четкое обозначение преимущества и объяснение пользователям, что нет причин волноваться по поводу конфиденциальности, – это первые шаги к тому, чтобы пользователи не отказывались от заполнения форм.
 //-- Как --// 
   Пользователи должны быть осведомлены о преимуществах заполнения формы, даже если это форма содержит всего одно поле для заполнения, например как форма подписки на электронную новостную рассылку (рис. 2.2).
   Рис. 2.2. Сайт UIE перечисляет преимущества подписки на свою электронную новостную рассылку, «UIEtips»

   Объясняйте преимущества регистрации в регистрационных формах
   Когда незарегистрированный пользователь просматривает регистрационную форму, вам предоставляется прекрасная возможность рассказать ему о преимуществах регистрации. Это облегчает принятие решения, регистрироваться ему или нет (рис. 2.3).
   Рис. 2.3. Сайт Blockbuster перечисляет преимущества регистрации на Blockbuster.com и предлагает «бесплатный» пробный период каждому регистрирующемуся

   Объясняйте преимущества, прежде чем перенаправлять пользователей на форму
   Во многих случаях пользователей приходится перенаправлять на форму. Если они не знают о преимуществах, они могут не щелкнуть по ссылке или кнопке, ведущей их к форме. Поэтому очень важно, чтобы преимущества заполнения формы были обозначены до того, как пользователи увидят саму форму. Один из способов это осуществить – это поставить информативные метки на ссылки, например «Перевести деньги» или «Оплатить счета», вместо стандартных меток, таких как «Узнать больше» или «Продолжить». Хотя преимущества могут быть пользователям и непонятны, это помогает сообщить им о том, какое действие будет следующим (рис. 2.4).
   Рис. 2.4. Сервис Plaxo размещает описание преимуществ регистрации рядом с кнопкой регистрации, и, что весьма оригинально, сайт предоставляет пользователям возможность узнать больше, посмотрев демонстрационный или обучающий ролик

   Все чаще веб-приложения предоставляют такие возможности и преимущества, которые сложно описать в нескольких предложениях. Или даже когда преимущества очевидны, пользователи могут захотеть узнать больше о том, как получить эти преимущества при использовании приложения. Чтобы дать подробные объяснения, предложите пользователям узнать больше о работе веб-приложения, и они станут меньше беспокоиться по поводу заполнения необходимых форм (рис. 2.5 и 2.6).
   Рис. 2.5. Сайт Prosper (где можно дать или взять взаймы деньги) предоставляет информацию о том, как можно взять или дать деньги в долг с помощью ссылок How to borrow (Как взять в долг) и How to lend (Как дать взаймы)

   Рис. 2.6. Помимо перечисления преимуществ ведения блога (описание своих мыслей, получение комментариев и т. д.) сайт Blogger предоставляет информацию о ведении блога с помощью функции Take a Quick Tour(Короткий тур)

 //-- Связанные шаблоны проектирования --// 
   Для многих сложных веб-приложений и тех, где пользователь должен внести предоплату, попробуйте предоставить пользователям возможность воспользоваться интерактивным чатом CLICK-TO-CHAT (см. главу 14), который позволит им задавать вопросы непосредственно квалифицированному представителю компании.


   SHORT FORMS (КОРОТКИЕ ФОРМЫ)

 //-- Проблема --// 
   Чем больше сведений о себе указывают пользователи, тем легче их понять и оптимизировать приложение, чтобы оно больше отвечало их потребностям и предоставляло более релевантную и персонализированную информацию. Однако объемные формы увеличивают возможность, что пользователи не заполнят форму или предоставят недостоверную информацию.
 //-- Решение --// 
   Делайте формы как можно короче (рис. 2.7). Не выясняйте у пользователей информацию, которая «может пригодиться» в будущем. Если дополнительные поля могут предоставить полезную информацию и их нельзя убрать, сделайте их необязательными и соответствующим образом обозначьте (см. далее в этой главе шаблон REQUIRED FIELD INDICATORS).
   Рис. 2.7. Для регистрации на сайте Crazy Egg пользователи должны заполнить всего три поля и принять условия использования и политику конфиденциальности. Более того, благодаря объединению формы с соответствующими преимуществами, пользователи точно знают, чего им ожидать

 //-- Зачем --// 
   Исследование, проведенное Relevant Ads, показало, что более короткие формы чаще заполняются (рис. 2.8). Сократив формы, можно также сократить вероятность возникновения ошибок, поскольку пользователям приходится иметь дело с меньшим количеством элементов формы. В дальнейшем это увеличивает шансы успешного заполнения формы, которое приводит к более высокому показателю эффективности.
   Рис. 2.8. В исследовании, проведенном Relevant Ads, показатель эффективности падал с увеличением количества полей в форме

 //-- Как --// 
   Подумайте, насколько важен каждый элемент формы, и что будет, если не включать его в форму. Помимо этого подумайте, придется ли пользователям прилагать большие усилия, чтобы предоставить информацию. Если пользователям приходится задумываться о том, как ответить на вопрос в форме, рассматривайте это как препятствие заполнению формы, и позаботьтесь о том, чтобы убрать этот вопрос. Самая известная «простая» форма – это, вероятно, форма Google, которая находится на странице поиска и просто предоставляет поле для ввода текста и кнопку поиска (рис. 2.9).
   Рис. 2.9. Форма поиска у Google самая простая и короткая. Хотя в нее входит кнопка I'm Feeling Lucky (Мне повезет!), большинство людей обычно вводят ключевые слова и щелкают по кнопке Google Search (Поиск в Google) или нажимают клавишу Enter на клавиатуре

   Сервис Jottit предоставляет еще один пример самой короткой и, возможно, самой эффективной формы (рис. 2.10). Чтобы создать интернет-страницу, пользователи просто печатают в поле ввода то, что они хотят разместить на своей странице и щелкают по кнопке «Create a page».
   (а)

   (б)

   Рис. 2.10. На сайте Jottit, чтобы создать веб-страницу, пользователи просто вводят текст и щелкают по кнопке Create a page (Создать страницу) (a). Тогда пользователи получают свою интернет-страницу и возможность ее редактирования (б)

   Разделяйте объемные формы на несколько страниц с более короткими формами
   Группируйте информацию в большой форме так, чтобы у каждой группы была своя задача, и выкладывайте элементы формы, относящиеся к каждой группе, на отдельной странице (рис. 2.11). Помимо этого расставляйте группы в таком порядке, чтобы самая важная и необходимая информация располагалась вначале, а дополнительная информация – после нее.
   Рис. 2.11. На сайте Meebo регистрационная форма разделена на несколько страниц. Самая важная часть формы располагается вначале, а на остальных страницах пользователи могут установить дополнительные настройки своей учетной записи и указать свои предпочтения

   Разделение формы ускоряет процесс заполнения каждой страницы, и пользователям такая форма может показаться короче, чем если разместить ее целиком на одной странице.
 //-- Связанные шаблоны проектирования --// 
   Когда формы максимально сокращены, пусть они кажутся еще более простыми для заполнения. Это можно сделать, указав пользователям, какая информация обязательна (REQUIRED FIELD INDICATORS), сгруппировав и расположив в логическом порядке элементы формы (LOGICAL GROUPING) и сообщив пользователям о преимуществах заполнения формы (CLEAR BENEFITS). Помимо этого попробуйте применить шаблон WIZARDS в формах, которые разделены на несколько страниц (см. главу 5).


   LOGICAL GROUPING (ЛОГИЧЕСКОЕ ГРУППИРОВАНИЕ)

 //-- Проблема --// 
   Чтобы достичь результата, пользователям приходится заполнять довольно большие формы. Однако разработчикам хотелось бы, чтобы пользователям казалось, что форму легко заполнить и чтобы они охотно ее заполняли.
 //-- Решение --// 
   Группируйте элементы формы так, чтобы пользователям было понятно, какие данные нужно предоставлять в той или иной части формы (например, адрес доставки, платежная информация и т. д.; рис. 2.12).
   Рис. 2.12. Yahoo! разделяет элементы регистрационной формы на логические группы, благодаря чему создается впечатление, что форму можно легко и быстро заполнить

 //-- Зачем --// 
   Благодаря распределению информации по группам, так, чтобы пользователи могли четко понимать, для каких целей служит информация из каждой группы и какие элементы формы относятся к той или иной группе, формы кажутся легче для заполнения. Пускай лучше пользователям форма представляется состоящей из небольшого количества групп, чем из большого количества отдельных элементов.
 //-- Как --// 
   Объедините элементы формы в группы в зависимости от их функций, например, адрес доставки, адрес выставления счета, контактная информация и т. д. Убедитесь, что порядок расположения элементов в каждой группе соответствует представлению пользователей о том, в каком порядке нужно вводить информацию. Например, для пользователей из США расположите элементы формы, относящиеся к информации об адресе, так, чтобы сначала нужно было вводить название улицы и дом, затем город, а только затем название штата и индекс, или, например, при создании учетной записи, сначала просите ввести имя пользователя (или адрес электронной почты), а затем пароль (рис. 2.13).
   Рис. 2.13. Форма оформления заказа на сайте Apple кажется удобной для заполнения, во-первых, благодаря тому, что она разделена на несколько страниц, а во-вторых, благодаря логической группировке элементов на каждой странице

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

 //-- Связанные шаблоны проектирования --// 
   При группировке элементов формы можно разделить форму на множество страниц, чтобы она казалась короче (SHORT FORMS), или структурировать ее так, чтобы данные, внесенные в начале формы, при необходимости автоматически вносились повторно в последующих частях формы (SMART DEFAULTS), и пользователям не приходилось возвращаться к ранее введенной информации.


   LABEL ALIGNMENT (ВЫРАВНИЕ МЕТОК)

 //-- Проблема --// 
   Между метками и соответствующими элементами формы должна быть отчетливо видна связь, чтобы облегчить заполнение формы и сократить количество ошибок при вводе информации.
 //-- Решение --// 
   Существуют три неплохих варианта расположения меток по отношению к элементам формы: над элементом, с выравниванием левой границы метки относительно элемента; слева, с выравниванием левой границы метки относительно других меток; и слева, с выравниванием правой границы метки относительно других меток (рис. 2.15).
   (а)

   (б)

   (в)

   Рис. 2.15. Во многих случаях метки располагаются а) над элементами формы; б) выровнены по левому краю и в) выровнены по правому краю

 //-- Зачем --// 
   Чем быстрее пользователи могут соотнести метку с соответствующим элементом формы, тем быстрее они смогут заполнить форму. Изучив движения глаз, Пензо (Penzo, 2006) обнаружил, что пользователям достаточно просто соотнести метку с элементом формы, если метки расположены любым из способов, показанных на рис. 2.15.
   Однако результаты изучения движений глаз показали, что когда метки полей выровнены по левому краю, большие расстояния между некоторыми метками и соответствующими им полями ввода (возникающие, поскольку метки обладают различной длиной – например, сравните «Название компании» и «Город») приводят к тому, что у пользователей уходит больше времени на зрительное восприятие формы. По сравнению с выравниванием по левому краю, при выравнивании по правому краю общее количество исправлений в 2 раза меньше, что значительно сокращает усилия, которые должен приложить пользователь для заполнения формы.
   В этом же исследовании описаны преимущества размещения меток полей над элементами формы; при таком расположении меток формы заполняются быстрее всего. Недостатком в данном случае является то, что при таком расположении меток требуется дополнительное вертикальное пространство. Однако если форму нужно перевести на несколько языков, благодаря такому расположению сохраняется внешнее единообразие оформления, поскольку одни и те же метки при переводе на другие языки могут обладать разной длиной. При размещении меток над элементами формы для меток остается достаточно места, не зависимо от изменения их длины (см. шаблон EXTENSIBLE DESIGN в главе 10).
 //-- Как --// 
   Чтобы правильно соотнести метки с соответствующими элементами формы (для языков с письменностью в направлении слева направо), разместите метки либо слева, либо над элементами управления (Penzo, 2006; Wroblewski, 2008). При размещении меток полей слева от элементов формы выровняйте метки по правому краю так, чтобы они находились близко друг к другу (рис. 2.16).
   Рис. 2.16. На сайте PriceGrabber метки расположены слева от элементов формы, но выровнены относительно них по правому краю

   При размещении меток над элементами формы важно, чтобы визуально метка одного элемента формы находилась на достаточном расстоянии от предыдущего элемента (Penzo, 2006). Врублевски (Wroblewski, 2008) советует, чтобы расстояние составляло примерно 50 %-75 % высоты отдельного поля для ввода данных. Помимо этого Пензо (Penzo, 2006) советует применять метки с неформатированным шрифтом вместо меток с жирным шрифтом, поскольку жирный шрифт несколько сложнее воспринимать (рис. 2.17).
   Рис. 2.17. На сайте Basecamp над полями расположены метки с неформатированным текстом

 //-- Не злоупотребляйте встраиваемыми метками --// 
   Встраиваемые метки допустимы в формах, в которых совсем немного полей ввода (обычно одно), и в тех случаях, когда большинство пользователей должны знать, какие данные им нужно вводить, например, на рис. 2.18 это ключевые слова поиска. Поскольку встраиваемые метки сами находятся внутри поля и пользователю приходится их удалять, их не видно, когда пользователи ввели данные в это поле. Поэтому они неудобны в больших формах или в тех случаях, когда маловероятно, что пользователи знают, какие данные они должны ввести.
   (а)

   (б)

   Рис. 2.18. На сайте Apple в поле поиска используются встраиваемые метки (a). Метка исчезает, когда пользователь щелкает по полю поиска или начинает вводить искомые слова (б)

 //-- Связанные шаблоны проектирования --// 
   Обычно в формах метки сопровождаются индикаторами обязательной к заполнению информации (REQUIRED FIELD INDICATORS).


   REQUIRED FIELD INDICATORS (ИНДИКАТОРЫ ОБЯЗАТЕЛЬНЫХ ПОЛЕЙ)

 //-- Проблема --// 
   Чтобы выполнить задание, пользователи должны предоставить определенную информацию. Например, при создании учетной записи в большинстве случаев пользователи должны указать электронный адрес и пароль. Однако для усовершенствования процесса взаимодействия в формах могут присутствовать дополнительные вопросы, на которые пользователи могут не захотеть отвечать или ответы на которые им могут быть на данный момент неизвестны. Если не заполнены обязательные поля, пользователи могут получить сообщение об ошибке, и у них уйдет больше времени на заполнение формы.
 //-- Решение --// 
   Четко укажите обязательную информацию в форме, чтобы пользователи могли ее успешно ее заполнить и чтобы уменьшить вероятность появления сообщения «заполнены не все обязательные поля» (рис. 2.19).
   Рис. 2.19. На сайте Dominos обязательные поля обозначены красными звездочками, так пользователю становится понятно, что номер мобильного телефона вводить необязательно. Также указано, какие преимущества пользователь получит, если укажет свой мобильный телефон

 //-- Зачем --// 
   Указание обязательных полей не только экономит время, которое пользователи тратят на то, чтобы решить, какую информацию они должны предоставить, но также экономит время, которое у них отнимают сообщения об ошибке в случае, если не все поля заполнены, и которое уходит на то, чтобы заполнить форму заново.
 //-- Как --// 
   В веб-приложениях необходимые для заполнения поля часто обозначаются звездочками (обычно красными). Использование красных звездочек эффективно потому, что они понятны даже людям с нарушением восприятия цветов. Не рекомендуется использовать другие виды индикации (например, использовать красный и жирный шрифт для меток полей), поскольку часто именно таким образом указаны ошибки на странице. Помимо этого программы экранного доступа могут не уловить изменение цвета, а также люди с нарушенным цветовым зрением могут не различить обязательные и дополнительные поля.
   Хотя могут быть и другие учитывающие перечисленные выше нюансы способы указать обязательные поля, красные звездочки все же предпочтительны, поскольку большинство пользователей привыкло видеть именно их при указании обязательных полей; цвет звездочек может варьироваться в зависимости от фона страницы.

   Совет
   Пользователи знают, что на странице регистрации обязательно вводить имя пользователя и пароль. Поэтому не обязательно указывать их как обязательные.

   Расшифруйте значение индикаторов обязательных полей
   Хотя большинство пользователей Интернета понимают, что красная звездочка рядом с меткой поля указывает на то, что это поле является обязательным, в некоторых веб-приложениях этот символ указывает на дополнительные поля. Поэтому следует внести ясность и указать наверху формы, что поля, отмеченные звездочкой (*), обязательны.
   Размещайте индикаторы обязательных полей одинаково во всех формах
   На данный момент не существует рекомендаций по поводу того, как лучше располагать индикаторы обязательных полей относительно меток полей; их можно расположить в любом месте: после метки, перед меткой, перед полем для ввода данных и после него.
   Однако предположив, что при заполнении формы глаза пользователя направлены больше на элементы формы, имеет смысл расположить индикаторы обязательных полей как можно ближе к элементам формы. Помимо этого, если располагать эти индикаторы в одном и том же месте, пользователи смогут быстро просматривать формы и определять, какие поля являются обязательными. Можно расположить индикаторы обязательных полей слева от элементов формы, при этом метки будут расположены слева от них и выровнены по правому краю (см. рис. 2.19). Для меток, находящихся над элементами формы, расположите индикаторы обязательных полей слева от меток (рис. 2.20), поскольку так они будут ближе как к меткам полей, так и к элементам формы, где посетитель вводит или выбирает данные; если разместить их слева от элементов формы, их можно будет перепутать с флажками или зависимыми кнопками.
   Рис. 2.20. На сайте TravelPost указатели на обязательные поля находятся слева от меток, расположенных над элементами формы. Однако обратите внимание, что в метках используется полужирный шрифт, что не рекомендуется, поскольку выделенные жирным шрифтом метки увеличивают время на заполнение формы (Penzo, 2006)

   Не указывайте дополнительные поля
   В случаях если форма содержит меньше дополнительных полей, чем обязательных, иногда, чтобы избежать скопления символов, отмечают дополнительные поля вместо обязательных. Это неудачное решение. Поскольку пользователи привыкли использовать веб-приложения, в основной части которых применяются индикаторы обязательных полей, они, скорее всего, будут воспринимать отмеченные поля как обязательные или, по меньшей мере, такое обозначение внесет путаницу.
   Объясняйте, для чего необходимо предоставлять конфиденциальную информацию
   Если вам необходимо получить личную информацию, например дата рождения пользователя, пол или раса, четко обозначьте, почему эта информация вам необходима. Кроме этого предоставьте ссылку на «Политику конфиденциальности», где пользователи смогут узнать, каким образом их информация будет использоваться.
 //-- Связанные шаблоны проектирования --// 
   Даже если в форме четко указаны обязательные поля, проектировщики все равно должны стремиться максимально сократить общее количество полей в форме – как дополнительных, так и обязательных (SHORT FORMS). Кроме того, если пользователь не заполняет обязательное поле, покажите ему сообщение на той же самой странице, на которой он не заполнил одно из обязательных полей (ERROR MESSAGES).


   SMART DEFAULTS («УМНЫЕ» ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ)

 //-- Проблема --// 
   С добавлением каждого элемента формы увеличивается как время, которое пользователь тратит на заполнение формы, так и вероятность возникновения ошибок. Кроме того, если в формах из нескольких частей пользователю приходится несколько раз вводить одну и ту же информацию, увеличивается не только время, необходимое для заполнения формы, но также возникает необходимость, чтобы приложение проверяло, каждый раз вводилась одна и та же информация.
 //-- Решение --// 
   Применяйте соответствующие значения по умолчанию, в зависимости от того, что, скорее всего, выберут или введут пользователи; можно исходить из того, что пользователь выбрал или ввел ранее (рис. 2.21). Однако не стоит автоматически повторно вводить те элементы формы, которые должны быть подтверждены (например, повторно вводить пароль или согласие пользователя с условиями и положениями использования) или имеют отношение к безопасности (например, смена пароля).
   Рис. 2.21. В сервисе Basecamp по умолчанию задана сегодняшняя дата в поле When's it due? (Когда будет готово) и данные о зарегистрированном пользователе в поле Who's responsible? (Кто отвечает?), а также установлен флажок Email 48-hours before it's due (Напомнить мне по электронной почте за 48 часов до того, как срок истечет), чтобы упростить процесс добавления новой задачи

 //-- Зачем --// 
   Применение соответствующих значений по умолчанию сводит к минимуму необходимость вводить или выбирать данные. Это сокращает общее время, необходимое для выполнения задания, и количество ошибок при вводе данных. В некоторых случаях, использование значений по умолчанию может устранить необходимость заполнять форму и сведет задачу пользователя просто к подтверждению информации. Например, в приложениях для электронной коммерции пользователям, которые ранее предоставляли информацию об адресе доставки и адресе выставления счета (и разрешили сохранить эту информацию), не нужно заново заполнять все поля на страницах оформления покупки. Вместо этого после нажатия кнопки «Сделать заказ» их можно направить на страницу предварительного просмотра/подтверждения. Поскольку у большинства пользователей адрес доставки и адрес выставления счета меняются нечасто, время оформления заказа сильно сокращается; однако у пользователей должна быть возможность внести изменения в эту информацию.
   Значения по умолчанию выполняют еще одну функцию: у пользователей появляется пример, какие данные и в каком формате они должны вводить, что сокращает вероятность возникновения ошибки при вводе данных (van Duyne et al., 2006).
 //-- Как --// 
   Анализируйте каждый элемент формы – поля ввода текста, переключатели, раскрывающиеся списки и т. д. – и если можно логически предположить, исходя из ранее введенной пользователем информации или из контекста, какие данные будет вводить пользователь, введите эти значения самостоятельно.
   Настройки по умолчанию можно применить и к последовательности выполнения заданий; например, если пользователь выполнил задание А и, скорее всего, далее он приступит к выполнению задания Б, направьте пользователей непосредственно на страницу выполнения задания Б (рис. 2.22).
   Рис. 2.22. В сервисе Basecamp для усовершенствования процесса смены заданий применяются настройки по умолчанию. Когда пользователи создают список заданий («To-do»), на странице отображается форма Enter a to-do item (Введите задание), и пользователям не приходится щелкать по элементу Add a To-Do (Добавить задание)

   Не применяйте значения по умолчанию для персональной информации
   Для персональной информации, такой как пол, обращение, возраст, раса и т. д., не применяйте значения по умолчанию, поскольку это может показаться оскорбительным некоторым пользователям или будет воспринято как пристрастность. Например, если установить пол – мужской или женский – по умолчанию, у пользователей может возникнуть ощущение, что вы пристрастны; то же самое произойдет, если вы установите по умолчанию обращение Господин или Госпожа.
   Кроме того, когда неясно, необходим ли для данного приложения определенный вид персональных данных, лучше обозначить соответствующие поля как необязательные или предоставить пользователям возможность скрыть эту информацию. То есть в приложениях, посвященных поиску пары, пользователи понимают, зачем нужно указывать свой пол. Однако при регистрации электронного ящика пользователям может быть непонятно, зачем нужно указывать свой пол.
   Не устанавливайте по умолчанию значения там, где предоставлена возможность выбора
   Когда пользователю предоставляется возможность выбора, например, при оформлении подписки на новостную рассылку от компании или посредника, убедитесь, что выбор по умолчанию не отражает интересы компании. Если пользователи читают формы невнимательно, они могут подписаться на рассылки или услуги, на которые на самом деле подписываться не хотят. А впоследствии они будут воспринимать рассылку компании как спам или перестанут доверять этой компании.
 //-- Связанные шаблоны проектирования --// 
   Разумные настройки по умолчанию являются еще одним способом упрощения и сокращения формы (SHORT FORMS). Кроме того, они уменьшают вероятность возникновения ошибки и появления сообщений об ошибке (ERROR MESSAGES).


   FORGIVING FORMAT (ВЕЛИКОДУШНЫЙ ФОРМАТ)

 //-- Проблема --// 
   В формах пользователям часто приходится предоставлять такую информацию, как номера телефонов, номера банковских карт, даты и т. д., а подобную информацию можно вводить в различных форматах. Например, пользователь может по-разному ввести телефонный номер: без пробелов (например, 3035555555), разделив цифры пробелами или дефисами (например, 303 555 5555 или 303-555-5555), или разделив цифры иным образом (например (303) 555-5555). Даже когда у пользователей есть пример, они все равно могут ввести данные не в том формате. Сообщение об ошибке может замедлить процесс заполнения формы и оттолкнуть пользователей, если несколько элементов формы обладают жесткими требованиями к формату.
 //-- Решение --// 
   Пусть пользователи вводят данные в различных форматах: спроектируйте веб-приложение таким образом, чтобы эти форматы были допустимы и чтобы в случае ввода данных в каком-либо формате не появлялось сообщение об ошибке (рис. 2.23).
   Рис. 2.23. На сайте канала погоды пользователи могут ввести индекс или название своего города, чтобы узнать информацию о погоде. Для этого используется только одно поле для ввода текста вместо двух отдельных

 //-- Зачем --// 
   Для некоторых видов информации (например, даты, номера телефонов, почтовый индекс и т. д.) существует несколько «правильных» способов ввода данных. Во время заполнения формы не обременяйте пользователей необходимостью определенным образом форматировать данные, гораздо проще, чтобы приложение допускало различные форматы данных и самостоятельно обрабатывало их необходимым образом.
 //-- Как --// 
   Продумайте альтернативные способы ввода данных и затем доработайте приложение так, чтобы оно принимало эти варианты и верно их интерпретировало. Для допускающих двоякое толкование данных предоставьте пользователям возможность выбрать из нескольких вариантов, так чтобы у них не возникло ощущения, будто они допустили ошибку и чтобы они чувствовали, что успешно продвигаются вперед (рис. 2.24). Также можно предложить пользователям выбор из нескольких вариантов (рис. 2.25; см. также шаблон AUTOSUGGEST/ AUTOCOMPLETION в главе 8).
   Рис. 2.24. На сайте Expedia пользователям предлагается выбрать один аэропорт из нескольких вариантов, когда введенные данные (в данном примере Сан-Франциско) могут трактоваться по-разному

   Рис. 2.25. На сайте Kayak применяется шаблон AUTOSUGGEST/ AUTOCOMPLETION, предлагающий пользователю выбор из нескольких вариантов, чтобы сократить количество возможных ошибок

   Предложите пользователям подсказки при вводе/приглашение к вводу
   Даже если приложение разработано таким образом, что допустимы различные форматы, продемонстрируйте пользователям пример хотя бы одного приемлемого формата (см. шаблон INPUT HINTS/PROMPTS далее в этой главе). Такие инструкции помогают пользователям избавиться от сомнений по поводу надлежащего способа ввода данных.
 //-- Связанные шаблоны проектирования --// 
   Различные способы форматирования вводимых данных – это лишь один из способов уменьшить количество ошибок при вводе и упростить процесс заполнения формы. Ошибки при вводе можно сократить также с помощью предоставления необходимых инструкций по форматированию (INPUT HINTS/PROMPTS) и предоставив пользователю возможность выбрать из нескольких вариантов (см. шаблон AUTOSUGGEST/ AUTOCOMPLETION в главе 8).


   KEYBOARD NAVIGATION (УПРАВЛЕНИЕ КЛАВИАТУРОЙ)

 //-- Проблема --// 
   При заполнении форм пользователи часто перемещаются между полями с помощью клавиши Tab или выбирают какой-либо вариант из раскрывающегося списка с помощью клавиш клавиатуры. Если пользователям в обязательном порядке придется применять то мышку, то клавиатуру для заполнения определенных частей формы, тогда многие пользователи не просто не захотят, но и не смогут заполнить эту форму по техническим причинам.
 //-- Решение --// 
   Пускай пользователи будут иметь возможность применять клавишу Tab для перехода от одного элемента к другому. Помимо этого убедитесь, что пользователи могут нажать клавишу Enter для отправки формы; а также, если это поможет повысить эффективность процесса взаимодействия, предоставьте им возможность перемещаться по приложению с помощью сочетаний клавиш клавиатуры (рис. 2.26). Также убедитесь, что с помощью клавиш клавиатуры можно просмотреть раскрывающиеся списки, особенно те из них, которые созданы на основе сценариев JavaScript.
   Рис. 2.26. В этом примере пользователи могут перемещаться по форме с помощью клавиши Tab, а также переходить от закладки к закладке с помощью сочетаний клавиш. Например, на вкладку Billing Address (Адрес для выставления счета) можно перейти, нажав сочетание Alt+3 (Windows) или Ctrl+3 (Mac)

 //-- Зачем --// 
   Позволив пользователям пользоваться клавиатурой для навигации, вы не только сделаете форму доступнее, но также увеличите скорость ее заполнения, поскольку в этом случае пользователям не придется во время заполнения формы регулярно менять клавиатуру на мышь и наоборот.
 //-- Как --// 
   Разрешите навигацию с помощью клавиатуры во всех формах, т. е. пользователи должны получить возможность заполнять формы, даже если они будут использовать только клавиатуру, либо только мышь. Уделите особенное внимание процессу перемещения между полями. По умолчанию веб-браузеры предоставляют возможность перемещаться между элементами страницы (вкладками, элементами формы и ссылками) в зависимости от того порядка, в котором они расположены в HTML-коде. На самых хорошо организованных страницах проектировщикам не приходится указывать порядок перемещения. Однако в тех случаях, когда HTML-код не соответствует последовательности смены заданий пользователя (т. е. тому порядку, в котором пользователь будет заполнять форму), замените заданный по умолчанию порядок перемещения с помощью атрибута tabindex, как показано в примере:

   

   Это необходимо в большинстве случаев, когда формы расположены в несколько колонок и важно, чтобы клавиша Tab перемещала курсор к следующему по логике элементу формы, а не просто слева направо или сверху вниз – в порядке, в котором расположены элементы формы в HTML коде.

   Примечание
   Значением атрибута tabindex может быть число от 1 до 32 767. При кодировании формы и применении атрибута tabindex увеличьте значение tabindex на 10. Если возникает необходимость изменить форму и вставить один или несколько элементов между существующими элементами формы, можно использовать числа между существующими значениями tabindex, это не повлияет остальные элементы формы.

   Будьте внимательны при установке курсора в первом поле формы
   Когда первоочередной задачей для пользователей является заполнение формы (например, при поиске, регистрации, входе в учетную запись и т. д.), обычно допускается, чтобы при загрузке страницы курсор располагался в первом поле – так, чтобы пользователи могли сразу приступить к заполнению формы. Однако избегайте размещения курсора в каком-либо поле формы на тех страницах, на которых располагаются навигационные элементы, позволяющие пользователям перейти к другим частям приложения, или на страницах, содержащих необходимый для чтения контент (например, инструкции по заполнению формы или сообщения об ошибках). Автоматическое размещение курсора в таких случаях может сделать страницу непригодной для пользователей, у которых установлена программа экранного доступа, поскольку они, скорее всего, не увидят информацию, расположенную выше данного поля формы.
   Попробуйте настроить горячие клавиши
   Разработайте горячие клавиши для приложений, которые будут часто использоваться и основным приоритетом которых будет эффективность взаимодействия (например, приложения для поддержки покупателей). Горячие клавиши можно разработать на основе HTML с помощью атрибута accesskey, как в следующем примере:

   

   Благодаря спецификации атрибута accesskey, пользователи смогут переходить к тому или иному элементу формы при нажатии клавиши Alt (или Ctrl (Mac)) плюс той буквы или цифры, которая указана в атрибуте accesskey.
   При создании горячих клавиш важно не создавать и не переопределять горячие клавиши, которые часто используются в браузерах. Список этих горячих клавиш приведен в табл. 2.1.
 //-- Таблица 2.1. Горячие клавиши в браузерах --// 

 //-- Связанные шаблоны проектирования --// 
   Предоставление пользователям возможности пользоваться клавиатурой для навигации не только помогает быстро заполнить форму, но также необходимо для того, чтобы веб-страницы были доступными (см. шаблон ACCESSIBLE FORMS в главе 11).

   Примечание
   Чтобы пользователям было известно о существовании горячих клавиш, подчеркните соответствующие клавиши с помощью таблицы стилей.
   В случае с управляющими кнопками для этого необходимо применить элемент button так, как показано в следующем примере:
   
   
   В этом случае кнопка выглядит следующим образом, а пользователи могут нажать Alt (или Ctrl) +k на клавиатуре, чтобы ей управлять:
   Подчеркивание невозможно для элемента input type="button", поскольку теги HTML недействительны в пределах значения его атрибута, где указывается текст управляющей кнопки.



   INPUT HINTS/PROMPTS (ПОДСКАЗКИ ПРИ ВВОДЕ/ПРИГЛАШЕНИЕ К ВВОДУ)

 //-- Проблема --// 
   В определенных случаях пользователи могут не знать, какие данные вводить в определенные поля и нужно ли при этом придерживаться какого-либо формата. По этой причине пользователи могут предоставить либо неверную информацию, либо ввести данные в неверном формате.
 //-- Решение --// 
   Предоставьте пользователям необходимые подсказки, объяснения или инструкции, и покажите им, как они должны вводить данные (рис. 2.27). В тех ситуациях, когда данные могут быть введены несколькими способами, применяйте шаблон FORGIVING FORMAT (о котором упоминалось ранее).
   Рис. 2.27. При создании группы на сайте LinkedIn пользователи получают необходимые подсказки и инструкции по загрузке логотипов группы, описание таких требований, как размеры изображения, форматы и размеры файлов, а также здесь показан пример описания группы, встроенный в поле для ввода текста

 //-- Зачем --// 
   Разъяснив, что должен сделать пользователь, вы избавите его от необходимости догадываться и сократите вероятность возникновения ошибок, что увеличивает скорость заполнения формы.
 //-- Как --// 
   Существует несколько способов, как предоставить пользователям подсказки и инструкции (рис. 2.28):
   Рис. 2.28. При заполнении регистрационной формы Windows Live пользователи получают инструкции по вводу пароля, альтернативного электронного адреса и секретного вопроса. Кроме того, когда пользователи приступают к заполнению поля, им предоставляется дополнительная информация и возможность получить помощь, пройдя по специальной ссылке

   • Предоставьте примеры, как можно ввести данные. Например, если в поле ввода электронного адреса можно ввести несколько адресов, покажите пример того, как несколько введенных электронных адресов разделены запятыми или другим разделительным знаком.
   • Покажите, какие форматы приемлемы для таких данных, как даты, номера телефонов, номера кредитных карт и т. д. Для дат покажите допустимые форматы следующим образом: мм/дд/гг, дд/мм/гг или мм/дд/гггг; для номеров телефонов в России покажите формат ввода как xxx-xxx-xxxx и т. д.).
   • Покажите, какие ограничения действуют для каждого поля, например, какое минимальное или максимальное количество символов в него можно вводить. Например, в поле для ввода пароля пользователям нужно ввести хотя бы шесть символов, среди которых будет хотя бы один специальный символ, отличный от пробела.
   Пусть подсказки и разъяснения будут короткими – не больше нескольких слов или одного предложения – чтобы пользователи их не игнорировали. Кроме того, располагайте подсказки и примеры как можно ближе к соответствующим элементам формы. Чтобы пользователи не путали подсказки и метки, сделайте подсказки менее заметными с помощью более светлого тона и/или меньшего шрифта.
   Попробуйте использовать динамические контекстуальные подсказки
   В тех случаях, когда подсказки или разъяснения должны содержать подробные или сложные инструкции, попробуйте показывать подсказки динамически, когда пользователь начинает вводить данные в элемент формы или подводит к этому элементу (или группе элементов) указатель мыши (рис. 2.29). Недостаток этого подхода заключается в том, что пользователи должны приступить к вводу текста, чтобы увидеть инструкции.
   Рис. 2.29. На сайте Wufoo подсказки появляются как при наведении указателя мыши на поле, так и когда пользователь начинает вводить данные

   Соотносите размеры полей ввода текста с ожидаемым объемом вводимых данных
   Текстовые поля не должны быть длиннее (или короче), чем ожидаемая длина вводимых данных; когда нельзя точно предугадать длину данных, поле должно быть достаточно длинным, чтобы в него поместилась большая часть данных. Размер поля может служить скрытой подсказкой для пользователя, с помощью которой он сможет определить размер данных, которые нужно ввести. Например, если пользователь собирается ввести свой номер телефона, а текстовое поле рассчитано на семь символов, большинство пользователей поймет, что код города вводить не нужно. Кроме того, если в базе данных сохраняется всего семь цифр номера телефона, необходимо сделать так, чтобы не только текстовое поле отображало семь символов, но и возможный объем вводимых данных был ограничен семью символами. Это можно осуществить с помощью HTML следующим образом:

   

   В данном примере элемент size="7" контролирует длину текстового поля, а элемент maxlength="7" ограничивает количество символов, которые может ввести пользователь, до семи.
   Кроме того, различная длина текстовых полей указывает на то, какой тип данных нужно вводить в поле, а также упрощает процесс поиска информации на странице, особенно когда пользователи редактируют информацию (Mayhew, 1991).
 //-- Связанные шаблоны проектирования --// 
   Сокращение количества ошибок является важным аспектом проектирования результативных форм. Чтобы свести к минимуму ошибки пользователей и сократить время, которое уходит на заполнение формы, применяйте помимо шаблона INPUT HINTS/PROMPTS также такие шаблоны, как REQUIRED FIELD INDICATORS, FORGIVING FORMAT и SMART DEFAULTS.


   ACTION BUTTONS (КНОПКИ ДЕЙСТВИЙ)

 //-- Проблема --// 
   Чтобы перейти к следующему шагу или завершить задание, пользователи должны отправить форму после ее заполнения. Чтобы пользователи могли продолжить выполнение задания и при этом не потерялись какие-либо данные, важно, чтобы пользователи выбирали верное действие.
 //-- Решение --// 
   Предоставьте пользователям возможность отправить форму с помощью управляющей кнопки; также эти кнопки часто называют командными кнопками (Galitz, 2002). Применяйте такие метки, которые будут четко описывать действие кнопки, например «Сохранить изменения», «Зарегистрироваться», «Войти» и т. д. Кроме того, основная управляющая кнопка на странице должна быть выделяющейся, чтобы пользователи ее не пропустили (рис. 2.30).
   Рис. 2.30. В этой форме на сайте LinkedIn четко указано основное действие Send – отправить

 //-- Зачем --// 
   Кнопки обычно отождествляются с выполнением каких-либо действий, например отправкой заполненной формы, что отличает их от ссылок, которые предоставляют возможность перемещаться между страницами. Благодаря их форме (выпуклые, похожи на настоящие кнопки), на кнопки хочется «нажать» или «щелкнуть» по ним. Кроме того, поскольку пользователи встречаются с кнопками в настольных клиентских приложениях, кнопки предоставляют хорошую возможность выбора способа выполнения действия.
 //-- Как --// 
   Применяйте управляющие кнопки (или изображения, напоминающие кнопки) для отправки заполненной формы. Кроме того, убедитесь, что они визуально выделяются больше, чем кнопки с второстепенными действиями, такими как «Отменить», «Вернуться» и т. д. Сделав второстепенные кнопки менее заметными, вы уменьшите вероятность их случайного выбора и возникновения ошибки (Wroblewski, 2008).
   В последнее время все чаще второстепенные действия представлены в виде ссылок, чтобы они меньше выделялись (рис. 2.31). Однако исследование движений глаз, проведенное Врублевски (Wroblewski, 2008), не выявило никаких преимуществ этого подхода по сравнению с тем, когда второстепенные действия представлены в виде управляющих кнопок (даже так же выделенных, как и кнопки для первостепенных действий); количество ошибок при обоих этих подходах не различалось.
   Рис. 2.31. В приложении Dell основное действие оформления заказа (Checkout) представлено в виде кнопки, а второстепенное действие продолжения покупок (Continue Shopping) представлено в виде ссылки

   Если управляющих кнопок слишком много, интерфейс может казаться перегруженным и пользователям будет сложно решить, какое действие нужно выполнить, чтобы завершить задание. В подобных случаях попробуйте сменить несколько управляющих кнопок на ссылки (или ссылки с иконками), особенно если эти кнопки второстепенны. Кроме того, попытайтесь объединить связанные друг с другом кнопки в несколько внешне разделенных групп.
   Названия кнопок должны быть понятными и лаконичными
   Используйте названия, четко описывающие действия, чтобы свести к минимуму любую возможность совершения ошибочного действия. Поскольку кнопки используются, чтобы выполнить задание или достичь результата, то для представления этого задания или результата при именовании кнопок используйте глаголы. Избегайте использования таких ярлыков, как «Отправить», которые отражают только сам процесс отправки формы; вместо этого прибегайте к таким названиям, как «Сохранить изменения», «Найти авиабилет» или «Найти пользователей» (рис. 2.32). Ниже приведены два дополнительных совета по именованию управляющих кнопок:
   • Использование «Убрать» и «Удалить». Используйте название «Удалить», если данные будут удаляться окончательно и не будет возможности внести вместо них другие данные. При этом используйте название «Убрать», если данные удаляются только из этого контекста, но доступны в других контекстах. Например, во время отправки электронного письма для того, чтобы удалить документ из списка приложений, используйте название «Убрать приложение» или «Убрать». А чтобы удалить сообщение из списка сообщений, используйте «Удалить сообщение» или «Удалить».
   • Использование «Добавить» и «Новое». Используйте название «Новое» при создании абсолютно новой записи (или элемента данных). Используйте название «Добавить» при выборе или соотнесении существующего элемента данных с другими элементами данных. Например, чтобы создать новую пользовательскую учетную запись, используйте название «Новый пользователь» или «Новое», а чтобы создать новый список дел, используйте «Добавить новый список дел» или «Добавить».
   Рис. 2.32. На сайте Expedia кнопкам присвоены такие метки, которые описывают действия, например, Search for flights (Найти авиабилет) и Search for flights + hotels (Найти авиабилет + отель)

   Выравнивайте первостепенные управляющие кнопки относительно полей для ввода данных
   Выравнивайте первостепенные управляющие кнопки относительно полей для ввода данных (рис. 2.33). Исследование движений глаз, проведенное Врублевски (Wroblewski) и Этре (Etre) в 2007 году, показало, что выравнивание управляющих кнопок относительно полей для ввода данных приводит к сокращению времени заполнения формы, поскольку так пользователям проще заполнять форму.
   Рис. 2.33. На странице входа в учетную запись сервиса Basecamp первостепенное действие Sign In (Войти) выровнено относительно элементов формы

   Предоставьте пользователям возможность выполнять первостепенное действие путем нажатия на клавишу Enter
   Первостепенное действие формы должно выполняться по умолчанию, если пользователи нажимают клавишу Enter. Это особенно важно при заполнении тех форм, которые содержат всего одно поле для ввода, например, «Поиск». Эту задачу можно выполнить с помощью HTML следующим образом:

   Coxpaнить изменения

   Будьте внимательны при отключении первостепенного действия
   В коротких формах иногда допустимо отключить кнопку первостепенного действия до тех пор, пока пользователи не заполнят необходимые поля (рис. 2.34). Этот способ дает возможность избежать тех ошибок, которые вызваны невнимательной отправкой не до конца заполненной формы. Однако такой подход может оказаться неподходящим для больших или сложных форм, поскольку пользователи могут не понять, почему первостепенное действие невозможно выполнить. Они могут прийти к ошибочному выводу, что форма работает неверно и отказаться от ее заполнения.
   Рис. 2.34. На сайте Campfire кнопка Sign me up… (Зарегистрировать меня) отключена до тех пор, пока все поля не будут заполнены

   После первого щелчка отключайте управляющую кнопку
   Выполнение одного и того же действия несколько раз (при повторном нажатии управляющей кнопки) может привести к нежелательным последствиям. Например, неоднократное нажатие на управляющую кнопку может привести к тому, что заказ будет размещен несколько раз. В таких случаях отключайте управляющую кнопку или скрывайте ее и заменяйте такой надписью, как «Обработка…» или «Пожалуйста, подождите…». Так пользователи удостоверятся, что их действие подтверждено и веб-приложение ждет ответа (рис. 2.35).

   Рис. 2.35. На сайте компании Advanta кнопка Continue (Продолжить) заменяется текстом Please Wait… (Пожалуйста, подождите), чтобы пользователи знали, что они успешно выполнили действие и приложение ждет ответа

   Уберите кнопки сброса
   Кнопка «Сброс» возвращает форму к ее исходному состоянию. Если пользователи начинают заполнять форму с чистого листа, то, щелкнув по кнопке «Сброс», они удалят все введенные данные, а если они вносили изменения в уже заполненную ранее форму, то, щелкнув по кнопке «Сброс», они отменят все свои изменения. Отменить эту операцию невозможно. По этой причине не стоит использовать кнопку «Сброс» (Nielsen, 2000).
 //-- Связанные шаблоны проектирования --// 
   Чтобы форма была отправлена, обычно ее необходимо каким-либо образом подтвердить. Если форме было отказано в подтверждении, пользователи должны быть проинформированы о причинах отказа. Обычно это можно осуществить с помощью шаблона ERROR MESSAGES.


   ERROR MESSAGES (СООБЩЕНИЯ ОБ ОШИБКАХ)

 //-- Проблема --// 
   Ошибки неизбежны, даже если приложение спроектировано самым удобным образом. Даже если метки и инструкции очень понятные и четкие, не все пользователи смогут успешно и точно заполнить форму с первого раза. Особенно распространены следующие ошибки:
   • Отсутствующие данные. Когда пользователь не заполняет одно или несколько обязательных полей.
   • Неверный формат. Когда пользователь вводит данные в неверном формате – например, неверный тип данных (цифры вместо букв), неверное количество символов (либо больше, либо меньше, чем необходимо), неверный формат даты, неверно записаны дробные числа и т. д.
   • Недействительная информация. Когда предоставленная информация неверна – например, неверное имя пользователя и пароль, при указании временного промежутка дата «до» стоит перед датой «с» и т. д.
 //-- Решение --// 
   Покажите пользователям сообщение об ошибке, в котором будут четко обозначены причины и инструкции по их устранению. Помимо этого сообщения об ошибке должны отображаться на одной странице с формой и при этом должны сохраняться данные, которые ввел пользователь (рис. 2.36). У этого подхода два несомненных достоинства.
   Рис. 2.36. Adobe Buzzword демонстрирует сообщение об ошибке над полями ввода данных

   1. Пользователи могут перечитывать сообщение во время исправления ошибки.
   2. Пользователям не приходится повторно вводить верные данные.

 //-- Зачем --// 
   Когда хорошо продумана система исправления ошибок, пользователи могут быстро все исправить и при этом не будут отвлекаться от своего основного задания (или цели).
 //-- Как --// 
   Самое главное – пользователь должен узнать об ошибке немедленно. Привлеките его внимание к ошибке, выделив ярким цветом либо фон, либо цвет сообщения. Помимо выделения цветом попробуйте добавить предупреждающую иконку (или любую другую соответствующую иконку), чтобы привлечь внимание пользователя к сообщению об ошибке и/или тому элементу формы, в котором эта ошибка произошла (рис. 2.37).
   Рис. 2.37. В регистрационной форме на сайте банка Washington Mutual четко обозначается, когда происходит ошибка, и для привлечения внимания пользователей к ошибке используется предупреждающая иконка

   Предоставьте пользователю инструкции по устранению ошибки
   Это можно сделать в простой форме – попросить пользователей выполнить какой-либо определенное простое действие (например, «Повторно введите имя пользователя и пароль. Затем нажмите на кнопку “Войти”») или предложить способ исправления ошибки (например, «При вводе имени пользователя учитывается регистр клавиатуры. Проверьте, не нажата ли клавиша Caps Lock»).
   Сообщения об ошибке должны отображаться на одной странице с формой
   Веб-приложения, в которых сообщения об ошибке отображаются на отдельных страницах, принуждают пользователей к тому, чтобы прежде, чем вернуться на страницу с ошибкой, он запомнил, в чем заключается ошибка, и инструкции по ее исправлению. Это довольно непросто, если на странице несколько ошибок, поскольку для исправления ошибок пользователям придется несколько раз переключаться между страницами. Если сообщения об ошибке отображаются на одной странице с формой, пользователю не придется переключаться между страницами, что значительно упростит процесс исправления ошибок.
   Сохраняйте информацию, введенную пользователем
   Важно, чтобы введенные пользователем данные не были потеряны при появлении сообщения об ошибке. Пользователей раздражает необходимость вводить одну и ту же информацию несколько раз, и это может привести к тому, что они откажутся от заполнения формы (рис. 2.38).
   Рис. 2.38. В сервисе SugarSync во время появления сообщения об ошибке информация, введенная пользователем, сохраняется. Допускается удалить пароль, поскольку он в любом случае не виден пользователю

   Укажите на «проблемные» зоны
   Помимо отображения сообщений об ошибках четко укажите те элементы формы, которые вызвали ошибки. Это особенно важно в больших формах, где пользователям приходится искать, какой элемент формы вызвал ошибку (рис. 2.39).
   Рис. 2.39. В сервисе Highrise сообщение об ошибке отображается на той же самой странице и четко указывает, что необходимо сделать, чтобы ее исправить

 //-- Связанные шаблоны проектирования --// 
   Хотя сообщения об ошибках являются важной частью проектирования формы, необходимо сделать все возможное, чтобы ошибки предотвратить. Для этого можно четко указать обязательные поля (REQUIRED FIELD INDICATORS), предоставить необходимые инструкции по форматированию и типу данных (INPUT HINTS/PROMPTS), с помощью настроек по умолчанию свести к минимуму количество вводимых пользователем данных (SMART DEFAULTS), а также позволить пользователям вводить данные в свободном формате (FORGIVING FORMAT).



   Глава 3
   Аутентификация пользователя


   Введение

   Когда веб-приложение предполагает взаимно однозначное взаимодействие с пользователем и сохранение персональных данных о пользователе, возникает необходимость, чтобы пользователи создавали учетную запись (REGISTRATION) и выбирали уникальные учетные данные для доступа к веб-приложению. При регистрации пользователи в некоторых случаях должны ввести набор буквенно-цифровых символов с искаженного изображения, чтобы предотвратить рассылку спама, а также подтвердить, что они являются людьми, а не компьютерными программами (CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart, – Полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей).
   Когда созданы уникальные учетные данные, пользователи могут идентифицироваться (LOG IN) и получить доступ к своей личной информации. После входа в систему и выполнения необходимых заданий пользователям во многих случаях необходимо выйти из приложения таким образом, чтобы неавторизованные пользователи не могли получить доступ и изменить информацию из их учетной записи (LOG OUT). Во многих приложениях предусмотрен автоматический выход из системы, если пользователь какое-то время неактивен (AUTOMATIC LOGOUT).
   Поскольку часто приложением пользуются лишь время от времени, пользователи забывают свои учетные данные, и им необходим способ их восстановить. В зависимости от того, какой уровень безопасности предусматривается приложением, пользователям может понадобиться предоставить какую-либо личную информацию. Например, указать адрес электронной почты, на который зарегистрирована эта учетная запись, или ответить на один или несколько контрольных вопросов, составленных во время регистрации (FORGOT USERNAME/PASSWORD).


   REGISTRATION (РЕГИСТРАЦИЯ)

 //-- Проблема --// 
   В веб-приложениях часто необходимо, чтобы идентификационные данные пользователя были уникальны. Это необходимо для того, чтобы предотвратить возможность несанкционированного доступа к личной и конфиденциальной информации (например, к медицинским или финансовым данным), сделать пользование приложением еще удобнее (например, сохраняя информацию об адресе доставки и адресе выставления счета) и предоставить возможность делиться информацией (например, фотографиями). Однако несмотря на все эти преимущества, пользователи часто сомневаются, стоит ли предоставлять личную информацию, и нередко избегают приложений, в которых необходимо создавать учетную запись.
 //-- Решение --// 
   Отложите регистрацию на самый последний момент и позвольте пользователям изучить приложение, чтобы они в полной мере оценили все преимущества создания учетной записи. Кроме того, если пользователи готовы отказаться от ряда удобств, дайте им возможность совершить операцию, не регистрируясь. На сайте Topix.net значительно увеличилось количество и качество сообщений, когда для того, чтобы оставить сообщение в форуме, сайт перестал требовать от пользователей зарегистрироваться (Blake, 2006). Когда регистрация неизбежна, четко обозначьте преимущества регистрации и узнавайте у пользователей только ту информацию, которая необходима для создания учетной записи (рис. 3.1).
   Рис. 3.1. У сервиса Crazy Egg одна из самых простых и коротких регистрационных форм. Для регистрации пользователь должен просто указать свой электронный адрес и пароль, и согласиться с условиями использования и политикой конфиденциальности

 //-- Зачем --// 
   В большинстве случаев создание учетной записи в приложении не входит в задачи пользователей. Обычно в их задачу входит покупка товара, выкладывание информации, оплата счетов и т. д. Предложение создать учетную запись или зарегистрироваться обычно отвлекает пользователей от их основной задачи и прерывает их взаимодействие с системой. По этой причине регистрацию нужно откладывать на самый последний момент. Этот подход часто практикуется в приложениях для электронной коммерции (например, Amazon, Buy.com), информационных порталах (например, Yahoo! MSN, Morningstar) и приложениях для информационного обмена (например, Flickr, YouTube, SlideShare), где пользователь может изучить контент, не создавая учетную запись. Только когда пользователи хотят совершить покупку, добавить контент, оставить комментарий или изменить внешний вид приложения, эти приложения требуют, чтобы пользователи зарегистрировались. По этой причине поздняя регистрация позволяет пользователям оценить все преимущества приложения и лучше осознать необходимость и достоинства создания учетной записи.
 //-- Как --// 
   Первое и основное: формы регистрации должны быть настолько короткими, насколько это возможно, и должны запрашивать только необходимую информацию (рис. 3.2). В большинстве случаев к такой информации относится уникальное имя пользователя (или ID пользователя, или электронный адрес) и пароль.
   Рис. 3.2. В приложении Wufoo, разработанном для создания различных онлайновых форм, применяется простая форма регистрации, в которой нужно указать только самую необходимую информацию

   Поскольку пользователи не видят введенный пароль, попросите их подтвердить пароль путем повторного его введения. Кроме того, если это необходимо с юридической точки зрения, попросите пользователей подтвердить свое согласие с условиями использования.
   Когда пользователи должны создать свою учетную запись, важно, чтобы формы были как можно короче, и в них выяснялась только самая необходимая информация, так чтобы пользователи отвлеклись от выполнения своих задач лишь на очень короткий промежуток времени. Узнавая у них информацию, которая не является необходимой, вы увеличиваете время, которое уходит на регистрацию, и вероятность ошибки пользователя. Это может привести к отказу от регистрации или к получению неверных или излишних данных.
   Когда вам нужно узнать личную информацию, такую как дата рождения, пол, раса и т. д., четко объясняйте, для чего эта информация необходима, и как она будет использоваться (рис. 3.3).
   Рис. 3.3. На сайте Papa John в регистрационной форме объясняется, почему пользователи должны указать свой возраст: потому что им должно быть больше 13 лет для того, чтобы они могли сделать заказ

   Попробуйте использовать электронный адрес в качестве имени пользователя
   Во время регистрации пользователям часто приходится придумывать уникальный идентификатор для своей учетной записи, такой как имя пользователя или электронный адрес. Электронные адреса часто оказываются более удачным вариантом, поскольку они всегда уникальны, и их легче запомнить, даже если у пользователей несколько электронных адресов. Кроме того, когда пользователю нужно напомнить его регистрационные данные, проще отправить напоминание на его зарегистрированный электронный адрес (см. шаблон FORGOT USERNAME/ PASSWORD далее в этой главе).
   Применяйте полностью автоматизированный публичный тест (CAPTCHA), чтобы зарегистрироваться мог только человек
   В Интернете настолько много программ-пауков, что уже сложно отличить их от пользователей-людей. Включите автоматизированный тест в форму регистрации и сократите количество регистраций, произведенных подобными программами (рис. 3.4).
   Рис. 3.4. Для регистрации на сервисе Nabble пользователи должны пройти автоматизированный CAPTCHA-тест

   Автоматизированный тест CAPTCHA требует от пользователей, чтобы они ввели в специально отведенное поле символы с искаженного изображения, которое содержит буквы и/или числа. Способность верно определить символы искаженного изображения выступает в качестве доказательства того, что форму заполняет человек, а не программа (см. далее шаблон CAPTCHA).
   Хотя тест CAPTCHA применяется все чаще, пользователям приходится прикладывать дополнительные усилия на то, чтобы ввести эту информацию. Калбуччи (Calbucci, 2008) обнаружил, что когда на сайте Sampa (www.sampa.com) убрали тест CAPTCHA при регистрации, количество зарегистрировавшихся увеличилось на 9,2 %.
   Попробуйте применить «ленивую» регистрацию
   Как уже отмечалось, регистрация часто отвлекает пользователя от выполнения основной задачи. По этой причине старайтесь откладывать регистрацию на самый последний момент, чтобы пользователи могли изучить приложение, прежде чем им предложат зарегистрироваться. Например, на сайте Morningstar пользователям предлагается зарегистрироваться или войти в свою учетную запись только тогда, когда они доходят до страницы, на которой им необходимо указать личную информацию (например, при создании инвестиционного портфеля).
   Чтобы процесс регистрации был максимально эффективным, даже когда он отложен на потом, можно воспользоваться подходом «ленивой» регистрации, т. е. собирать информацию о пользователе из файлов cookie его браузера во время работы с приложением. Как утверждает Махемофф (Mahemoff, 2006):

   «Когда пользователь взаимодействует с приложением, в его учетной записи сохраняется определенная информация. Некоторые данные вносит сам пользователь, рекомендуется указывать подобную информацию так, чтобы пользователь мог ее внести самостоятельно. Таким образом, исходный профиль можно рассматривать как структуру с множеством дыр. Некоторые из этих дыр постепенно восполняются автоматически, а другие восполняет сам пользователь».

   Благодаря такому способу сбора информации, к тому моменту, как пользователь должен будет заполнить регистрационную форму, некоторые ее поля могут быть заранее заполнены за него, и пользователю нужно будет только подтвердить эти данные, а не вводить их. Например, если пользователь собирается подписаться на новостную рассылку, у приложения уже будет адрес его электронной почты, и эту информацию пользователю не придется вносить заново.
   Попробуйте обойтись без регистрации
   Предоставьте пользователям возможность пользоваться приложением без регистрации в тех случаях, когда просто хотят быстро выполнить ту или иную операцию. Такой подход часто встречается в приложениях для электронной коммерции, особенно в тех случаях, когда пользователи просто покупают подарок кому-либо и больше приложением не пользуются (рис. 3.5). Пользователям можно предложить зарегистрироваться на финальных этапах транзакции (или при оформлении покупки и оплате заказа), перечислив все преимущества регистрации (например, возможность отслеживать выполнение заказа).
   Рис. 3.5. На сайте Office Depot пользователи могут совершить покупку без регистрации. Также пользователям сообщается, что они смогут создать учетную запись во время оплаты

   Четко обозначьте преимущества регистрации
   Если невозможно отложить регистрацию в приложении, четко обозначьте все преимущества регистрации (рис. 3.6).
   Рис. 3.6. На сайте сервиса Netflix не просто перечислены преимущества регистрации, но также на этой же самой странице объяснено, как сервис функционирует. Пользователи могут пройти по специальной ссылке и подробнее ознакомиться с тем, как выбирать фильмы, или с предложением воспользоваться бесплатным тестовым периодом; более того, на сайте Netflix указан номер телефона, по которому можно позвонить, если возникли вопросы

   Во многих приложениях недостаточно просто перечислить преимущества, особенно если регистрация платная. В подобных случаях предложите пользователям демонстрационный тур, в котором будут объясняться все достоинства приложения, и/или позвольте им создать бесплатную пробную учетную запись на ограниченный период времени или с ограниченным функционалом (рис. 3.7).
   Рис. 3.7. Сервис Basecamp (от 37Signals) предлагает пользователям тур по приложению, чтобы они смогли оценить его функционал и преимущества. Пользователи могут создать бесплатную пробную учетную запись, чтобы получить возможность самостоятельно изучить приложение. Хотя при бесплатной регистрации пользователь лишен ряда возможностей, ему проще увидеть все преимущества регистрации

   Попробуйте предоставить пользователям возможность воспользоваться системами «унифицированной идентификации»
   Пользователю может быть сложно запомнить регистрационную информацию для одного или более приложений, что может привести к проблемам с безопасностью (например, хранение информации в письменном виде или использование очень простых паролей). Даже когда безопасность не так важна, забытые регистрационные данные могут привести к ненужным задержкам в выполнении заданий. По этой причине, по возможности, предоставляйте пользователям возможность регистрироваться с помощью сервисов «унифицированной идентификации», например OpenID или Windows CardSpace.
   OpenID – это открытый стандарт, который позволяет пользователям создавать и применять пару имя пользователя и пароль для входа в любое веб-приложение, поддерживающее OpenID; для получения более подробной информации зайдите на сайт www.openid.net. Таким образом, разрешив поддержку OpenID, вы либо устраните необходимость регистрации либо по крайней мере сократите количество данных, которые должен предоставить пользователь для создания учетной записи (рис. 3.8). Поскольку не все пользователи зарегистрированы в OpenID, обеспечивать нормальный процесс регистрации все равно необходимо.
   Рис. 3.8. На сайте Ma.gnolia пользователи могут пройти стандартную регистрацию и выбрать себе имя пользователя и пароль, а также воспользоваться системой OpenID

   Подтверждайте регистрацию
   При необходимости требуйте от пользователей подтверждения регистрации, чтобы препятствовать мошенничеству. Обычно для этого на указанный во время регистрации электронный адрес отправляется письмо, содержащее ссылку для подтверждения. Только после того как пользователи проходят по этой ссылке (или вставляют регистрационный URL-адрес в адресную строку браузера), их регистрация считается завершенной. Чтобы письмо случайно не потерялось, предлагайте пользователям проверить папку со спамом (рис. 3.9).
   Рис. 3.9. На сайте YouTube пользователи для подтверждения регистрации должны пройти по ссылке из присланного им электронного письма. На сайте указывается, что если в течение нескольких минут после регистрации пользователь не получил электронное письмо, то необходимо проверить папку для спама

   Развейте сомнения пользователей по поводу конфиденциальности
   Пользователи могут сомневаться, стоит ли им регистрироваться, потому что им неизвестно, как будет использована их личная информация. Чтобы развеять подобные сомнения, напишите несколько слов по поводу конфиденциальности (например, «Ваша информация не будет продана или разглашена») и сразу за этим разместите ссылку на подробную политику конфиденциальности (рис. 3.10).
   Рис. 3.10. В регистрационной форме сайта Prosper кратко описана политика конфиденциальности, а также указана ссылка на более подробную информацию о политике конфиденциальности

   Для сохранения персональных данных устанавливайте контрольные вопросы
   В веб-приложениях с повышенным уровнем безопасности (например, в приложениях, связанных с финансами) используйте контрольные вопросы (рис. 3.11). Впоследствии с помощью контрольных вопросов можно идентифицировать пользователей, забывших свою регистрационную информацию (см. далее в этой главе шаблон FORGOT USERNAME/PASSWORD).
   Рис. 3.11. При создании учетной записи на сайте CapitalOne пользователь должен указать контрольный вопрос

   Согласие
   Убедите пользователей согласиться получать рассылку от компании, которой принадлежит данное приложение (рис. 3.12).
   Рис. 3.12. На сайте Evite пользователям четко предлагается получать рассылку с информацией о вечеринках и идеях для отдыха

   Это первый шаг на пути к тому, чтобы отправленное пользователю электронное сообщение отвечало требованиям закона CAN-SPAM [5 - CAN-SPAM – часто используемое сокращение для Controlling the Assault of NonSolicited Pornography and Marketing Act of 2003 – Акт о контроле над распространением непрошеных сообщений порнографического характера и рекламы, 2003 год. В январе 2004 он стал законом и имеет отношение к тем компаниям в США, которые рассылают коммерческие электронные сообщения. Согласно этому закону у получателей рассылки есть право отказаться от рассылки.]. Лучший способ это сделать – дважды разместить предложение, и если пользователь соглашается, ему приходит письмо, содержащее ссылку для подтверждения, по которой он должен пройти, чтобы подтвердить свое согласие.
   Кроме того, пользователи должны быть осведомлены о том, насколько часто они будут получать рассылку и какие сообщения будут им приходить.
   Существует вероятность, что подобные письма будут приходить в папку для спама, поэтому попросите пользователей соответствующим образом настроить фильтр спама или добавить адрес, с которого приходит рассылка, в свой список контактов.
   Возвращайте пользователей обратно к тому шагу, на котором их прервали
   По завершении регистрации возвращайте пользователей на ту страницу, на которой они находились, когда решили зарегистрироваться, или на ту, где запрашивается регистрация. Например, в приложениях для электронной коммерции, если пользователям предлагается зарегистрироваться во время процесса оформления заказа, верните их на страницу, на которой они смогут увидеть, зарегистрировались они или нет: например, на страницу с информацией о доставке.
 //-- Связанные шаблоны проектирования --// 
   Во многих веб-приложениях регистрация – это первая форма, с которой сталкиваются пользователи. Чтобы взаимодействие пользователя с приложением было успешным, важно придерживаться шаблонов, описанных в главе 2 – CLEAR BENEFITS, SHORT FORMS, REQUIRED FIELD INDICATORS и ERROR MESSAGES. Когда пользователи видят регистрационную форму, важно, чтобы у них была возможность войти в систему (LOG IN), поскольку они могли зарегистрироваться ранее. Кроме того, поскольку процесс регистрации нередко сопровождается тестом CAPTCHA, придерживайтесь рекомендаций из следующего шаблона.


   CAPTCHA (ПОЛНОСТЬЮ АВТОМАТИЗИРОВАННЫЙ ПУБЛИЧНЫЙ ТЕСТ)

 //-- Проблема --// 
   Приложение должно удостовериться, что действие (например, регистрация, отзыв, комментарий и т. д.) совершено человеком, а не программой, чтобы предотвратить создание ложных учетных записей и поддельных откликов.
 //-- Решение --// 
   Попросите пользователя напечатать символы с искаженного изображения, содержащего буквы и/или цифры, прежде чем он зарегистрируется или оставит комментарий или отзыв (рис. 3.13).
   Рис. 3.13. Тест CAPTCHA на странице регистрации Yahoo!

   Распознавание искаженного изображения выступает в качестве подтверждения того, что пользователь – это человек, а не машина, поскольку автоматически распознать искаженное изображение компьютерной программе довольно сложно. Этот метод называется тест CAPTCHA (от англ. Completely Automated Public Turing test to tell Computers and Humans Apart – Полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей (von Ahn, Blum, and Langford, 2004) [6 - Многие изображения CAPTCHA в Интернете используют сервис CAPTCHA, предоставляемый американским Университетом Карнеги-Меллон в рамках проекта reCAPTCHA, задачей которого является оцифровка книг путем отправки пользователям в качестве теста CAPTCHA оцифрованных слов, с распознаванием которых не справились системы оптического распознавания текста. Чтобы узнать о проекте подробнее, зайдите на страницу www.recaptcha.net.].
 //-- Зачем --// 
   В Интернете настолько много программ-пауков, что уже сложно отличить их от пользователей-людей. С тестом CAPTCHA люди справляются относительно легко, а программе-пауку пройти этот тест довольно сложно, благодаря этому ботам и паукам трудно, если вообще возможно, осуществлять взаимодействие с приложением и отправлять формы.
 //-- Как --// 
   Изображения CAPTCHA обычно состоят из четырех-пяти искаженных буквенно-цифровых символов; буквы на изображении могут быть как заглавными, так и строчными. Кроме того, на изображении могут присутствовать линии, несколько искаженных слов, отвлекающий фон и т. д. (рис. 3.14). Пользователей перед отправкой формы просят распознать изображение и ввести символы в правильном порядке (регистр может учитываться, а может и не учитываться). При отправке формы ответ проверяется, и пользователи либо переходят к следующему этапу, либо получают сообщение об ошибке.
   Рис. 3.14. Примеры изображений CAPTCHA

   Относительно недавно некоторые сайты стали использовать в тесте CAPTCHA простые математические задачи, такие как 2+4 или 4x2, которые пользователи должны решить (рис. 3.15).
   Рис. 3.15. Два примера использования математических задач в качестве теста CAPTCHA

   Позволяйте пользователям менять изображение CAPTCHA
   Некоторые изображения CAPTCHA могут показаться пользователям слишком искаженными, чтобы можно было распознать определенные символы (например, цифру 1 можно перепутать со строчной буквой l, а цифру 9 – со строчной g). По этой причине у пользователей должна быть возможность изменить изображение CAPTCHA, щелкнув мышью по ссылке «обновить» или «изменить» (рис. 3.16).
   Рис. 3.16. Сервис Nabble предоставляет пользователям возможность изменить изображение CAPTCHA

   Предлагайте возможность пройти звуковой тест CAPTCHA
   Поскольку тест CAPTCHA основывается на расшифровке изображения, он предоставляет очевидную сложность для слепых пользователей и для пользователей с нарушенным зрением. У них должна быть возможность пройти звуковой тест CAPTCHA – аудиоверсию стандартного теста CAPTCHA, которая позволит им осуществлять взаимодействие с приложением (рис. 3.17).
   Рис. 3.17. На сервисе Gmail пользователям предлагается и визуальный, и звуковой тест CAPTCHA

 //-- Связанные шаблоны проектирования --// 
   Тесты CAPTCHA часто применяются во время регистрации, поскольку большинство приложений пытаются избежать регистрации, произведенной программами-пауками (REGISTRATION). Также этот тест часто применяется в форумах и блогах, где пользователи могут оставлять комментарии или участвовать в жизни сообщества (см шаблон GROUPS/SPECIAL INTEREST COMMUNITY в главе 9).


   LOG IN (ВХОД В СИСТЕМУ)

 //-- Проблема --// 
   Пользователям необходимо идентифицироваться для того, чтобы они могли получить доступ к информации в своей учетной записи и/или увидеть адаптированную или персонализированную версию веб-приложения. Например, пользователям нужно проверить свою почту (Hotmail, Yahoo! Mail), зайти в свою учетную запись в приложении для электронной коммерции (Amazon, Dell) и посмотреть статус заказа или увидеть адаптированную версию информационного портала (My Yahoo! iGoogle).
 //-- Решение --// 
   Попросите пользователей идентифицироваться с помощью своих уникальных идентификаторов (например, имя пользователя или электронный адрес) и пароля, который они либо сами выбрали при регистрации, либо получили от системного администратора. Для получения доступа к веб-приложению также могут применяться системы унифицированной идентификации, такие как OpenID или Windows CardSpace (рис. 3.18). Кроме того, чтобы упростить доступ к приложению, попробуйте предложить пользователям, чтобы приложение запомнило их регистрационную информацию.
   (а)

   (б)

   Рис. 3.18. Сервис Basecamp позволяет пользователям войти в систему с помощью того имени пользователя и пароля, которые они выбрали во время регистрации (a), или с помощью OpenID (б). Пользователи также могут согласиться, чтобы приложение запомнило их данные для входа

 //-- Зачем --// 
   Если веб-приложение предоставляет пользователям доступ к их личной информации, очень важно, чтобы пользователи проходили идентификацию при входе, используя для этого уникальный набор регистрационных данных, созданный во время регистрации в приложении. Хотя процесс входа в систему очень важен для обеспечения сохранности информации и предотвращения несанкционированного доступа, пользователям он может показаться преградой на пути выполнения их задач. Кроме того, если пользователь редко заходит в какое-либо приложение, он может забыть свои регистрационные данные и может быть заблокирован на определенный промежуток времени. По этой причине по возможности пользователям нужно предлагать, чтобы приложение запомнило их реквизиты для входа в систему. Опция «запомнить меня» избавляет пользователей от необходимости проходить идентификацию и помогает им выполнить свои задачи, не отвлекаясь.
 //-- Как --// 
   Требуйте, чтобы пользователи входили в систему под тем именем и паролем, которые они выбрали во время регистрации. Однако, как и регистрация, необходимость идентифицироваться отвлекает пользователей от взаимодействия с приложением. По этой причине откладывайте идентификацию на последний момент. Когда идентификацию нельзя отложить по коммерческим причинам – например, пользователь должен идентифицироваться, чтобы оформить доставку из ближайшего к нему магазина – продумайте альтернативные варианты, которые помогали бы пользователю в достижении его целей – например, просите его указать свой адрес и/или почтовый индекс.
   Пароль должен выводиться на экран в зашифрованном виде
   Для поля ввода пароля применяйте HTML-тег . В этом случае веб-браузер будет выводить пароль на экран в виде звездочек или точек. Однако поскольку пользователь не может увидеть, что он ввел, в случае ошибки идентификации удаляйте введенные пользователем символы из поля для пароля. Кроме того, в том случае, если регистр имеет значение, просите пользователя проверить, не нажата ли клавиша Caps Lock.
   В случае необходимости предлагайте безопасную идентификацию
   Предоставляя пользователям доступ к личной информации, которая конфиденциальна по своей природе, обезопасьте процесс идентификации с помощью передачи информации по протоколу SSL (от англ. Secure Sockets Layer – уровень защищенных сокетов). Также сообщите пользователям, что они входят в систему с помощью безопасного протокола (рис. 3.19). Так пользователи будут больше доверять веб-приложению.
   Рис. 3.19. На сайте Amazon пользователям сообщается, что они входят в систему через защищенный сервер

   Предлагайте пользователям возможность зарегистрироваться
   Обычно разработчики стремятся сделать приложение как можно удобнее для постоянных пользователей и предлагают пользователям только войти в систему. Однако пользователи могут быть еще не зарегистрированы, поэтому важно, чтобы им предлагалась также возможность зарегистрироваться (рис. 3.20).
   Рис. 3.20. Сайт Target предлагает пользователям возможность зарегистрироваться на странице идентификации (т. е. входа)

   Предоставьте пользователям возможность восстановить забытые регистрационные данные
   Пользователи часто забывают свои реквизиты для входа в систему, особенно в тех случаях, когда они редко пользуются приложением. Помогите пользователям восстановить забытые регистрационные данные, предоставив им возможность воспользоваться опцией «Забыли пароль?» и/или «Забыли имя пользователя или пароль?» (рис. 3.21); см. шаблон FORGOT USERNAME/PASSWORD далее в этой главе.
   Рис. 3.21. На сайте Yahoo! под кнопкой «Войти» («Sign in») расположена ссылка «Забыли имя пользователя или пароль?» («Forget your ID or password?»), а новым пользователям предлагается зарегистрироваться, пройдя по ссылке «Регистрация»(«Sign up»)

   Для повышения уровня безопасности продумайте двухступенчатую систему идентификации
   Из соображений безопасности во многих приложениях, связанных с финансами, идентификация пользователя проходит в два этапа. Первый шаг очень напоминает уже описанный процесс входа в систему – т. е. пользователям предлагается ввести имя или ID пользователя и пароль.
   Второй шаг заключается в том, что пользователи должны ответить на контрольный вопрос. Ответ должен соответствовать тому, который пользователь указал во время регистрации, тогда идентификация считается успешно пройденной и пользователь получает доступ к своей учетной записи (рис. 3.22).
   (а)

   (б)

   Рис. 3.22. На сайте компании Advanta пользователей после входа в систему просят подтвердить свою идентичность (a), задавая им один из контрольных вопросов, которые они создали во время регистрации (б). Им также предоставляется возможность зарегистрировать компьютер, с которого они заходят на сайт, и в будущем избежать дополнительного этапа идентификации

   Хотя многие финансовые компании требуют, чтобы пользователь ответил на случайным образом выбранный контрольный вопрос, пользователей может раздражать необходимость отвечать на контрольные вопросы во время каждого входа в систему. Чтобы свести к минимуму все неудобства, предоставьте пользователям возможность пропустить дополнительный шаг идентификации, зарегистрировав компьютер, с которого они обычно пользуются приложением.
   Единый вход (единая идентификация)
   Многие веб-приложения, особенно межкорпоративные (экстрасеть) и корпоративные (интрасеть), позволяют пользователям получать доступ к одному или нескольким связанным между собой приложениям. Такие дополнительные приложения должны поддерживать технологию единого входа (ее часто называют SSO), так чтобы пользователи могли входить в систему, используя те же регистрационные данные, которые они используют для идентификации в других приложениях. Пользователи должны беспрепятственно перемещаться между приложениями, и у них должно создаваться впечатление, как будто они пользуются одним и тем же приложением. Например, если пользователь вошел в свою учетную запись в Google Mail, он не должен снова проходить идентификацию для того, чтобы получить доступ к дополнительным приложениям, таким как Google Calendar и Google Documents.
   Попробуйте предоставить пользователям возможность пользоваться системами «универсальной идентификации»
   Как упоминалось ранее, предоставьте пользователям возможность пользоваться системами «универсальной идентификации», такими как OpenID и Windows CardSpace (рис. 3.23). Такие системы позволяют пользователям создать уникальный цифровой идентификатор и использовать его для идентификации в любом приложении, которое поддерживает эти системы. Это напоминает технологию единого входа, с тем лишь исключением, что регистрационные данные пользователя находятся в распоряжении провайдера идентификации, который, в отличие от провайдера самого веб-приложения, является посредником.
   (а)

   (б)

   Рис. 3.23. На сайте IconBuffet пользователи могут пройти как стандартную идентификацию (a), так и с помощью системы OpenID (б)

   Сохраняйте данные для входа в систему
   Как и регистрация, процесс идентификации часто отвлекает пользователей от выполнения их основных задач и целей. Чтобы свести к минимуму это неудобство, предоставьте пользователям возможность согласиться, чтобы приложение сохранило их данные для входа на их компьютерах. В зависимости от уровня безопасности и политики конфиденциальности, подобную опцию можно реализовать одним и двух способов.
   1. Запомнить и имя пользователя, и пароль (рис. 3.24). Так полностью устраняется необходимость проходить идентификацию, если пользователь входит в систему с того же самого компьютера. Поскольку файлы cookies, необходимые для того, чтобы запомнить регистрационные данные, хранятся на компьютере, с которого пользователь выходит в систему, пользователю не нужно проходить идентификацию, если он использует тот же компьютер, до тех пор, пока файлы cookie не истекут или не будут удалены. Из соображений безопасности можно задать такие настройки, что срок действия функции «запомнить меня» будет истекать через определенный промежуток времени, например, две недели или 30 дней.
   Рис. 3.24. Gmail предлагает пользователям возможность запомнить их регистрационные данные

   2. Запомнить только имя пользователя (рис. 3.25). В этом случае пользователю все же придется вводить пароль при входе в систему, однако не нужно вводить имя пользователя. Приложения для электронной коммерции (например, Amazon) обычно применяют именно этот подход, и пользователям для совершения покупки нужно ввести пароль.
   Рис. 3.25. На сайте компании Dominos пользователю предлагается сохранить на своем компьютере свое имя пользователя

   Когда крайне необходимо обеспечить безопасность пользовательской информации, как в случае с приложениями, занимающимися финансами (например, Fidelity, CitiCards), допускается пожертвовать удобством пользователей ради того, чтобы предотвратить несанкционированный доступ к учетной записи. В этом случае можно не предлагать воспользоваться опцией «запомнить меня».
   Подтверждайте идентификацию
   Пользователи должны получить четкое подтверждение того, что они успешно идентифицированы. Для этого можно отображать сообщение, такое как «Добро пожаловать, имя пользователя», или просто отображать имя пользователя (обычно в верхнем правом углу страницы; рис. 3.26). Это особенно важно в тех случаях, когда пользователи выразили согласие, чтобы приложение запомнило их на данном компьютере.
   Рис. 3.26. Gmail отображает электронный адрес пользователя и ссылку Sign out (Выйти) в верхнем правом углу страницы, чтобы обозначить, что пользователь успешно вошел в систему

   Блокирование учетной записи
   Когда крайне важна безопасность (например, в случае с приложениями, связанными с финансами), весьма разумно в качестве меры предосторожности блокировать учетную запись пользователя после определенного числа неудачных попыток идентификации. Сразу после первой неудачной попытки пользователям нужно сообщить о том, что их учетная запись может быть заблокирована (рис. 3.27). Если учетная запись заблокирована, пользователю нужно сообщить или номер телефона, по которому он должен позвонить, или что он должен предпринять для разблокирования своей учетной записи.
   Рис. 3.27. На сайте банка Washington Mutual указывается, что учетная запись будет блокирована после четырех неудачных попыток войти в систему

 //-- Связанные шаблоны проектирования --// 
   Когда пользователей просят пройти идентификацию, часто оказывается, что они забыли свои регистрационные данные (FORGOT USERNAME/PASSWORD). Кроме того, если пользователь еще не создал учетную запись, ему нужно предложить это сделать (REGISTRATION).
   Шаблон LOG IN почти всегда сопровождается шаблоном LOG OUT, чтобы пользователи могли сознательно завершить сессию работы с приложением.


   LOG OUT (ВЫХОД ИЗ СИСТЕМЫ)

 //-- Проблема --// 
   После входа в систему и выполнения необходимых задач пользователь может захотеть завершить сессию работы с веб-приложением. Это может произойти по ряду причин, чтобы:
   • предотвратить несанкционированный доступ к его личной информации;
   • выйти из одной учетной записи и зайти под другим именем;
   • обозначить, что он выполнил все свои задачи и ему больше не нужен доступ к приложению.
 //-- Решение --// 
   Предоставьте пользователям возможность завершить сессию путем выхода из системы (рис. 3.28).
   Рис. 3.28. Сервис CitiCards предлагает ссылку Log Out (Выход), чтобы пользователи могли завершить сессию

 //-- Зачем --// 
   Если есть вероятность несанкционированного доступа к информации пользователя, необходимо предлагать пользователям выйти из приложения. Возможность выхода из системы особенно важна для веб-приложений, поскольку они установлены не на каком-либо определенном компьютере, а доступны из любой точки, где есть соединение с Интернетом и установлен веб-браузер. С одной стороны, благодаря этому у пользователей есть возможность получать доступ к своей информации отовсюду (например, из библиотеки, с рабочего компьютера, интернет-кафе и т. д.), но с другой стороны, подобная свобода доступа предоставляет массу возможностей для мошенничества и обмана. По этой причине у пользователей должна быть возможность осознанно завершить сессию.
 //-- Как --// 
   Предоставьте пользователям возможность завершить сеанс. Обычно ссылка «выйти из системы» располагается в верхнем правом углу страницы или рядом с именем пользователя. В некоторых веб-приложениях, где реквизиты для входа сохраняются от посещения к посещению (в первую очередь это относится к приложениям для электронной коммерции), пользователям не предлагается выйти из системы. Вместо этого они могут войти в приложение под другим именем, воспользовавшись для этого такой ссылкой, как «Вы не имя пользователя?». В таких приложениях пользователя приветствуют фразой: «Добро пожаловать, имя пользователя », чтобы обозначить, что пользователь идентифицирован (рис. 3.29). Если вы не предлагаете пользователям возможность выхода из системы, убедитесь, что для совершения каких-либо операций с деньгами (например, оплата покупки) или внесения изменений в учетные данные (например, смена пароля) пользователям необходимо войти в систему под своим именем.
   Рис. 3.29. На сайте Buy.com пользователь может пойти по ссылке Not имя пользователя? Click here (Вы не имя пользователя ? Щелкните здесь), чтобы выйти из одной учетной записи и зайти под другим именем

   Последовательно используйте метки
   Хотя это не сильно влияет на простоту и удобство использования приложения, стоит обратить внимание на согласованность меток. Чаще всего завершающее пользовательский сеанс действие маркируется как «выход», «выйти», «завершение работы», «завершить работу». Поскольку метка маркирует действие, логичнее всего использовать метки «выйти» и «завершить работу».
   Хотя эффективность такого подхода научно не подтверждена, обычно метка завершения работы последовательно дополняет метку начала работы: основная часть потребительских приложений использует метку «Выйти» (дополняющую метку «Войти»), а во многих бизнес и технических приложениях используются метки «Завершить работу» и «Начать работу».
   Подтверждайте выход из системы
   Информируйте пользователей о том, что они вышли из системы. Подтверждение может быть представлено в виде:
   • Специальной страницы «Вы вышли из системы», на которой пользователи могут выбрать, куда им перейти дальше.
   • Страницы входа, на которой будет отображаться соответствующее сообщение о том, что пользователь вышел из системы.
   • Версии страницы для неавторизованных пользователей (это типично для информационных порталов, таких как Yahoo! MSN, iGoogle и т. д.).
   • Сочетания этих вариантов – например, специальная страница, автоматически перенаправляющая пользователя на другую страницу через определенный промежуток времени (рис. 3.30).
   (а)

   (б)

   Рис. 3.30. Специальная страница портала Yahoo! на которой пользователю сообщается, что он вышел из системы (a). Спустя короткий промежуток времени, пользователи перенаправляются на версию страницы для неавторизованных посетителей (б)

   Выбор варианта зависит от того, каковы исходные условия входа в учетную запись. Если пользователь должен авторизоваться для того, чтобы получить доступ к приложению, то, когда пользователь завершает сеанс работы, возвращайте его на страницу входа, отображающую сообщение о том, что сеанс завершен. Обычно в этом случае от пользователя не требуется подтверждение, за исключением тех случаев, когда он может потерять данные. Также пользователь сможет авторизоваться снова, если он завершил сеанс случайно. В ином случае, если пользователи перед авторизацией находятся на странице для неавторизованных посетителей, после завершения работы с приложением верните их на эту же страницу.
 //-- Связанные шаблоны проектирования --// 
   Шаблон LOG OUT дополняет шаблон LOG IN, поскольку если для доступа к приложению пользователь должен войти в систему, обычно ему также предоставляется возможность выйти из системы.


   AUTOMATIC LOGOUT (АВТОМАТИЧЕСКИЙ ВЫХОД)

 //-- Проблема --// 
   Если после авторизации пользователь не взаимодействует с приложением дольше, чем ожидается, это может означать, что либо он отвлекся на что-то, либо прекратил работу с приложением, но забыл из него выйти. Если оставить учетную запись в таком состоянии, возникает опасность несанкционированного доступа к конфиденциальной информации пользователя.
 //-- Решение --// 
   Если пользователь неактивен определенный промежуток времени (например, 15–45 минут), завершайте его сеанс работы выходом из системы (рис. 3.31).
   Рис. 3.31. На сайте банка Washington Mutual пользовательская сессия автоматически прекращается, если пользователь неактивен 15 минут. Также пользователю предлагается ссылка для повторной авторизации, чтобы ему проще было начать новую сессию

 //-- Зачем --// 
   Автоматический выход из системы не только помогает уменьшить вероятность несанкционированного доступа к учетной записи, но также уменьшает нагрузку на интернет-сервер, который обрабатывает информацию о пользовательской сессии.
   Автоматический выход из системы особенно важен, если браузер пользователя позволяет просматривать страницы с использованием вкладок. Многие пользователи открывают несколько вкладок и заходят в несколько веб-приложений, при этом часто забывая выходить из системы.
 //-- Как --// 
   В приложениях, где очень важна безопасность и/или конфиденциальность информации, автоматически завершайте пользовательскую сессию, если пользователь определенное время неактивен (т. е. установите лимит времени сеанса). Обычно лимит времени сеанса составляет от 15 до 45 минут, в зависимости от степени конфиденциальности информации, которая может оказаться незащищенной. Когда лимит времени сеанса заканчивается, предупредите об этом пользователей и предоставьте им возможность оставаться в системе. Такое подтверждение особенно необходимо в тех ситуациях, когда пользователю нужно какое-то время, чтобы выполнить задание (например, в случае с многошаговыми задачами, такими как оформление покупки) и возможная потеря данных может оказаться очень неприятной для пользователя (рис. 3.32).
   Рис. 3.32. На сайте Bellco, когда лимит времени сеанса заканчивается, пользователи получают предупреждение, а также возможность продолжить текущую сессию. Также пользователи информируются о том, как можно изменить время ожидания

   Когда превышается лимит времени сеанса, довольно часто происходит следующее:
   • Пользователи направляются на страницу входа и получают сообщение, что их сессия истекла (или прервана), и они должны заново войти в систему и начать новую сессию. Этот подход уместен, когда на экране отображается конфиденциальная информация.
   • Пользователи остаются на той же странице, при этом появляется всплывающее окно с сообщением о том, что сессия была прервана, а также с информацией о том, были ли сохранены данные пользователя (хотя бы как «черновик»). Этот подход не рекомендуется, если на экране (за всплывающим окном) отображается личная и/или конфиденциальная информация.
   В некоторых приложениях сессия может завершаться, когда пользователь закрывает окно браузера, в котором открыто приложение.
   Сохраняйте информацию пользователя
   При автоматическом завершении сеанса старайтесь сохранять введенную информацию. Пользователям может действовать на нервы, если при прерывании сессии исчезают все данные, в то время как они собирались завершить начатое, но по какой-либо причине на время отвлеклись. Например, в сервисе Gmail незавершенные письма пользователя сохраняются как «черновики».
   Предоставьте пользователям возможность менять лимит времени сеанса
   Пользователю может понадобиться, чтобы лимит времени сеанса определенного веб-приложения был длиннее или короче, чем задано по умолчанию. Это характерно для тех приложений, которыми пользователь может пользоваться весь день, например, электронная почта, офисные приложения (для обработки текстов, электронных таблиц) и приложения для мониторинга статуса (например, отслеживание инвестиций). Если для таких приложений установлены лимиты времени сеансов, предоставьте пользователям возможность их изменить (рис. 3.33).
   Рис. 3.33. В приложении Rally Community Edition пользователи могут устанавливать продолжительность времени сеанса вплоть до четырех часов. По умолчанию лимит времени сеанса составляет один час

 //-- Связанные шаблоны проектирования --// 
   AUTOMATIC LOGOUT – это аварийная мера на тот случай, когда пользователь забывает выйти из системы, и это угрожает конфиденциальности его личной информации. Возможно, пользователям неизвестно, как выйти из системы, поскольку соответствующая опция скрыта или расположена не там, где ее ожидает увидеть пользователь (LOG OUT).


   FORGOT USERNAME/PASSWORD (ЗАБЫТЫ ИМЯ ПОЛЬЗОВАТЕЛЯ/ПАРОЛЬ)

 //-- Проблема --// 
   Пользователь часто забывают данные для входа в систему (логин и/или пароль), без которых не могут войти в приложение.
 //-- Решение --// 
   Предоставьте пользователям возможность вспомнить или восстановить забытые данные для входа (рис. 3.34).
   Рис. 3.34. Сервис Gmail предлагает ссылку I cannot access my account (Я не могу получить доступ к аккаунту)

 //-- Зачем --// 
   Пользователи часто забывают свой логин и/или пароль, особенно когда они пытаются войти в приложение, которое редко используют. По этой причине важно, чтобы у пользователей был способ запомнить эти данные или восстановить их. Поскольку часто пользователи понимают, что забыли свои реквизиты для входа только тогда, когда их просят войти в систему под своим именем, ссылка восстановления должна располагаться рядом со ссылкой входа в систему. В тех ситуациях, когда учетная запись не содержит частной или конфиденциальной информации, допускается по электронной почте прислать пользователю ссылку для смены пароля. Однако когда дело касается конфиденциальной информации, необходимо предпринять дополнительные шаги для подтверждения идентичности пользователя, прежде чем предоставить ему доступ к реквизитам для входа в систему.
 //-- Как --// 
   Рядом со входом в систему разместите ссылку «Забыли свой ID (или пароль)» (рис. 3.35); если в качестве логина используется электронный адрес пользователя, достаточно ссылки «Забыли пароль».
   Рис. 3.35. Сайт корпорации Capital One. Под кнопкой Log In (Вход) расположены ссылки Forgot your user ID (Забыли свой ID) и Forgot your password (Забыли свой пароль)

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

   (б)

   Рис. 3.36. Сайт Agile Commons после подтверждения электронного адреса отправляет на него ссылку для смены пароля (a). Пройдя по ссылке, пользователь попадает на страницу смены пароля (б)

   Подтвердите идентичность пользователя с помощью контрольных вопросов
   Если в веб-приложении хранится конфиденциальная информация, то для подтверждения идентичности пользователя, утверждающего, что он забыл свои реквизиты для входа, могут понадобиться дополнительные меры безопасности. К дополнительным контрольным вопросам могут относиться вопросы, ответы на которые может знать только владелец учетной записи, например, номер паспорта, номер счета и т. д. (рис. 3.37). Для идентификации пользователю также может потребоваться ответить на один или несколько контрольных вопросов, указанных во время регистрации.
   Рис. 3.37. На сайте компании Advanta, занимающейся выпуском кредитных карт, прежде чем сменить ID пользователя и его пароль, пользователю задают несколько вопросов для идентификации

 //-- Связанные шаблоны проектирования --// 
   Когда пользователю предлагают войти в систему, он может понять, что забыл свой логин и/или пароль. По этой причине рядом с полями, запрашивающими регистрационные данные (LOG IN), необходимо поместить ссылку для их восстановления.



   Глава 4
   Главная страница приложения


   Введение

   Важно, чтобы проектировщик принял правильное решение по поводу того, что пользователи увидят, или на какую страницу будут перенаправлены после входа в приложение под своими логинами.
   В веб-приложениях, которые не требуют, чтобы пользователь для получения доступа к приложению входил в систему под своим именем (например, приложения для электронной коммерции), пользователи либо остаются на той же странице, либо перенаправляются на следующую по порядку страницу. Например, если пользователь решил авторизоваться на странице описания товара, он остается на этой же самой странице. Однако если он авторизовался во время оформления покупки, он перенаправляется на следующую по порядку страницу – страницу информации об адресе доставки.
   Что же касается приложений, для работы с которыми пользователь должен авторизоваться, то они, в зависимости от того, к какому типу относятся, могут отображать следующее (перечислены шаблоны):
   • INBOX, где пользователь может найти список элементов для просмотра или обработки.
   • CONTROL PANEL – панель управления, которая выступает в качестве страницы запуска функций приложения.
   • DASHBOARD – информационная панель для беглого осмотра самых важных показателей эффективности.
   • PORTAL, где собирается информация из нескольких источников. Портал выступает в качестве страницы загрузки информации и приложений, которые доступны для пользователя. В страницы шаблона PORTAL часто встроены некоторые составляющие шаблонов CONTROL PANEL и DASHBOARD, позволяющие пользователю быстро получить доступ к функционалу и контенту одного или нескольких приложений.
   Главные страницы приложений обычно персонализированы на основе профилей, интересов и информационных потребностей пользователей, это необходимо для предоставления наиболее релевантного контента и фильтрации информации, которая не очень релевантна. Однако PERSONALIZATION на основе бизнес-правил или какого-либо социального фильтра может неточно предугадывать то, какая информация может понадобиться пользователю. Поэтому приложения часто предоставляют пользователям функции шаблона CUSTOMIZATION (настройки по заказу), чтобы они могли адаптировать приложение к своим предпочтениям и восполнить слабые места персонализации. Кастомизация не ограничивается информационными потребностями и необходимостью выполнить ту или иную задачу; часто она подразумевает выбор цвета, логотипа, темы оформления, шрифта и макета страницы.
   При проектировании веб-приложений часто не продумывают, что увидят новые пользователи (BLANK SLATE). Этот аспект особенно важен в тех приложениях, в которые пользователи должны внести определенные данные.


   INBOX (ВХОДЯЩИЕ)

 //-- Проблема --// 
   Важно, чтобы пользователи знали, над чем они должны работать, и о том, что произошло со времени их последнего входа в приложение.
 //-- Решение --// 
   Покажите пользователям список элементов, над которыми они могут работать или которые они должны просмотреть. Например, в почтовых приложениях показывайте пользователям список писем; в приложениях для отслеживания дефектов показывайте пользователям список дефектов; и т. д. (рис. 4.1).
   Рис. 4.1. Инструмент NetResults Tracker показывает разработчикам, когда они входят в систему, список ошибок и улучшений

 //-- Зачем --// 
   Приложения для работы с данными одного типа (например, с электронными письмами, дефектами, файлами, счетами, обращениями в службу поддержки и т. д.) выигрывают от того, что показывают пользователям, вошедшим в систему, с какими элементами они могут работать. Это не означает, что приложение не позволяет пользователям работать с другими типами элементов или не предоставляет возможность быстрого доступа к другим возможностям приложения – просто они для этого приложения второстепенны. Например, почтовые приложения позволяют пользователям управлять списком контактов, хотя это и не является их основной задачей. По этой причине, когда пользователи входят в систему, им сначала показывается список писем как старых, так и новых. Понятие входящие здесь уместно, поскольку обычно это элементы, на которые пользователь должен обратить внимание, когда он вошел в приложение.
 //-- Как --// 
   Покажите пользователям список данных, работа с которыми является основной задачей приложения – электронные письма, дефекты, файлы, счета, списки дел и т. д., – выделяя те элементы, на которые пользователь должен в данный момент обратить внимание или о которых ему нужно напомнить, например, новые письма, новые файлы, новые дефекты и т. д. (рис. 4.2).
   Рис. 4.2. Пользователь видит свои входящие письма, как только входит в свою учетную запись в приложении Gmail. Новые входящие письма выделены полужирным шрифтом

   Предоставьте пользователям возможность установить напоминания
   Если приложение используется нечасто и пользователи предпочитают, чтобы им напоминали об изменениях состояния одного или нескольких элементов (например, о сроке платежа или новой задаче), предоставьте им возможность устанавливать напоминания (рис. 4.3).
   Рис. 4.3. Сервис Remember The Milk предоставляет пользователям возможность устанавливать напоминания на каждый день, а также отображает, сколько минут осталось до того момента, когда задание должно быть выполнено. Пользователи могут получать напоминания по электронной почте, интернет-пейджеру и СМС на мобильный телефон

 //-- Связанные шаблоны проектирования --// 
   Шаблон INBOX обычно задействует списки. Это могут быть как списки TABULAR LIST, так и IMAGE LIST/GRID. Кроме того, как и другие списки, эти часто нужно сортировать (SORTING) и фильтровать (FILTERING), чтобы пользователям было проще найти релевантную информацию (см. главу 7, в которой подробно рассказывается о списках).


   CONTROL PANEL (ПАНЕЛЬ УПРАВЛЕНИЯ)

 //-- Проблема --// 
   Когда пользователь вошел в систему, ему может потребоваться получить доступ к различным функциям приложения, чтобы выполнить ряд заданий. Однако нельзя с точностью предугадать, какая именно функция может ему понадобиться.
 //-- Решение --// 
   Покажите пользователям страницу, на которой представлены все доступные функции приложения, любой из которых он сможет быстро воспользоваться (рис. 4.4).
   Рис. 4.4. Хостинговая компания 1&1 предоставляет пользователям возможность доступа с панели управления ко всем функциям работы с их учетными записями. Поскольку функций достаточно много, они разделены на две группы: Administration (Администрирование) и Account (Учетная запись)

 //-- Зачем --// 
   Во многих веб-приложениях пользователям необходима некая панель запуска функций приложения (т. е. мини-приложений), которые достаточно обособлены друг от друга. Хотя пользователям нужен доступ ко всем функциям, они не хотят перемещаться от одной функции к другой. Но при этом им нужно место, куда они будут возвращаться, если запутаются в приложении (наподобие «домашней страницы» веб-сайта).
 //-- Как --// 
   Создайте «загрузочную» страницу, с которой пользователи смогут получать доступ ко всем возможностям приложения или к миниприложениям. Панели управления обладают звездообразной (hub-and-spoke) структурой пользовательского интерфейса (Baxley, 2003; Tidwell, 2008), когда одна центральная страница предоставляет пользователям доступ к автономным мини-приложениям. Таким образом, пользователи могут зайти в мини-приложение, выполнить свою задачу и вернуться на центральную страницу для выполнения другой задачи с помощью другого мини-приложения.
   Панели управления обладают несколькими сходствами с домашними страницами информационных порталов:
   • они формируют представление о возможностях приложения и предоставляют быстрый доступ к его основному функционалу;
   • они определяют общий макет проектирования страниц приложения: их оформление, расположение, поисковые возможности и т. д.;
   • они информируют пользователей о новых возможностях и функциях.
   Панели управления используются также на страницах обзора учетной записи, где в одном месте собраны все доступные пользователю функции по управлению учетной записью. Например, в приложениях для электронной коммерции страницы обзора учетной записи предоставляют пользователям доступ к информации о заказах, адресах доставки, информации о платежах и т. д. (рис. 4.5).
   Рис. 4.5. В приложении Dell на странице My Account (Моя учетная запись) располагается краткая сводка информации об учетной записи. Эта страница выступает в качестве загрузочной страницы, предоставляющей доступ к информации пользователя, такой как сохраненные товары, купоны на скидку, корзина, статус заказа и т. д.

   Выделяйте элементы, на которые нужно обратить внимание
   Как и INBOX, шаблон CONTROL PANEL используется для информирования пользователей и привлечения их внимания к изменениям в функционале и контенте приложения. Как только пользователь зашел на страницу с панелью управления, необходимо направить его к тем элементам, которым он должен уделить внимание. Поскольку может оказаться, что пользователь этого не ожидает, используйте выделяющиеся уведомления и оповещения. Хороший пример уведомления – это сообщение о запланированном простое приложения, хотя это сообщение должно размещаться также и на странице входа. Если элементы служат только для информирования (т. е. оповещения) и не требуют от пользователей каких-либо действий, предоставьте пользователям возможность их проигнорировать.
 //-- Связанные шаблоны проектирования --// 
   Используйте шаблон BLANK SLATE, чтобы не показывать пользователям пустые страницы и чтобы пользователь знал, что ему делать, когда вошел в приложение в первый раз. Также благодаря этому шаблону пользователю проще работать с приложением, прежде всего это относится к тем приложениям, которые опираются на данные, введенные пользователями.


   DASHBOARD (ИНФОРМАЦИОННАЯ ПАНЕЛЬ)

 //-- Проблема --// 
   Для того чтобы получить контрольную информацию о состоянии системы и информацию, помогающую в принятии решения, пользователю приходится просмотреть несколько частей приложения. Кроме того, эта информация представлена не в том формате, который помогает принять решение и/или определить, какой шаг нужно предпринять далее.
 //-- Решение --// 
   Предложите пользователям просматривать всю информацию и показатели, которые они хотят отследить, на одной странице в виде «информационной панели». Кроме того, позвольте пользователям с помощью информационной панели докопаться до детализированного контента (рис. 4.6).
   (а)

   (б)

   Рис. 4.6. На политической информационной панели портала Yahoo! которая посвящена выборам 2008, представлена наглядная информация о текущем статусе каждого кандидата (a). Кроме того, пользователи могут щелкать по кандидатам и получать подробную информацию о них, включая предварительное количество собранных голосов, привлеченные денежные средства и т. д. (б)

 //-- Зачем --// 
   Если пользователям приходится перемещаться по нескольким страницам приложения или запускать отчеты, чтобы контролировать статус некоторых элементов и определять, какие действия предпринять, – это не только неэффективно, но также может привести к тому, что пользователь не заметит важную информацию. Кроме того, объединение нескольких источников информации с нескольких страниц во время каждого сеанса работы с приложением может превратиться в довольно трудоемкое занятие.
   Информационная панель, если она должным образом спроектирована, «представлена в таком виде, который позволяет пользователям осуществлять контроль над тем, что происходит в данную минуту» (Few, 2006).
   Представляя в наглядном виде важные показатели (часто называемые ключевыми показателями эффективности или KPI), а также особые ситуации и предупреждения, информационные панели обеспечивают пользователей визуальной информацией о текущем статусе и помогают выбрать необходимые корректировочные и превентивные меры.
 //-- Как --// 
   Информационные панели обычно выполняют три важных для пользователей функции.
   1. Они отслеживают и контролируют важные показатели.
   2. Они производят анализ для определения тенденций и особых ситуаций.
   3. Они сообщают о полученных данных, чтобы можно было определить диагноз и выбрать необходимые корректировочные меры.
   Рис. 4.7. Способы представления данных

   Чтобы помочь пользователям понять данные, их соотношения, тенденции развития и распознать проблемы, выкладывайте на информационной панели отчеты, содержащие суммарные и обобщенные данные, представляя их в виде круговых диаграмм, гистограмм, линейных диаграмм, таблиц, списков и т. п. Чтобы данные были верно интерпретированы, применяйте те способы их наглядного представления, которые подходят для их типа и предназначения (рис. 4.7 и 4.8).
   Рис. 4.8. Информационная панель сервиса Google Analytics задействует ряд способов представления данных, передающих показатели производительности интернет-сайта. Один из применяемых способов – это график тренда, показывающий «Обзор посетителей» (Visitors Overview), также используются числа и спарклайны для представления «Пользования сайтом» (Site Usage) и таблица для отображения «Обзора контента» (Content Overview)

   Способы обозначения особых ситуаций должны соответствовать заданиям пользователей
   Подбирайте иконки и индикаторы для информационной панели так, чтобы они соответствовали мониторинговым задачам пользователя (рис. 4.9). Например, используйте такие индикаторы, как предупреждения или иконки светофора, если пользователям необходимо узнать только текущее состояние параметров. Однако если пользователь также хочет узнать тенденции развития, применяйте иконки тенденций, такие как стрелки вверх и вниз, их можно выделить соответствующим цветом; также их можно дополнить спарклайнами, чтобы представить краткую характеристику тенденции развития за истекший период.
   Рис. 4.9. Способы визуализации информационной панели

   Показывайте информацию в контексте
   Поскольку на информационной панели отслеживаемые данные (т. е. показатели) представлены в обобщенном виде, показывайте их в контексте развития за последний период, чтобы пользователи могли определить:
   • Растет показатель или падает.
   • Наблюдается тенденция увеличения или снижения (и является ли она желательной или нет).
   • Не вышел ли показатель за границы спектра допустимых значений.
   • Достиг ли показатель желаемого уровня и т. д.
   Показывая данные в контексте, вы предоставляете пользователям возможность увидеть суть процессов, поскольку самостоятельно они сделать этого не смогут. Зная, какой контекст нужно предоставить пользователям, можно определить подходящие методы представления данных и индикаторы исключений (особых ситуаций). Например, информацию о тенденциях можно представить в виде линейных диаграмм, комбинированных гистограмм или спарклайнов, дополненных иконками тенденций (рис. 4.10).
   Рис. 4.10. Сервис Chart Chooser от Juice Analytics помогает определить подходящий тип диаграммы в зависимости от того, что пользователь хочет отразить с помощью этой диаграммы, например, сравнение, распределение, структуру, тенденцию, соотношение или табличные данные. Кроме того, пользователь может скачивать соответствующие шаблоны Excel и PowerPoint. (Источник: www.juiceanalytics.com/chartchooser/.)

   Отображайте всю необходимую информацию на одном экране
   Всегда, когда это только возможно, избегайте прокрутки на информационных панелях (Few, 2006). Особенно это относится к тем информационным панелям, на которые данные поступают в режиме реального времени и которые используются в первую очередь для осуществления контроля. Основная цель информационных панелей – предоставлять обзор текущего состояния определенных показателей и выделять показатели, на которые пользователь должен обратить внимание. Кроме того, убедитесь, что для каждого элемента управления информационной панелью выделено такое пространство и такое местоположение, которое соответствует тому, насколько важен этот элемент для пользователя.
   Предоставьте пользователям возможность настроить информационную панель в соответствии со своими предпочтениями
   Хотя информационные панели часто персонализируются, чтобы отвечать потребностям каждой категории пользователей, может оказаться, что один и тот же тип оформления и проектирования может понравиться не всем пользователям данной категории. Например, хотя некоторым пользователям может понравиться тип диаграммы, установленный по умолчанию, другие могут предпочесть просматривать данные в виде таблицы. Кроме того, некоторые пользователи могут захотеть реструктурировать представленную информацию более подходящим для них образом. Учтите эти индивидуальные различия и предоставьте пользователям возможность менять оформление информационной панели в соответствии со своими предпочтениями (см. шаблон CUSTOMIZATION далее в этой главе).
   Предоставьте пользователям доступ к подробной информации
   При просмотре информационной панели пользователям может понадобиться дополнительная информация: чтобы лучше понять обобщенные отчеты либо принять решение по поводу корректировочных мер. Поэтому предоставьте пользователям доступ к подробной информации, на основе которой были выведены обобщения для информационной панели (рис. 4.11).
   Рис. 4.11. На информационной панели сервиса Mint пользователи могут посмотреть свои активы, задолженности, предупреждения и финансовую смету. Пользователи могут щелкать по определенным участкам для получения более подробной информации – например, пользователь может щелкнуть по ссылке «American Express Green Card» и посмотреть список транзакций на сумму $29 (в примере)

   Предоставьте пользователям возможность обмениваться или коллективно пользоваться данными
   Пользователи могут захотеть скачать данные информационной панели на свой компьютер для проведения дальнейшего их анализа и/или обмена ими с другими. Для этого можно разрешить такие действия, как скачивание подробного отчета в формате PDF, Excel или XML, или отправка электронного письма другим пользователям (рис. 4.12; см. шаблон LIST UTILITY FUNCTIONS в главе 7).
   Рис. 4.12. Информационная панель сервиса Google Analytics позволяет пользователям экспортировать данные в форматах PDF и XML, а также пользователи могут отправлять информационную панель другим пользователям по электронной почте

 //-- Связанные шаблоны проектирования --// 
   Эффективная информационная панель выкладывается затем, чтобы привлечь внимание пользователя в первую очередь к самой важной деловой информации (см. шаблон VISUAL HIERARCHY в главе 12).


   PORTAL (ПОРТАЛ)

 //-- Проблема --// 
   Информация и функционал, к которым пользователь хочет получить доступ, распределены по нескольким интернет-сайтам и вебприложениям. Например, сотруднику корпорации может понадобиться доступ к большому количеству информации, чтобы выполнить такие задачи, как внесение себя в список на получение бонусов, управление личной информацией, составление отчетов о времени и расходах, проведение анализа продуктивности и т. д. Для выполнения каждой из этих задач сотрудник должен работать с отдельным приложением.
 //-- Решение --// 
   Создайте центральное приложение, которое будет объединять контент и возможности из нескольких различных источников и будет выступать не только в качестве единого интерфейса, но также и в качестве единой панели загрузки или точки доступа к этим приложениям (рис. 4.13). Кроме того, разрешите пользователям выбирать контент и настраивать способы его представления, и, если этого требует безопасность, ограничьте доступ к определенному контенту и функционалу, в зависимости от его типа и права доступа к нему.
   Рис. 4.13. Интернет-портал iGoogle предоставляет пользователям доступ к различному контенту и функциям из нескольких разных источников

 //-- Зачем --// 
   Порталы объединяют несколько разрозненных приложений и предоставляют пользователям общий интерфейс, с помощью которого они могут просматривать контент и работать с приложениями, к каждому из которых, в противном случае, им пришлось бы получать отдельный доступ. Также порталы усовершенствуют процесс взаимодействия пользователя с системой, обеспечивая единообразный стиль оформления и навигацию (а также технологию единого входа, SSO) при получении доступа к ряду приложений (см. шаблон LOG IN в главе 3). Во многих компаниях единая точка загрузки способствует развитию более тесного сотрудничества между пользователями и облегчает коллективный доступ к информации, пользователями в данном случае могут быть сотрудники, клиенты и партнеры. Кроме того, порталы спроектированы таким образом, что как компании, так и пользователи (сотрудники или клиенты) получают преимущество самообслуживания, которое первым помогает сократить затраты, а для последних повышает удобство работы.
 //-- Как --// 
   Порталы в пределах своего окна разбивают отдельные куски контента и/или функции на зоны, которые часто называются соединительными модулями портала, или портлетами. Портлеты функционируют как более маленькие окна на интернет-странице; они часто поддерживают такие функции, как свернуть, развернуть, закрыть и т. д. (рис. 4.14).
   Рис. 4.14. На портале Excite пользователи могут редактировать, сворачивать и разворачивать портлеты

   Если порталы поддерживают несколько функциональных зон, они обычно структурируют их следующим образом: каждое приложение и связанный с ним контент объединяются в отдельную группу, а затем представляются как отдельные страницы, между которыми пользователи могут перемещаться (рис. 4.15).
   Рис. 4.15. Портал My Sun Connection разделен на несколько страниц: Home (Домашняя страница), My Products (Мои продукты), Support (Поддержка), Communities (Сообщества), My Account (Мой аккаунт) и Developers (Разработчики)

   Поддерживайте адаптацию контента к потребностям и типам пользователей
   Порталы обычно предоставляют пользователю доступ к большому объему контента, лишь малая часть которого действительно интересна пользователю. Например, системному администратору из отдела информационных технологий будут интересны совершенно иные виды контента и приложений внутрикорпоративного (интрасетевого) портала, нежели специалисту по набору сотрудников из отдела персонала. Точно также во многих экстрасетевых порталах конечных пользователей (клиентов) может интересовать совершенно иной контент, нежели партнеров и дилеров. Поэтому порталы должны поддерживать персонализацию и кастомизацию контента, сообразно потребностям и типам пользователей (см. шаблоны PERSONALIZATION и CUSTOMIZATION далее в этой главе). Что касается публичных порталов (таких как iGoogle, My Yahoo! и My MSN), там пользователям часто предлагается заданная по умолчанию страница портала, к которой они могут по необходимости добавлять страницы (рис. 4.16).
   Рис. 4.16. На портал My Yahoo! пользователи могут добавлять свои собственные страницы, нажав на кнопку Add Page (Добавить страницу). В данном примере пользователь создал страницу Finance (Финансы)

   Соблюдайте единообразие оформления
   Хотя порталы позволяют пользователям получать доступ к различным приложениям, они должны стремиться к тому, чтобы обеспечить согласованность и единообразие процесса взаимодействия пользователя с системой. В какой-то степени в этом может помочь соблюдение единого стиля оформления по всему порталу.
   Автоматически авторизуйте пользователя при входе в приложения
   Портал должен быть единообразным не только по стилю оформления, но также и по характеру взаимодействия с пользователем. Когда пользователь авторизовался на портале под своим именем, если нет необходимости в дополнительных мерах безопасности, предоставьте ему возможность органичного доступа к различным приложениям, без необходимости авторизоваться отдельно в каждом из них; т. е. портал должен поддерживать технологию единого входа (SSO) (рис. 4.17; см. шаблон LOG IN в главе 3).
   Рис. 4.17. На портале iGoogle пользователи могут просматривать информацию из приложений Google Finance Portfolios, Google Calendar и Gmail, поскольку для входа в каждое из них нужны одни и те же реквизиты

   Хотя применение технологии единого входа целесообразно для корпоративных порталов, во многие интернет-порталы могут быть включены другие приложения на основе веб-сервисов, для работы с которыми пользователям нужно авторизоваться отдельно. Например, портал iGoogle позволяет пользователям просматривать напоминания сервисов Jott (www.jott.com) на своем портлете, для этого пользователям необходимо авторизоваться отдельно. В таких случаях предлагайте пользователям возможность «запомнить меня», чтобы им не приходилось авторизоваться каждый раз при входе в портал.
   Предоставьте пользователям возможность менять оформление портала в соответствии со своими предпочтениями
   В отличие от многих веб-приложений, порталы разработаны для того, чтобы пользователь работал с ними регулярно и часто. Чтобы это взаимодействие было максимально эффективным и чтобы у пользователей возникало чувство, что это их личное рабочее пространство, предоставьте им возможность менять (кастомизировать) стиль оформления и расположение контента (см. шаблон CUSTOMIZATION далее в этой главе).
 //-- Связанные шаблоны проектирования --// 
   Хотя порталы обеспечивают единообразие стиля оформления, обычно пользователи могут «освежить» портал, поменяв его внешний вид. У пользователей также может быть возможность кастомизировать контент и макет страницы (см. CUSTOMIZATION). Поскольку порталы спроектированы таким образом, чтобы объединять контент из различных источников, некоторые виды контента могут также представать в виде DASHBOARD, помогающей пользователям увидеть текущий статус (или состояние) определенных ключевых показателей.


   PERSONALIZATION (ПЕРСОНАЛИЗАЦИЯ)

 //-- Проблема --// 
   В веб-приложениях с широким выбором контента (например, большое количество товаров в приложениях для электронной коммерции) пользователю может быть сложно найти релевантный или представляющий интерес контент или элемент. Кроме того, поскольку пользователям может быть сложно успевать за скоростью добавления новых элементов (и не все эти элементы могут показаться им интересными), не рекомендуется отображать каждый новый элемент – это и нежелательно, и невозможно.
 //-- Решение --// 
   Адаптируйте приложение под пользователя, показывая ему информацию, персонализированную на основе его профиля, схем взаимодействия и/или указанных (или выявленных) предпочтений и интересов (Anand and Mobasher, 2005; Koch and Rossi, 2002) (рис. 4.18).
   Рис. 4.18. Веб-приложение для онлайн-видеопроката Netflix советует пользователям фильмы, основываясь на том, какие фильмы пользователь брал в прокат ранее и какую оценку дал просмотренным фильмам. Netflix также принимает в расчет возраст и пол пользователя

 //-- Зачем --// 
   Персонализация все чаще применяется для того, чтобы помочь пользователям разобраться в практически неограниченном объеме информации. Вместо того чтобы предоставлять «всю» информацию, пользователям предлагается только та информация, которая отвечает их индивидуальным потребностям и интересам (Anand and Mobasher, 2005; Koch and Rossi, 2002; Rossi et al., 2001). Таким образом, персонализация дает два преимущества: во-первых, она уменьшает «загромождение», устраняя элементы, которые пользователю могут быть неинтересны, а во-вторых, она указывает пользователю на новые элементы, которые самостоятельно он мог бы не заметить или не найти. Более того, поскольку персонализированный (или рекомендованный) список элементов составлен на основе интересов и действий пользователя, пользователям придется меньше волноваться по поводу того, стоит ли покупать что-либо из этого списка или стоит ли задействовать эти элементы в других операциях.
 //-- Как --// 
   Персонализация может проходить на двух уровнях.
   1. На основе известных сведений о пользователе, таких как демографические данные или обозначенные интересы (эксплицитная персонализация).
   2. На основе интересов пользователя, выявленных из его предыдущих опытов взаимодействия с приложением и совершенных операций (имплицитная персонализация).
   Эксплицитная персонализация
   На самом примитивном уровне приложение может быть персонализировано просто с помощью добавления имени пользователя в приветствие (рис. 4.19).
   Рис. 4.19. Приложение Morningstar приветствует пользователей сообщением «Добро пожаловать [имя]»

   Другой распространенный вариант эксплицитной персонализации – это сохранение информации из профиля и учетной записи пользователя (например, информации о доставке и адресе выставления счета) и опережающего внесения этой информации в необходимые поля, чтобы пользователю было удобнее пользоваться приложением – например, при оформлении покупки в приложении для электронной коммерции (рис. 4.20).
   Рис. 4.20. Когда пользователь совершил покупку на сайте Amazon, в следующий раз при оформлении заказа для персонализации будут использоваться те данные об адресе доставки и адресе выставления счета, которые он указал в предыдущий раз

   Еще один вариант персонализации – это показывать незарегистрированным и неавторизованным пользователям одну версию приложения, а авторизованным – другую (рис. 4.21).
   (а)

   (б)

   Рис. 4.21. Сервис Blockbuster предлагает различные версии домашней страницы: одна для новых пользователей (a), а другая для постоянных авторизованных пользователей (б)

   Этот подход к персонализации основывается на том уровне доступа, которым обладает пользователь: то, какой контекст и навигационная структура будут представлены пользователю, зависит от того, каким правом доступа к приложению он обладает. Например, только у пользователей с административными правами есть доступ к управляющим функциям (рис. 4.22).
   (а)

   (б)

   Рис. 4.22. Приложение Rally Software отображает различные виды вкладок для пользователей с правом доступа к подписке (a) и без этого доступа (б)

   Имплицитная персонализация
   Персонализация, основанная на предполагаемых предпочтениях и потребностях пользователя (имплицитная персонализация), обычно представлена в виде рекомендаций, учитывающих предыдущий опыт взаимодействия пользователя с системой. Такой вид персонализации часто встречается в приложениях для электронной коммерции, в которых пользователям рекомендуют товары, основываясь на их предыдущих покупках или ранее просмотренных товарах. При такой персонализации часто применяется социальный фильтр, когда рекомендации основываются на сходстве поведения и интересов пользователей приложения, принадлежащих к той или иной социальной группе (Goldberg et al., 1992) (рис. 4.23). Также этот вид персонализации встречается в социальных приложениях, когда пользователям предлагается добавить кого-либо в «друзья», на основании наличия общих друзей в этой социальной сети (см. главу 9).
   (а)

   (б)

   (в)

   Рис. 4.23. Приложение Amazon предлагает несколько видов рекомендаций, в зависимости от предыдущих покупок пользователя (a), недавно просмотренных товаров (б) и соответствующих товаров, приобретенных другими людьми со схожими интересами (в)

   Предоставьте пользователям возможность настроить личные предпочтения
   Хотя имплицитная персонализация предоставляет определенные преимущества, часто она не оправдывает ожиданий, поскольку не все, что пользователи делают в приложении, они делают для себя самих. Например, некоторые покупки в приложениях для электронной коммерции могут оказаться подарками или могут быть совершены по просьбе друзей или членов семьи. Чтобы рекомендации были более точными, предоставьте пользователям либо указать свои предпочтения (рис. 4.24), либо настроить свои предпочтения, обозначив, включать ли тот или иной элемент в рекомендованный список в следующий раз (рис. 4.25).
   (а)

   (б)

   (в)

   Рис. 4.24. Приложение Netflix предоставляет пользователям возможность самостоятельно обозначить свои интересы, предлагая им указать при регистрации год своего рождения и пол (a), оценить жанры кино (б) и указать фильмы в разделе Movies You’ll Love (Фильмы, которые вам бы понравились) (в)

   Рис. 4.25. Приложение Amazon позволяет пользователям указать, были ли их предыдущие покупки подарками и/или их не нужно использовать в качестве основы для составления рекомендаций. Пользователи также могут указывать товары, которые у них уже есть, чтобы их не добавляли в список «Рекомендованные вам товары» («Recommended for You»)

 //-- Связанные шаблоны проектирования --// 
   Поскольку невозможно с точностью предугадать потребности пользователей, персонализация несовершенна. По этой причине попробуйте применить шаблон CUSTOMIZATION, чтобы у пользователей была возможность адаптировать контент и интерфейс к своим потребностям. Кроме того, иногда при персонализации можно учитывать местонахождения пользователя – например, пользователям можно показывать страницы, специально адаптированные для той страны, из которой они выходят в Интернет. Поэтому попробуйте применить шаблон GLOBAL GATEWAY, о котором говорится в главе 10.


   CUSTOMIZATION (КАСТОМИЗАЦИЯ)

 //-- Проблема --// 
   Из всего контента, предлагаемого веб-приложением, пользователям может быть интересна только очень небольшая подгруппа. Однако принимая во внимание различие потребностей и предпочтений всех пользователей, довольно сложно эффективно подбирать и выделять контент. Кроме того, пользователи могут захотеть адаптировать приложение к стандартам своей компании или к индивидуальным предпочтениям. Хотя персонализация предлагает определенный выход из этой ситуации, пользователи знают, чего они хотят, и могут четко обозначить свои потребности.
 //-- Решение --// 
   Предоставьте пользователям такие возможности кастомизации, как добавление или удаление контента, выбор макета страниц, настройка оформления (цветовые решения, шрифты и т. д.), и, по необходимости, добавление или импортирование своего собственного контента (рис. 4.26).
   Рис. 4.26. Портал Yahoo! позволяет пользователю настраивать контент, макет и цвета на своей странице My Yahoo!

 //-- Зачем --// 
   Позволив пользователям кастомизировать приложение, чтобы оно отвечало их информационным потребностям и предпочтениям по цвету, разметке и компонентам, вы предоставите им необходимую свободу. Кроме того, так вы уменьшите нагрузку на проектировщиков, которые смогут переложить необходимость принятия некоторых решений на плечи пользователей. Например, проектировщики смогут сосредоточить свое внимание только на одном варианте графического интерфейса приложения и не беспокоиться о том, чтобы разработать такой дизайн приложения, который бы отвечал потребностям каждого пользователя. С помощью функций кастомизации пользователи могут менять оформление страницы, если им больше нравится другое цветовое решение, шрифты, темы и т. д. Однако это не должно стать поводом избегать сложных проектных решений. Даже когда предложена возможность кастомизации, многие пользователи не будут ничего менять (Mackay, 1991). Кроме того, если приложение предлагает слишком много вариантов кастомизации, это может усложнить интерфейс, и пользователям будет труднее его менять.
 //-- Как --// 
   Предложите пользователям варианты кастомизации контента, оформления и уровней приложения.
   Кастомизация контента
   Кастомизация контента может понадобиться, когда пользователи заинтересованы только в очень небольшой подгруппе контента приложения. Предоставьте пользователям возможность выбора контента, отвечающего их потребностям и интересам. Кроме того, по возможности, классифицируйте контент, чтобы пользователям было проще сузить круг поиска и быстро отобрать необходимый контент (рис. 4.27).
   Рис. 4.27. Когда пользователи проходят по ссылке «Добавить гаджеты» в приложении iGoogle, они видят разбитый на категории список «Гаджетов», которые они могут добавить на свою страницу. Когда пользователь выбирает гаджет, iGoogle рекомендует, какие гаджеты пользователю могут также понравиться, опираясь на его предыдущий выбор. Таким образом, iGoogle помогает пользователям находить нужный им контент

   Еще один способ помочь пользователям отобрать контент – это предоставить подробные описания и оценки пользователей (см. шаблон RATINGS в главе 9).
   Применение персонализации как части кастомизации также является способом помочь пользователям найти нужный им контент. Например, когда пользователь добавляет модуль контента в приложении iGoogle (эти модули называются «гаджетами»), ему также предлагается пройти по ссылке «Вам также могут понравиться…», чтобы просмотреть похожий контент. Также iGoogle помогает пользователям, предоставляя им возможность, добавлять контент автоматически, опираясь на название вкладки, которую они добавляют на свою страницу (рис. 4.28).
   Рис. 4.28. Приложение iGoogle предлагает пользователю опцию I’m feeling lucky. Automatically add stuff based on the tab name (Мне повезет. Автоматически добавлять материалы, исходя из названия вкладки), когда он добавляет новую вкладку на свою страницу iGoogle

   Кастомизация оформления
   Под кастомизацией оформления имеется в виду изменение «внешнего вида» приложения, т. е. макета страницы, цветов и тем (рис. 4.29).
   Рис. 4.29. Приложение My MSN предлагает пользователям несколько вариантов изменения оформления: различные цветовые решения, темы и особые поводы, такие как День Святого Валентина, 8 Марта, Новый год и т. д.

   Однако большинство пользователей не дизайнеры. Если предложить им большой выбор оттенков цвета, их выбор может оказаться неудачным и приложением будет сложно пользоваться. Поэтому попробуйте предложить им выбрать из готовых вариантов цветовых решений. Однако это не значит, что кастомизация должна быть ограничена заранее заданным набором вариантов. Предоставьте пользователям возможность также самостоятельно выбрать цвета (рис. 4.30).
   Рис. 4.30. Сервис Basecamp предлагает пользователям выбрать из готовых вариантов цветовых решений; также он предлагает опцию custom (настройка), которой можно воспользоваться для того, чтобы самостоятельно выбрать отдельные цвета

   Кастомизация приложения
   Для корпоративных веб-приложений может оказаться, что невозможно учесть потребности различных пользователей и при этом не снизить простоту и удобство использования приложения. В таких приложениях предоставьте пользователям возможность кастомизации на отдельных уровнях приложения, например, возможность создания индивидуальных отчетов или даже настраиваемых полей. Пользователи таким образом смогут адаптировать приложение к своему текущему виду деятельности (рис. 4.31). Важно помнить, что подобная кастомизация может применяться нечасто, поэтому предоставьте пользователям необходимую помощь, например, пошаговое руководство и мастера настройки (см. шаблон WIZARDS в главе 5).
   (а)

   (б)

   Рис. 4.31. Сервис SalesForce предлагает пользователям несколько вариантов кастомизации, включая возможность настраивать элементы пользовательского интерфейса (a). При кастомизации элементов пользовательского интерфейса пользователи могут указать даже типы полей, такие как валюта, дата/время, электронная почта, перечень (т. е. раскрывающийся список), текст и т. д. (б). Сервис SalesForce применяет мастера настроек для помощи пользователям на каждом этапе кастомизации

   Сведите к минимуму выбор вариантов кастомизации во время регистрации
   Если пользователь еще не взаимодействовал с веб-приложением, он не может знать, понадобится ли ему кастомизировать его, и если да, то каким образом. По этой причине максимально ограничьте выбор вариантов кастомизации во время процесса регистрации.
   Кастомизация не должна быть обязательной
   Как уже упоминалось, вряд ли пользователи будут часто менять настройки интерфейса, а многие пользователи вообще не будут пользоваться кастомизацией (Маккей, 1991).
   По этой причине важно, чтобы веб-приложение было удобным и эффективным и без кастомизации.
 //-- Связанные шаблоны проектирования --// 
   Поскольку порталы (PORTALS) обычно должны поддерживать большие объемы контента, они обычно позволяют пользователям кастомизировать контент и оформление. Обычно для кастомизации пользователю приходится прилагать усилия.
   По этой причине, если возможно выявить потребности пользователей и персонализировать контент – например, опираясь на указанную ими информацию, – попробуйте дополнить кастомизацию персонализацией (PERSONALIZATION).


   BLANK SLATE (ЧИСТЫЙ ЛИСТ)

 //-- Проблема --// 
   При начале работы со многими приложениями в них отсутствует какая-либо информация, поскольку они опираются на то, что пользователи будут предоставлять данные самостоятельно (например, приложения для отслеживания дефектов, онлайновые календари, списки дел и пр.). Хотя страница приложения постепенно наполнится, новые пользователи, которые только вошли в приложение (или получили доступ к новым возможностям приложения), увидят пустую страницу – «чистый лист». Они могут растеряться, что им делать дальше, и у них может возникнуть ощущение, что приложение не работает должным образом, если они увидят страницу без контента.
 //-- Решение --// 
   На чистой странице ответьте на вопросы, которые могут появиться у новых пользователей, например, вопросы о том, как начать работу, что делать дальше и как будет выглядеть страница после заполнения данными (37signals, 2006). Для этого можно предложить пользователям обучающие руководства и пояснительные тексты и/или показать снимок экрана с типичной страницей, наполненной контентом (рис. 4.32).
   Рис. 4.32. Сервис выписки счетов Blinksale предоставляет краткую инструкцию по пользованию информационной панелью и показывает пример информационной панели, демонстрирующий пользователям, как она должна выглядеть после внесения данных

 //-- Зачем --// 
   Любое руководство, которое можно предложить пользователям во время их первого взаимодействия с веб-приложением, помогает им сориентироваться в приложении и быстро начать работу. Кроме того, столкнувшись с пустой страницей, пользователи могут понять, что им тяжело определить диапазон и круг возможностей веб-приложения, что ограничит степень их взаимодействия с приложением.
   Чистая страница должна выполнять несколько функций: формировать адекватные ожидания, стимулировать деятельность, знакомить пользователя с тем, как будет в конечном итоге выглядеть страница, и производить позитивное первое впечатление от приложения (Hoekman, 2008; 37signals, 2006).
 //-- Как --// 
   Важный элемент проектирования эффективной чистой страницы – это отображение одного или нескольких действий, с помощью которых можно убрать чистый лист и познакомить пользователей с приложением (рис. 4.33).
   Рис. 4.33. На чистой странице приложения Box.net пользователям предлагается несколько способов начала работы (например, создать новую папку, создать новую общую папку). Также пользователям предлагается опция Watch video demo (Посмотреть демонстрационный ролик)

   Эти действия могут сопровождаться сообщениями, объясняющими пользователям, почему они не видят никакого контента. Например, сервис Basecamp показывает такие сообщения, как «Создать первую панель для записей по данному проекту», под словом «первая» подразумевается, что пользователи еще не создали ни одной панели для записей (рис. 4.34).
   Рис. 4.34. Сервис Basecamp показывает сообщение Create the first writeboard for this project (Создать первую панель для записей по данному проекту), чтобы обозначить, что пользователь еще не создал ни одной панели для записей. Также пользователи могут увидеть, что собой представляют панели для записей, и посмотреть демонстрационный ролик (который длится приблизительно 2 минуты), чтобы получить о них больше информации

   Предоставьте пользователям соответствующие обучающие материалы и деморолики
   С помощью обучающих пособий и демонстрационных материалов объясните пользователям, какие этапы нужно пройти, чтобы начать работу с веб-приложением или новым функционалом (см. рис. 4.34). Эти руководства должны быть целенаправленными и короткими, чтобы пользователи быстро могли начать работу с приложением.
   Покажите пользователям примеры снимков экрана
   Пользователи должны знать, чего им ожидать. Для этого покажите им пример снимка экрана страницы, наполненной контентом. Обозначьте, что в примере указаны ненастоящие данные, отметив пример водяным знаком, таким как «Образец данных» или «Пример», или сделайте снимок экрана тусклым, чтобы он сливался с фоном (рис. 4.35).
   Рис. 4.35. Сервис Blinksale показывает пример в виде тусклого снимка экрана с отметкой Example (Пример)

   Помогайте пользователям с первоначальными настройками
   Если пользователи должны выполнить определенные задания, прежде чем начать работать с веб-приложением, предоставьте им возможность воспользоваться подсказками на начальном этапе настройки. Например, в приложении для работы с финансами пользователям может быть предложено создать счет (рис. 4.36).
   Рис. 4.36. Сервис Mint предлагает пользователям помощь в первоначальной настройке учетной записи. Пользователи видят страницу без контента, на которой тусклым цветом обозначены примеры данных, чтобы пользователи получили общее представление о том, как в конечном итоге будет выглядеть их учетная запись

 //-- Связанные шаблоны проектирования --// 
   Шаблон BLANK SLATE обеспечивает необходимое руководство для новых пользователей приложения, чтобы они быстро могли включиться в работу. Необходимость помогать пользователям не исчезает, когда они наладили взаимодействие с приложением и внесли необходимые данные. Необходимо продолжать помогать пользователям в течение всего процесса их взаимодействия с приложением, применяя для этого шаблоны CONTEXTUAL HELP, FREQUENTLY ASKED QUESTIONS и APPLICATION HELP, о которых будет рассказано в главе 14, и шаблон INPUT HINTS/PROMPTS, описанный в главе 2.



   Глава 5
   Навигация


   Введение

   Процесс проектирования навигации заключается в создании связей между различными частями приложения (т. е. контентом и функционалом) и применение их иерархической структуры для эффективного и результативного выполнения пользовательских задач. Сюда относится структурирование, маркирование и презентация контента и функционала. Данная глава посвящена шаблонам, имеющим отношение к типам навигационных систем и их презентации; чтобы узнать о структурировании и маркировании навигационных систем, см. работы Морвиля и Розенфельда (Morville and Rosenfeld, 2006), Кальбаха (Kalbach, 2007) и Флеминга (Fleming, 1998).
   Основная часть веб-приложений имеет иерархическую структуру, благодаря чему пользователи получают доступ к контенту и функционалу этих приложений с помощью различных уровней навигации. На самом высоком уровне, на уровне основной навигации (PRIMARY NAVIGATION), или глобальной навигации, представлены категории и группы самого высокого уровня, т. е. те, к которым пользователи могут получить доступ из любой точки приложения. Благодаря этому пользователям легче ориентироваться в приложении. Вторичная навигация (SECONDARY NAVIGATION), или локальная навигация, представляет собой опции второго и последующего уровней для выбранной опции основной навигации. Помимо основной и вторичной навигации пользователям также необходим способ быстро получить доступ к некоторым ключевым функциям (например, вход, выход, выбор языка и т. п.) и контенту (например, помощь, корзина, учетная запись и т. п.). Как и основная навигация, эти ключевые функции и подобный контент должны быть доступны из любой точки приложения – служебная навигация (UTILITY NAVIGATION).
   Хотя основная и вторичная навигация важны для поддержки иерархической структуры приложения, контент во многих приложениях очень разноплановый, и его нельзя организовать иерархически. В качестве наиболее универсального подхода к контенту появилась многоаспектная навигация (FACETED NAVIGATION), способствующая осуществлению разнообразных задач и предоставляющая пользователю возможность осуществлять навигацию с помощью различных средств, не ограничивая диапазон этих средств каким-либо одним (так называемым аспектом), необходимым для того, чтобы начать навигацию.
   Помимо иерархического подхода к структурированию процесса навигации, пользователи могут также оценить преимущества неиерархического подхода, когда для навигации используются предметные указатели, списки родственных элементов, рекомендации и т. д. – дополнительная навигация (SUPPLEMENTARY NAVIGATION). Дополнительные навигационные системы нужны не только в качестве альтернативных способов доступа к контенту, но также и для того, чтобы стимулировать процесс изучения приложения. Более новые приложения, в первую очередь те, в основу которых положен контент, создаваемый или закачиваемый пользователями, предоставляют пользователям возможность изучить новый контент с помощью так называемой фолксономии – структуры, в основу которой положены предоставленные пользователями метки, описывающие контент приложения – облака тегов (TAG CLOUDS).
   Еще одна важная функция навигации – это ориентирование пользователей и предоставление им информации о том, в какой точке приложения они находятся. Для ориентирования пользователей обычно применяется навигационная цепочка (BREADCRUMBS).
   Хотя в основном навигация в приложении используется для того, чтобы привести пользователей к желаемому контенту или функции, бывают случаи, когда навигация используется, чтобы помочь пользователям выполнить какие-либо задачи путем пошаговых инструкций – мастеров настройки (WIZARDS). В частности, это актуально для выполнения нечасто встречающихся, но от этого не менее важных многоэтапных задач, в которых могут быть зависимости, неизвестные пользователям.


   PRIMARY NAVIGATION (ОСНОВНАЯ НАВИГАЦИЯ)

 //-- Проблема --// 
   Наиболее часто встречающийся функционал и категории (или объекты) самого высокого уровня в приложении должны быть легкодоступными и понятными пользователям. Кроме того, у пользователей должна быть возможность быстро перемещаться между основными разделами из любой точки веб-приложения.
 //-- Решение --// 
   Предложите пользователям единообразный способ навигации между основными функциями приложения и расположите эти функции в едином стиле, так чтобы они выделялись на страницах приложения (рис. 5.1).
   Рис. 5.1. В приложении LinkedIn применяются вкладки, с помощью которых пользователи могут перейти к важным возможностям и функциям приложения

 //-- Зачем --// 
   В веб-приложениях основная навигация играет важнейшую роль для организации навигации и ориентирования. Она выступает как в качестве содержания (отображая функции высокого уровня в приложении), так и в качестве механизма для ориентирования, позволяющего пользователям понять, в какой точке приложения они находятся (см. шаблон BREADCRUMBS далее в этой главе).
 //-- Как --// 
   Поместите основную навигацию либо горизонтально наверху страницы, либо вертикально вдоль правой или левой стороны страницы. В веб-приложениях чаще всего основная навигация располагается горизонтально (рис. 5.2); Адкиссон (Adkisson, 2002) выяснил, что в 87 % (65 из 73 сайтов) приложений для электронной коммерции основная навигация размещается наверху страницы.
   Рис. 5.2. В приложении Rally основная навигация размещается горизонтально, так чтобы поместились данные таблицы с несколькими столбцами

   Это объяснимо, поскольку при вертикальном расположении основной навигации уменьшается ширина страницы. В веб-приложениях, где данные отображаются в виде таблицы с множеством колонок, вертикальное размещение основной навигации может привести к необходимости горизонтальной прокрутки, или табличные данные будут выглядеть беспорядочно.
   Однако в случае расположения основной навигации по горизонтали, сокращается количество навигационных опций, отображающихся на экране до начала горизонтальной прокрутки. Чтобы избежать горизонтальной прокрутки, в веб-приложениях часто прибегают к опции «еще» (или «more») (представленной в виде стрелки), чтобы пользователи могли просмотреть дополнительные варианты для навигации (рис. 5.3); это напоминает панели инструментов в настольных приложениях, таких как Microsoft Word, Firefox и пр. В таблице 5.1 обобщены преимущества и недостатки горизонтального и вертикального размещения основной навигации.
   Рис. 5.3. В приложении SalesForce используется вкладка со стрелкой, позволяющая пользователям перейти к дополнительным опциям основной навигации, которые не поместились на странице

   Независимо от местоположения основной навигации, важно, чтобы она размещалась единообразно по всему приложению и была доступна из любой его точки.
 //-- Таблица 5.1. Преимущества и недостатки горизонтального и вертикального размещения основной навигации --// 

   Основная навигация должна визуально выделяться
   Поскольку пользователи с помощью основной навигации получают доступ к главному функционалу веб-приложения, она должна быть яркой и выделяться среди остального контента на странице (рис. 5.4).
   Рис. 5.4. В приложении Plaxo основная навигация четко выделяется на странице

   Выделяйте выбранную опцию навигации
   Выделяйте выбранную опцию навигации, чтобы пользователи знали, в какой точке приложения они находятся. Для этого можно выделить данную опцию другим цветом, фоном и/или границей (рис. 5.5).
   Рис. 5.5. В приложении Backpack выбранная опция отображается в виде вкладки, чтобы визуально она отличалась от других опций навигации

   Не отображайте основную навигацию для тех заданий, которые содержат собственную навигацию
   Обычно основная навигация должна размещаться и быть доступной по всему приложению. Однако для многоэтапных заданий с собственной навигацией (например, мастера настроек), чтобы свести к минимуму переключение внимания или предотвратить потерю данных (например, при оформлении покупки, первоначальной установке или регистрации), основную навигацию можно не отображать (рис. 5.6). Поскольку подобные задания часто содержат свою собственную навигацию, то не отображая основную навигацию, вы сможете предотвратить путаницу, которая может возникнуть при работе с различными механизмами навигации (см. шаблон WIZARDS далее в этой главе).
   Рис. 5.6. На сайте сети магазинов Gap, как только пользователь приступает к процессу оформления покупки, убираются все виды навигации (за исключением тех, которые необходимы для совершения покупки). На данном сайте для отображения опции входа в учетную запись, оформления доставки, оплаты и т. д. используется «гармошка» [7 - При оформлении в виде «гармошки» пользователь не может просматривать контент нескольких опций одновременно. При щелчке по одной из опций ее контент разворачивается, а контент других вариантов – наоборот, закрывается. Такой стиль оформления напоминает навигацию по вкладкам, поскольку в обоих случаях можно просматривать опции только по очереди. Главное различие заключается в визуальном оформлении и в том, что в случае с «гармошкой» при отображении контента каждой навигационной опции применяется анимационный эффект «скольжения».]

   С помощью результативного маркирования создайте верный «запах» информации
   Метки для основной навигации очень важны при создании верного «запаха» информации в приложении. Понятие «запаха» информации происходит из «информационно-продовольственной теории» (information foraging theory), объясняющей механизмы, используемые при поиске информации (Chi et al., 2000; Pirolli and Card, 1999). Согласно этой теории, из множества вариантов пользователи выбирают тот, в котором присутствует наиболее выраженный ориентир, или «запах», с помощью которого они могут приблизиться к желаемой информации. Применительно к основной навигации, если метки навигационных опций не содержат выраженного «запаха», пользователю будет не только сложнее определить, какую опцию выбрать, но он может выбрать неверную опцию, что приводит к безрезультативному взаимодействию и неприятному опыту работы с приложением.
   Другими словами, опираясь только на навигационные метки, пользователи должны быть в состоянии понять, к какой информации они получат доступ и какие задания смогут выполнить, если выберут ту или иную опцию навигации.

   Примечание
   Необходимость создания верного «запаха» информации относится ко всем типам навигационных систем, а не только к основной навигации.

 //-- Связанные шаблоны проектирования --// 
   В большинстве веб-приложений поддерживается иерархическая структура навигации, при этом необходима как основная навигация, так и вторичная навигация (SECONDARY NAVIGATION). Для более сложных иерархических структур навигации попробуйте применить шаблон BREADCRUMBS, чтобы сориентировать пользователей и показать им, в какой точке приложения они находятся.


   SECONDARY NAVIGATION (ВСПОМОГАТЕЛЬНАЯ НАВИГАЦИЯ)

 //-- Проблема --// 
   Пользователям необходим способ доступа к навигационным опциям, находящимся на более низких уровнях в иерархической структуре, чем основная навигация.
 //-- Решение --// 
   Покажите пользователям вторичную навигацию, которая соответствует выбранной опции основной навигации. Кроме того, четко отобразите иерархические отношения между основным и каждым вторичным уровнем навигации (рис. 5.7).
   Рис. 5.7. В приложении Rally вторичная навигация расположена под выбранной опцией основной навигации. Хотя это нетипично, в приложении Rally пользователи могут добавлять свои собственные опции вторичной навигации

 //-- Зачем --// 
   Навигация в большинстве веб-приложений спроектирована таким образом, чтобы поддерживать их иерархическую структуру [8 - Это не исключает других подходов к навигации, таких как быстрые ссылки на родственные элементы, алфавитные указатели, навигационные цепочки и т. д. (см. шаблон SUPPLEMENTARY NAVIGATION далее в этой главе). Однако иерархическую структуру проще понять, поскольку она представляет хорошо известный способ организации информации. По этой причине для структурирования информации предпочтительно применять иерархический подход (Morville and Rosenfeld, 2006).], обычно состоящую из двух или трех уровней. Вторичная навигация дополняет основную навигацию и облегчает доступ к тем опциям, которые стоят ниже основной навигации в иерархической структуре приложения. Хотя опции вторичной навигации меняются в зависимости от выбранной опции основной навигации, их расположение в приложении должно быть единообразным и вызывать желание исследовать приложение.
 //-- Как --// 
   Четко обозначьте, к какой опции основной навигации принадлежит данный вторичный (и последующие) уровни навигации. Когда основная навигация располагается горизонтально, опции вторичной навигации должны либо также располагаться горизонтально под основной навигацией (см. рис. 5.6), либо располагаться вертикально, слева или справа на странице (рис. 5.8).
   Рис. 5.8. На сайте сети магазинов Gap навигация оформлена в виде перевернутой английской буквы L: основная навигация располагается горизонтально наверху страницы, а вторичная навигация – вертикально, по левому краю

   Чаще всего вторичная навигация размещается вертикально, по левому или правому краю страницы, этот вариант предпочтителен, когда все опции вторичной навигации не помещаются на страницу при горизонтальном размещении, или когда помимо вторичной навигации существуют последующие уровни навигации. Благодаря вертикальному расположению вторичной навигации, на странице можно уместить все навигационные опции каждого из иерархических уровней навигации. Хотя способ оформления навигации в виде перевернутой буквы L, т. е. размещение вторичнои навигации слева на странице, а основной навигации наверху, является довольно типичным, Кальбах и Бозеник (Kalbach and Bosenick, 2003) не нашли никаких преимуществ такого способа оформления по сравнению с размещением навигации справа на странице. При отображении многоуровневых иерархических структур навигация довольно часто показана в виде обладающего древоподобнои структурой списка с отступом (рис. 5.9).
   Рис. 5.9. На сайте сети магазинов Wal-Mart используется древообразная схема навигации для второго и третьего уровней вторичной навигации

   Все чаще в веб-приложениях для отображения опций вторичной навигации используются такие же меню, как в настольных приложениях (рис. 5.10); их также называют «динамическими меню», выпадающими меню, всплывающими меню и раскрывающимися меню.
   (а)

   (б)

   Рис. 5.10. На сайте PriceGrabber (a) и Sony (б) для отображения опций вторичной навигации используется меню. Поскольку на сайте Sony более сложная структура навигации, на нем также используются каскадные меню

   Преимущество меню заключается в том, что они не занимают дополнительного пространства и позволяют пользователям изучить приложение, не выбирая ни одной из опций основной навигации. Однако меню обладает и некоторыми недостатками. В первую очередь, пользователи предпочитают видеть сразу все варианты, а не скрытые раскрывающиеся меню. Бернард и Хэмблин (Bernard and Hamblin, 2003) обнаружили, что горизонтальное расположению меню воспринимается негативно по сравнению с вертикальным расположением, а также при таком расположении на поиск необходимой опции уходит больше времени. Кроме того, меню могут вызывать затруднения для пользователей, использующих вспомогательные технологии (например, программы для чтения экрана), если эти меню активируются при наведении на них курсора мыши. Чтобы они были доступнее, они должны активироваться щелчком мыши, а опции навигации должны открываться клавишами клавиатуры. Также они могут вызывать путаницу в тех случаях, когда отсутствует контекст выбранной опции; в определенной степени эта проблема решается с помощью навигационных цепочек (см. шаблон BREADCRUMBS далее в этой главе).
   Выделяйте выбранные опции основной и вторичной навигации
   Чтобы сориентировать пользователей в приложении, выделяйте выбранную на данный момент навигационную опцию, как основную, так и вторичную, для этого можно использовать размер и стиль шрифта, цвет фона, размер и цвета границы (см. рис. 5.10).
 //-- Связанные шаблоны проектирования --// 
   Поскольку доступ к иерархической структуре приложения можно получить с помощью навигационной системы, вторичная навигация немыслима без основной навигации (PRIMARY NAVIGATION). Также рекомендуется использовать навигационные цепочки (BREADCRUMBS), поскольку с их помощью можно не только увидеть, какое место в иерархии занимает тот или иной элемент, но также можно легко вернуться к более высокому иерархическому уровню.


   UTILITY NAVIGATION (СЛУЖЕБНАЯ НАВИГАЦИЯ)

 //-- Проблема --// 
   Пользователям необходимо иметь доступ к определенным функциям и инструментам, например, к своей корзине, к помощи, странице входа в учетную запись, возможность выйти из нее, к информации из учетной записи, предпочтениям, выбору языка, выбору страны, выбору размера шрифта и т. д., ко всем страницам приложения. Хотя это ключевые функции, которые должны быть доступны из любой точки приложения, обычно они используются нечасто.
 //-- Решение --// 
   Разбейте такие функции и инструменты на группы (т. е. утилиты) и предоставьте пользователям возможность доступа к ним с любой страницы приложения. Поскольку они должны быть доступны из любой точки приложения, разместите их в области заголовка (рис. 5.11).
   Рис. 5.11. В приложении Snapfish функции служебной навигации разделены на log out (выход), help (помощь), your cart (ваша корзина) и your account (ваша учетная запись) – они располагаются в верхнем правом углу страницы

 //-- Зачем --// 
   Благодаря служебной навигации, пользователи могут быстро переходить к важным и ключевым функциям приложения. При единообразном и ожидаемом стиле размещения этих функций в приложении пользователи легко смогут их найти. Однако эти функции не являются основным механизмом для навигации по приложению, поэтому они должны меньше зрительно выделяться на странице по сравнению с основной навигацией.
 //-- Как --// 
   Поместите служебную навигацию в область заголовка (желательно в верхний правый угол страницы) на всех страницах веб-приложения. Кроме того, служебная навигация визуально должна выделяться меньше, чем основная навигация.
   Сделайте акцент на часто используемых функциях
   Если какие-либо служебные функции используются чаще, чем остальные (например, корзина в приложениях для электронной коммерции), выделите их среди прочих, для этого дополните их метки иконками и/или иным образом визуально выделите их среди прочих опций служебной навигации (рис. 5.12).
   Рис. 5.12. На сайте Buy.com для корзины используется специальная иконка, а опция View Cart (Просмотреть корзину) выделена оранжевым цветом, отличающим ее от других опций навигации

   Применяйте служебную навигацию, чтобы разрешить перемещение между рабочими пространствами или приложениями
   Веб-приложения, позволяющие пользователям создавать и получать доступ к различным рабочим пространствам – например, различным проектам, – часто применяют служебную навигацию для перемещения между этими рабочими пространствами (рис. 5.13).
   Рис. 5.13. В приложении Rally Agile Pro пользователи могут перемещаться между рабочими пространствами, выбирая другое рабочее пространство из раскрывающегося списка в области служебной навигации

   Точно так же в пакетах приложений, например, тех, что предлагают Google и Zoho, пользователи могут перемещаться между приложениями с помощью служебной навигации (рис. 5.14).
   Рис. 5.14. Портал Zoho позволяет пользователям менять приложения с помощью раскрывающегося списка Switch to (Переключиться на), находящегося среди опций служебной навигации

   Включите в служебную навигацию возможность выбора языка
   Веб-приложения, поддерживающие несколько языков, обычно включают в себя возможность смены языка (или страны), эта возможность реализована в виде навигационной опции (рис. 5.15; см. шаблон LANGUAGE SELECTOR из главы 10).
   Рис. 5.15. Приложение онлайновых заказов Dominos позволяет пользователям выбрать между английским или испанским языком, что также относится к опциям служебной навигации

 //-- Связанные шаблоны проектирования --// 
   Описанные здесь опции служебной навигации являются «глобальными» по своей природе (т. е. они применимы ко всей странице в целом) и размещаются в области заголовка. Однако некоторые служебные функции по природе своей «локальны» и применимы только к контенту страницы: это такие функции, как экспортировать в Excel или XML, распечатать, отправить другу электронным письмом и т. д., – они располагаются рядом с тем контентом, к которому относятся (см. шаблон LIST UTILITY FUNCTIONS в главе 7). Кроме того, к опциям служебной навигации относится возможность смены языка или страны (см. шаблоны LANGUAGE SELECTOR и GLOBAL GATEWAY в главе 10).


   FACETED NAVIGATION (МНОГОАСПЕКТНАЯ НАВИГАЦИЯ)

 //-- Проблема --// 
   Такие предметы, как вина, бриллианты, рецепты, камеры, компьютеры и многие другие можно классифицировать по нескольким признакам. Например, вина можно классифицировать по виду (красное, белое), происхождению (калифорнийское, французское, испанское, австралийское), цене (ниже 500 рублей, 500-1500 рублей и т. д.) и некоторым другим признакам. Таким образом, не существует некой универсальной иерархической структуры, которую можно положить в основу навигации. Фактически навигационная схема может выводиться для каждого признака. Проектирование процесса навигации на основании лишь одного из признаков неэффективно и неудобно многим пользователям.
 //-- Решение --// 
   Предложите пользователям многоаспектную навигацию, при которой пользователи смогут выбрать любой аспект (т. е. признак) данного элемента. При каждом выборе признака отображайте дополнительные навигационные опции в зависимости от признаков оставшихся элементов (рис. 5.16).
   (а)

   (б)

   Рис. 5.16. На сайте Wine.com применяется многоаспектная навигация. При каждом выборе остается все меньше доступных аспектов, подходящих под определенные признаки оставшихся элементов. Таким образом, навигационные опции в разделе (a) Красное вино (Red Wine) ⇒ Cabernet Sauvignon отличаются от навигационных опций в разделе (б) Белое вино (White Wine) ⇒ Cabernet Sauvignon ⇒ $20–$40 (диапазон цен)

 //-- Зачем --// 
   В отличие от иерархической навигации, основывающейся лишь на одном признаке, многоаспектная навигация предоставляет пользователям возможность перейти к желаемому элементу, обозначив несколько признаков. Кроме того, пользователи могут выбрать любой признак для начала поиска. Другое важное преимущество заключается в том, что при многоаспектной навигации поиск всегда выводит результаты.
   Поскольку многоаспектная навигация основывается на «аспектах» (или признаках) самих оставшихся элементов, пользователи увидят хотя бы один вариант выбора по завершении навигации. Фактически в этом заключается важное отличие многоаспектной навигации (или многоаспектного поиска) от фильтрации (см. шаблоны FILTERING и FACETED SEARCH в главе 6).
 //-- Как --// 
   Покажите пользователям все доступные аспекты, с которых они могут начать свой поиск (рис. 5.17). Когда пользователи выбрали первоначальный аспект, покажите им элементы, принадлежащие к данному аспекту, а также обновите список навигационных опций в зависимости от аспектов оставшихся элементов. Дополнительные аспекты можно разместить вертикально слева страницы или горизонтально над списком элементов – расположение зависит от общего количества аспектов и дизайна приложения в целом; горизонтальное размещение может быть неудобным для элементов с несколькими аспектами (рис. 5.18).
   Рис. 5.17. В приложении Epicurious пользователи могут выбрать один из нескольких аспектов для поиска рецептов

   (а)

   (б)

   Рис. 5.18. В Приложении NexTag аспекты располагаются слева (a), а в приложении CNet они размещены наверху страницы (б)

   Сообщайте пользователям о том, что они выбрали
   Во избежание путаницы показывайте пользователям, что они выбрали, используя для этого такие механизмы, как навигационные цепочки (BREADCRUMBS) над списком элементов (рис. 5.19) (см. шаблон BREADCRUMBS далее в этой главе.)
   Рис. 5.19. В приложении Wine.com выбор пользователя отображается в виде навигационной цепочки над списком элементов. Пользователи также могут увидеть выбранные ими опции слева на странице, где их выбор выделен среди других вариантов. Кроме того, чтобы использовать вариант «Home» («Дом»), который чаще всего встречается в навигационных цепочках, на сайте Wine.com используется вариант «Start Over» («Начать»). Благодаря этому пользователю проще начать пользоваться приложением, а также подобное решение помогает избежать путаницы, возникающей при использовании ссылки с меткой «Home» («Дом»)

 //-- Связанные шаблоны проектирования --// 
   Как уже упоминалось ранее, чтобы отметить выбор пользователя при многоаспектной навигации, можно применить шаблон BREADCRUMBS. Кроме того, приложения с многоаспектной навигацией обычно также поддерживают многоаспектный поиск (FACETED SEARCH) (см. главу 6).


   SUPPLEMENTARY NAVIGATION (ДОПОЛНИТЕЛЬНАЯ НАВИГАЦИЯ)

 //-- Проблема --// 
   Хотя шаблоны PRIMARY NAVIGATION и SECONDARY NAVIGATION предоставляют эффективный способ навигации по иерархической структуре приложения, они не являются удобным способом изучения нового контента и не способствуют исследованию приложения. Это может привести как к проблемам в работе с функциями веб-приложения, так и к сокращению количества проводимых операций (например, покупок, закачек, комментариев и т. д.).
 //-- Решение --// 
   Предложите пользователям дополнительные механизмы навигации, такие как алфавитные или пронумерованные предметные указатели, рекомендации, родственные элементы и т. д., с помощью которых процесс поиска новой информации будет удобнее, а также появится прямой доступ к релевантной информации (рис. 5.20).
   Рис. 5.20. На странице приложения Sun Downloads пользователям предлагается выбор из нескольких опций навигации для перехода к странице загрузки определенного программного обеспечения

 //-- Зачем --// 
   С помощью дополнительной навигации пользователи могут напрямую переходить к тому или иному контенту, а также у них появится стимул изучить новый контент. Однако важно запомнить, что дополнительная навигация не является заменой для навигационной структуры приложения, в которой необходимо присутствие основной и вторичной навигации, и не компенсирует плохую организацию информации в приложении (Morville and Rosenfeld, 2006).
 //-- Как --// 
   Ниже приводится несколько способов реализации дополнительной навигации в веб-приложениях и предоставления прямого доступа к контенту или функционалу приложения.
   Указатели
   Указатели представляют собой алфавитные или пронумерованные списки элементов приложения или его категорий.
   Когда пользователи знают, что именно они ищут, алфавитный указатель может быть удобнее, чем навигация по иерархической структуре приложения [9 - Еще один способ быстро перейти к известному элементу – это поиск (см. шаблоны поиска в главе 6).].
   В больших приложениях алфавитный указатель может размещаться на нескольких страницах, по одной или несколько страниц на каждую букву или номер (рис. 5.21).
   Рис. 5.21. В приложении PDRHealth с помощью алфавитного указателя можно легко найти определенное лекарство, продаваемое по рецепту, без рецепта, а также травы и добавки

   Поскольку большинство людей умеют пользоваться алфавитными указателями, обычно не нужно давать инструкции по их использованию.
   Рекомендации
   Рекомендации – это еще один способ ознакомить пользователей с новым контентом. В основу рекомендаций может быть положена информация о предыдущем поиске или покупках пользователя и/или об аналогичном поведении пользователей с похожими интересами и профилями (т. е. совместная фильтрация), как показано на рис. 5.22 (см. шаблон PERSONALIZATION в главе 4).
   Рис. 5.22. На сайте Amazon пользователям предложены рекомендации под заголовком Customers Who Bought This Item Also Bought (Покупатели, выбравшие этот товар, также купили), благодаря чему легче искать новые товары

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

 //-- Связанные шаблоны проектирования --// 
   В соответствии со своим названием дополнительная навигация дополняет, а не замещает основную навигацию (PRIMARY NAVIGATION) и вторичную навигацию (SECONDARY NAVIGATION). Кроме того, поскольку с помощью дополнительной навигации можно обойти иерархическую навигационную структуру, реализация шаблона навигационная цепочка (BREADCRUMBS) может помочь пользователям в понимании того, в какой точке структуры приложения они находятся. Облака тегов (TAG CLOUDS) – это еще один вид дополнительной навигации, который можно применять в тех приложениях, контент в которые добавляется пользователями.


   TAG CLOUDS (ОБЛАКА ТЕГОВ)

 //-- Проблема --// 
   Веб-приложения, позволяющие пользователям создавать или добавлять контент, например, фотографии, видео, музыку и т. д., обычно позволяют пользователям ставить метки (т. е. теги) на просматриваемые или добавленные элементы (см. шаблон TAGGING в главе 9). Когда элемент маркируется несколькими пользователями, созданные ими теги, скорее всего, будут несогласованными, как следствие различных интересов, степеней знакомства с этим элементом и применением контекста. Такой разнобой в тегах может затруднить процесс поиска этого же элемента в будущем. Кроме того, пользователям может понадобиться найти элементы, аналогичные тем, которые им интересны. Например, после просмотра видеозаписи соревнований по плаванию на Олимпийских играх пользователь может захотеть посмотреть другие видеозаписи с этим же самым спортсменом на других Олимпийских играх.
 //-- Решение --// 
   С помощью облаков тегов показывайте пользователям теги отдельных просматриваемых ими элементов, а также степень их «объективности» или насколько хорошо они описывают эти элементы. Кроме того, позвольте пользователям переходить к той или иной информации с помощью тегов из облаков тегов (рис. 5.24).
   Рис. 5.24. В приложении Last.fm применяются облака тегов для отдельных элементов (например, для музыкальных стилей, исполнителей или альбомов)

 //-- Зачем --// 
   В отличие от описанных выше способов навигации, которые разработаны таким образом, чтобы они были согласованными и поддерживали как навигацию, так и ориентирование в приложении, облака тегов являются связующим механизмом навигации и используются для ознакомления с новым контентом (Kalbach, 2007).
   Эта связующая навигация поддерживает три способа изучения информации (Smith, 2007):
   1. Круговой обзор. Пользователи могут выбрать новую точку отсчета, ось, для изучения информационного пространства.
   2. Навигация на основе рейтинга. Облака тегов, делающие акцент на наиболее часто применяемых или просматриваемых тегах, показывают, какие из них являются наиболее популярными (рис. 5.25). В этом случае пользователи могут с их помощью оценить характер, качество и значение каждого ресурса в приложении.
   Рис. 5.25. В приложении NexTag облака тегов отображают, какие элементы чаще всего ищут пользователи

   3. Фильтрация. Каждая метка в облаке тегов может использоваться как фильтр и позволяет пользователям просматривать только те элементы, которые отмечены данным тегом.
   Кроме того, поскольку тегировать элемент могут несколько пользователей, облака тегов являются наглядным обзором – семантической картой видов – тегированных элементов (Rivadeneira et al., 2007), а в некоторых случаях и всего приложения в целом (рис. 5.26).
   Рис. 5.26. В блоге WebDesignerWall облако тегов используется в качестве устойчивого, но при этом динамического механизма навигации. Поскольку оно обновляется с каждой новой записью в блоге, оно отображает полезную информацию о характере записей. Кроме того, эти записи используются для фильтрации, благодаря которой пользователи могут просматривать все элементы, отмеченные одним тегом

 //-- Как --// 
   Самый популярный способ отображения тегов – это группа связанных между собой понятий – облако тегов. Смысл облака тегов заключается не только в том, чтобы показать пользователям связанные понятия, но также и в том, чтобы обозначить степень важности каждого тега (или его частотность, или популярность). Это реализуется преимущественно размером шрифта, стилем (полужирный или обычный) и/или цветами (рис. 5.27). Обычно чем выше контрастность шрифта, тем популярнее обозначенный этим шрифтом тег по сравнению с другими. Таким образом, чем меньше популярность тега, тем ниже контрастность.
   Рис. 5.27. В приложении Delicious размер шрифта отражает степень популярности тега, а цвета используются для выделения тегов данного пользователя среди остальных тегов сообщества

   Однако нужно быть осторожнее и не использовать слишком много цветов или много разных размеров шрифта в одном облаке тегов. При использовании слишком большого количества цветов облако тегов будет выглядеть перегруженным, и пользователю будет тяжело разобраться в тегах. В целом, не применяйте более трех разных цветов для обозначения степени популярности тега.
   В зависимости от задач пользователя определите порядок тегов
   Теги в облаке тегов обычно расположены в алфавитном порядке. Благодаря этому тег быстрее найти, особенно если количество тегов увеличивается (Halvey and Keane, 2007). Однако в работе Ривандейра и др. (Rivadeneira et al., 2007) представлено доказательство того, что, когда в задачу пользователей входит составление мнения о человеке, расставившем теги, лучше располагать теги в зависимости от их частотности, а не в алфавитном порядке. В приложениях, где задачи пользователей могут быть разнообразными, возможно, стоит позволить пользователям расположить теги несколькими различными способами (рис. 5.28).
   Рис. 5.28. В приложении Delicious пользователи могут просматривать теги в виде облаков или списков, расставлять их в алфавитном порядке или по частоте использования, фильтровать их по минимальному количеству появлений и т. д.

 //-- Связанные шаблоны проектирования --// 
   Облака тегов не должны использоваться как единственное средство навигации по веб-приложению. Они должны дополняться основной навигацией (PRIMARY NAVIGATION) и вторичной навигацией (SECONDARY NAVIGATION).

   Примечание
   При задании размера шрифта для тегов в каскадных таблицах стилей (CSS) используйте относительные единицы «em», проценты или «ex» (вместо «px» или «pt»), чтобы облака тегов были доступнее. Так пользователи смогут изменить размер текста на странице браузера, и это не повлияет на значение и популярность тегов, обозначенные размером шрифта.



   BREADCRUMBS (НАВИГАЦИОННАЯ ЦЕПОЧКА)

 //-- Проблема --// 
   Пользователи могут запутаться, в какой точке многоуровневого приложения они находятся. Хотя у пользователей есть возможность щелкнуть по кнопке возврата в браузере, чтобы сориентироваться или вернуться к предыдущим страницам, опытные пользователи могут решить, что довольно неудобно несколько раз щелкать по кнопке «назад» или опять начинать с домашней страницы, просто чтобы вернуться на предыдущую страницу. Кроме того, если пользователи «телепортировались» на страницу, воспользовавшись поиском или другими видами внешних ссылок, они могут не знать, где находится данная страница относительно других страниц приложения (Spool, 2005).
 //-- Решение --// 
   Создайте навигационные цепочки, начинающиеся с главной страницы приложения и ведущие к текущей странице – так чтобы можно было определить расположение текущей страницы в иерархической структуре приложения. Привяжите ссылку на каждую страницу к навигационной цепочке, чтобы пользователи могли вернуться к любой промежуточной странице (рис. 5.29).
   Рис. 5.29. В приложении Circuit City навигационные цепочки местоположения используются, чтобы обозначить, в какой точке приложения находится пользователь. Кроме того, в навигационной цепочке представлена ссылка на каждую страницу, чтобы пользователь мог легко перейти к этой странице

 //-- Зачем --// 
   Хотя существует несколько вариантов воплощения навигационных цепочек, например, навигационная цепочка местоположения, навигационная цепочка пути и навигационная цепочка категории. Самый популярный и рекламируемый специалистами в области простоты и удобства пользования приложением тип – это навигационная цепочка местоположения (Instone, 2002; Nielsen, 2007; Spool, 2005). Указывая относительное местоположение текущей страницы в структуре приложения, навигационная цепочка местоположения помогает пользователям сориентироваться и понять иерархическую структуру приложения. Более того, благодаря ссылке на родительские страницы, навигационная цепочка выполняет важную, хотя и второстепенную, навигационную функцию, предоставляя пользователям более быстрый способ возвращения на предыдущую страницу в иерархии приложения.
 //-- Как --// 
   На каждой странице приложения отобразите навигационную цепочку местоположения, указав положение текущей страницы в иерархической структуре приложения, начиная с домашней страницы. Кроме того, предоставьте пользователям возможность быстро перейти к любой странице в данной структуре, вставив в навигационную цепочку ссылку на каждую страницу (кроме ссылки на текущую страницу). Многие навигационные цепочки местоположения не показывают текущую страницу. Однако некоторые эксперты по удобству и простоте пользования приложением рекомендуют включить текущую страницу в навигационную цепочку (Instone, 2002; Круг, 2008; Nielsen, 2007).
   Типы навигационных цепочек
   Инстоун (Instone, 2002) выделяет следующие типы навигационных цепочек:
   • Навигационная цепочка местоположения (Location breadcrumbs). Это, вероятно, самый распространенный тип навигационных цепочек. Навигационная цепочка местоположения указывает положение страницы в иерархической структуре приложения вне зависимости от того, какой путь проделал пользователь – просмотр, поиск или внешняя ссылка с любой страницы этого приложения, чтобы попасть на нее.
   Одним из подвидов навигационной цепочки местоположения является навигационная цепочка предпросмотра (look-ahead breadcrumbs, LAB), разработанная Тенгом (Teng, 2003). Для каждой страницы (кроме текущей) в навигационной цепочке местоположения включен раскрывающийся список ссылок на страницы этого же уровня в иерархической структуре.
   • Навигационная цепочка пути (Path breadcrumbs). В отличие от навигационной цепочки местоположения, навигационная цепочка пути является динамической. Она показывает, какой путь в приложении проделал пользователь, чтобы попасть на текущую страницу. Поскольку пользователи могут проделать различные пути (например, просмотр, поиск и т. д.), чтобы попасть на страницу, для одной и той же страницы существует несколько навигационных цепочек.
   • Нильсен (Nielsen, 2007) называет навигационные цепочки пути цепочками истории, и не рекомендует использовать их, поскольку они дублируют функцию кнопки «назад» в браузере и могут вносить путаницу в том случае, если пользователь произвел лишние шаги на пути к текущей странице. Кроме того, они не помогают пользователям наглядно представить себе местоположение текущей страницы в структуре приложения.
   • Навигационная цепочка категории (Attribute breadcrumbs). Множество крупных сайтов, где на одну и ту же страницу можно попасть различными способами (например, сайт Amazon), используют опции, схожие с навигационными цепочками, которые описывают метаинформацию о текущей странице в иерархии сайта (рис. 5.30).
   Рис. 5.30. На сайте Amazon используются схожие с навигационными цепочками опции, указывающие метаинформацию. По сути, они указывают местоположение текущего элемента относительно всех точек приложения

   Разграничьте элементы навигационной цепочки специальным символом
   Разграничьте элементы навигационной цепочки специальным символом, чтобы предложить вариант навигационного пути. Наиболее распространенный символ для разграничения – это стрелка вправо (>). Колтер (Colter et al., 2002) обнаружил, что 47,10 % приложений, использующих навигационные цепочки, использовали разграничитель >. Эйри (Aery, 2007) утверждает, что использование знака > еще более распространено среди сайтов, занимающихся электронной коммерцией (63,5 %). К другим распространенным разграничительным символам относятся символы /, ;, |, » и →. Стрелки наиболее предпочтительны, поскольку они четко указывают направление движения, и пользователи знакомы с их значением (например, Yahoo!).
   Размещайте навигационные цепочки под заголовком страницы
   Чаще всего навигационные цепочки располагаются под заголовком страницы, рядом с ее названием. Если основная навигация и/или поле для поиска встроены в заголовок страницы, поместите навигационную цепочку под ними (рис. 5.31). Если навигация расположена вертикально, слева на странице, то навигационную цепочку можно поместить справа от нее. Размещение навигационной цепочки под заголовком удобнее для пользователей, чем если разместить ее наверху страницы (Lida and Chaparro, 2003).
   Рис. 5.31. В приложении Yahoo! Answers навигационная цепочка расположена прямо под заголовком и полем для поиска

   Включенные в навигационную цепочку ссылки должны совпадать с названиями соответствующих страниц
   Точно так же, как метки ссылок должны совпадать с названиями страниц, на которые они ведут, родительские страницы в навигационной цепочке должны совпадать с названиями соответствующих страниц. Так пользователям будет проще узнать их, если они заходили на эти страницы на пути к текущей странице. Если названия страниц длинные, сократите их, поставив многоточие в конце и отобразив полное название страницы в виде всплывающей подсказки.
   Элементы навигационной цепочки должны выглядеть как ссылки
   Поскольку родительские страницы в навигационной цепочке являются ссылками, они должны выглядеть как ссылки. Если они представляют собой кнопки, должно быть видно, что по ним можно щелкнуть. В ином случае навигационные цепочки не будут выполнять функцию важного навигационного механизма.
   Навигационная цепочка не должна бросаться в глаза
   Навигационная цепочка не является основным способом навигации. По этой причине она не должна бросаться в глаза (см. шаблон VISUAL HIERARCHY в главе 12). Обычно это достигается путем использования более мелкого, но при этом читабельного, шрифта и использования не более одной сточки текста на странице. Поскольку навигационная цепочка располагается рядом с основной и вторичной навигацией, она не должна визуально привлекать к себе больше внимания или отвлекать пользователей от основных механизмов навигации.
 //-- Связанные шаблоны проектирования --// 
   Навигационные цепочки должны выделяться меньше других важных элементов страницы, таких как название страницы, основная навигация (PRIMARY NAVIGATION) и вторичная навигация (SECONDARY NAVIGATION) (см. шаблон VISUAL HIERARCHY в главе 12).


   WIZARDS (МАСТЕРА)

 //-- Проблема --// 
   Пользователи должны в определенном порядке выполнить несколько шагов, чтобы выполнить задание (например, ознакомиться с товаром на сайте, посвященном электронной коммерции, совершить бронирование и т. д.). Поскольку большинство пользователей выполняют это задание лишь время от времени, они могут не помнить последовательность действий для успешного завершения этого задания.
 //-- Решение --// 
   Предоставьте пользователям пошаговые инструкции для выполнения задания (рис. 5.32). Подобные интерфейсы часто называются мастерами настроек.
   Рис. 5.32. Авиакомпания British Airways с помощью мастера настройки помогает пользователям совершить бронирование

 //-- Зачем --// 
   Мастера настроек очень полезны, когда пользователи должны выполнить определенную последовательность действий, а также выполнить отдельные задания из этой последовательности (например, оформление покупки в приложениях для электронной коммерции или открытие счета в финансовом учреждении). Также встречаются комплексные задания с множеством взаимосвязей между отдельными элементами, для выполнения таких заданий необходимы обширные знания этого вопроса (Dryer, 1997).
   Разбивая такие задания на более мелкие этапы и инструктируя пользователей, как выполнять тот или иной этап, мастера настроек облегчают выполнение таких заданий. Пользователям приходится фокусироваться только на нескольких элементах данных, а приложение само отслеживает, что пользователь сделал, а что ему еще предстоит сделать. Кроме того, благодаря инструкциям на каждом этапе, количество ошибок сводится к минимуму, а вероятность успешного выполнения задания увеличивается. И наконец, мастера настроек полезны, когда задание является крайне важным этапом достижения цели пользователя (Wickham et al., 2002). Например, в приложениях для электронной коммерции оформление покупки – очень важный этап при покупке товара.
 //-- Как --// 
   В первую очередь укажите всю информацию или группы информации и порядок, в котором эта информация должна предстать перед пользователем для выполнения желаемого задания. Кроме того, укажите все взаимосвязи между этими группами информации, чтобы зависимые задания появлялись в последовательности позже. Например, во время оформления покупки информация о доставке обычно заполняется перед платежной информацией, поскольку адрес доставки и другие детали доставки (например, время доставки и т. д.) нужны для подсчета стоимости доставки, которая включается в общую стоимость. Только зная общую цену, пользователь может заполнять платежную информацию. Когда указана информация, ее группы и порядок следования, разбейте эти группы на отдельные этапы.
   Когда определены этапы, последовательность и взаимосвязи, оформите страницы в стиле мастера настроек, т. е. каждый этап должен быть представлен на отдельной странице, так чтобы между этими страницами можно было перемещаться с помощью действий «следующая» или «продолжить» и «предыдущая» или «назад» (рис. 5.33).
   Рис. 5.33. В мастере настроек приложения TurboTax используются действия Back (Назад) и Continue (Продолжить), с помощью которых пользователи могут выполнять свои задачи

   Хотя обычно в мастерах настроек каждый этап находится на отдельной странице, в последнее время все чаще используется оформление в стиле «гармошки» (рис. 5.34). При таком оформлении все этапы расположены на одной странице, но просматривать этапы можно только по одному. Когда пользователи переходят к следующему шагу, текущий этап становится невидимым, а информация, относящаяся к следующему этапу, разворачивается и становится видимой. Пользователи могут вернуться к любому из предыдущих этапов, щелкнув по соответствующему заголовку, развернув этот этап и закрыв текущий. Такой стиль оформления очень удобен для мастеров настроек с небольшим количеством этапов, поскольку их заголовки могут занять много места на странице, а для контента каждого этапа останется мало места.
   Рис. 5.34. На сайте Adobe используется оформление в стиле «гармошки», чтобы все этапы мастера настроек были представлены на одной странице. Когда этап выполнен, пользователи щелкают по кнопке Продолжить (Continue) и переходят к следующему этапу

   Количество этапов мастера настроек должно быть ограниченным
   Когда вы разрабатываете мастер настроек, найдите баланс между количеством этапов и объемом информации, запрашиваемой у пользователей на каждом из этапов. Пользователи должны чувствовать, что они быстро движутся к своей цели, и что на каждой странице представлена логически сгруппированная информация. В то же самое время у них не должно создаваться ощущение, что большую часть времени они тратят на ожидание, пока обновится страница, чтобы они могли перейти к следующему этапу. Также у них не должно возникать необходимости часто возвращаться к предыдущему этапу и вносить изменения в предоставленную информацию. Обычно мастер настроек включает в себя пять-шесть этапов выполнения задания (Wickham et al., 2002).
   Четко обозначайте этапы мастера настроек
   Каждый этап мастера настроек должен быть представлен либо в виде набора горизонтально расположенных этапов или вкладок (рис. 5.35), либо в виде вертикально расположенного списка или содержания. Последний вариант предпочтительнее, если один или несколько этапов содержат подэтапы. Тесты мастеров настроек настольных приложений показали, что вертикальное расположение этапов мастера эффективнее и удобнее, чем горизонтальное расположение (Wickham et al., 2002). Однако для вертикального расположения требуется дополнительное пространство, поэтому им, возможно, придется пожертвовать, чтобы поместился контент каждого из этапов.
   Рис. 5.35. В приложении Washington Mutual этапы процесса открытия счета показаны над формой, горизонтально

   Для редко используемых мастеров настроек сделайте обзорную страницу
   Если мастер настройки используется редко (возможно, всего однажды, например, мастер для первоначальных установок или для установки приложения), создайте обзорную страницу, на которой объясняется, в чем заключается данный процесс и из каких этапов он состоит (рис. 5.36).
   Рис. 5.36. На сайте банка Citibank представлена обзорная страница, где указаны этапы мастера для открытия счета

   Обобщайте информацию на последней странице мастера
   На последней странице мастера обобщайте пользовательскую информацию и действия, а также объясняйте, что произойдет после того, как пользователь нажмет кнопку «Готово». Всегда, когда это возможно, обозначайте завершающее действие таким образом, чтобы было понятно, что задание выполнено – например, «Разместить заказ» или «Создать блог» (рис. 5.37).
   Рис. 5.37. На сайте Amazon представлена обобщающая страница, на которой пользователям предлагается пересмотреть информацию, прежде чем размещать заказ. Кроме того, пользователям предлагается настроить способ доставки и оплаты по умолчанию, чтобы сократить количество этапов оформления заказа в будущем

   Добавляйте как можно больше установок по умолчанию
   Как в любой хорошей интернет-форме, добавляйте как можно больше установок по умолчанию (см. шаблон SMART DEFAULTS в главе 2), особенно в тех ситуациях, когда пользователи уже могли ранее вносить запрашиваемую на данном этапе информацию. Например, в мастере оформления заказа поле для адреса выставления счета может быть заполнено, исходя из адреса доставки, указанного в предыдущем этапе, или можно предложить пользователям указать, что адрес выставления счета совпадает с адресом доставки.
   Четко указывайте, насколько пользователь приблизился к своей цели
   Пользователь должен получать четкое представление о том, какой процент работы он выполнил, какие этапы пройдены и сколько еще осталось. Таким образом, пользователь будет знать, чего ему ожидать, и не будет нервничать по поводу того, сколько времени у него уходит на выполнение задания (рис. 5.38).
   Рис. 5.38. На сайте Progressive показано, на каком этапе находятся пользователи, какие этапы они выполнили, а какие этапы остались

   Уберите из мастера лишние ссылки и кнопки
   Пользователи не должны отвлекаться на лишние ссылки и кнопки, когда выполняют задание с помощью мастера настроек. По этой причине уберите все лишние ссылки, навигацию, поля для поиска и кнопки, кроме тех, которые необходимы для обозначения бренда, указания политики конфиденциальности и правовых оговорок.
   Предоставьте пользователям возможность сохранить информацию и позже вернуться к тому этапу мастера, на котором они остановились
   Когда все приложение в целом представлено в виде мастера настроек или включает в себя несколько «подмастеров», позвольте пользователям сохранять свою информацию, чтобы при последующих визитах они могли продолжить с того места, на котором остановились в прошлый раз, таким образом они смогут выполнять задания в несколько подходов.
   Хороший пример такой системы – это приложение TurboTax Online, позволяющее пользователям обрабатывать свои налоги онлайн с помощью специального мастера. В зависимости от сложности и доступности информации, необходимой для оформления возврата налогов, пользователям может понадобиться приличное время на обработку своих налогов. Чтобы такими приложениями было удобно пользоваться, необходимо сохранять информацию, которую вводят пользователи, и предоставлять им возможность вернуться к тому этапу, на котором они остановились в прошлый раз (рис. 5.39).
   Рис. 5.39. На сайте TurboTax Online пользователи могут сохранить свою информацию и вернуться к тому этапу мастера, на котором они остановились

 //-- Связанные шаблоны проектирования --// 
   Поскольку мастера настройки (WIZARDS) – это всего лишь способ представления длинных и/или многоэтапных форм, с этим шаблоном связаны такие шаблоны, как SMART DEFAULTS, REQUIRED FIELD INDICATORS, FORGIVING FORMAT, INPUT HINTS/ PROMPTS, ERROR MESSAGES и другие, имеющие отношение к формам (см. главу 2).



   Глава 6
   Поиск и фильтрация


   Введение

   Для веб-приложений надлежащего размера доступ к информации путем навигации по иерархии приложения может стать обременительным и компрометировать удобство использования. По этой причине важно сделать информацию внутри приложения удобной для поиска, чтобы пользователи могли быстро и эффективно получить нужные данные.
   Поиск может вестись как в неограниченном виде, когда пользователи могут ввести свой запрос как набор ключевых слов или ключевых фраз в поле для поиска (SIMPLE SEARCH), так и в управляемом и структурированном виде, где пользователи определяют требуемые значения свойств данных, которые они ищут (PARAMETRIC SEARCH). Обычно большинству пользователей достаточно простого поиска, но более опытным пользователям, предпочитающим точно указывать параметры запроса, эффективнее будет использовать расширенный поиск (ADVANCED SEARCH), позволяющий формулировать сложные запросы.
   Вне зависимости от предложенного поискового механизма пользователи извлекут выгоду от получения руководства по совершенствованию поиска и формулированию лучших запросов (SEARCH TIPS).
   После того как пользователи подтвердили критерии поиска, веб-приложение отображает подходящие результаты в порядке соответствия (SEARCH RESULTS). Хотя упорядочивание по соответствию является наиболее подходящим методом отображения результатов поиска, пользователи могут предпочесть изменить их порядок, используя другой критерий (например цена при покупке товаров), чтобы получить желаемые результаты (SORTING).
   Из-за вопроса производительности и для того, чтобы не перегружать пользователей слишком большим количеством данных, результаты поиска обычно отображаются в подмножествах размером от 10 до 20 на странице, между которыми пользователи могут перемещаться, используя такие инструменты управления, как вперед, назад, в начало, в конец и т. д. (PAGINATION). Альтернативный развивающийся метод – непрерывная прокрутка (CONTINUOUS SCROLLING), который также отображает за раз подмножество результатов, но вместо инструментов управления постраничным выводом информации он представляет дополнительные результаты поиска, когда пользователи прокручивают просматриваемую страницу ниже отображаемых результатов. Оба подхода обращаются к общей проблеме в поиске – слишком большому количеству результатов поиска.
   Пользователям обычно предлагаются такие механизмы, как фильтрация (FILTERING) или многоаспектный поиск (FACETED SEARCH) для снижения числа результатов поиска до адекватного значения.
   Оба механизма исключают данные в результатах поиска, не подходящие под выбранные фильтры или ограничения. Различие в том, что пользователям, использующим фильтрацию (FILTERING), предлагаются варианты сокращения, при использовании которых все еще отображаются независимые результаты поиска. Многоаспектный поиск (FACETED SEARCH), в свою очередь, является динамичным, и варианты сокращения, предлагаемые пользователям, извлекаются из самих результатов поиска и продолжают обновляться, когда пользователи сужают далее список результатов.
   После того как пользователи нашли, отфильтровали и отсортировали результаты, как им удобно, рассмотрите вариант, при котором они смогут сохранить свои запросы (SAVED SEARCHES), и установите напоминание о том, что они смогут повторить сохраненные запросы, т. е. смогут быть информированными о новых совпадениях.


   SIMPLE SEARCH (ПРОСТОЙ ПОИСК)

 //-- Проблема --// 
   Глубокая навигация по иерархической структуре приложения может стать затруднительным и неэффективным способом получения необходимых данных в веб-приложениях. В дополнение к этому пользователям может быть неясным, где искать необходимые данные в заданной иерархии, используя предоставленные средства навигации.
 //-- Решение --// 
   Позвольте пользователям искать данные, используя ключевые слова или ключевые фразы, и разместите инструмент поиска в логичном месте внутри приложения (рис. 6.1).
   Рис. 6.1. Простой поисковый блок на Dig позволяет пользователям искать информацию, используя ключевые слова

 //-- Зачем --// 
   Когда пользователи точно знают, что именно они ищут, поиск оказывается более быстрым и эффективным способом достичь результата, чем навигация по иерархии приложения; обычно это именуется как известно-предметный поиск. Даже когда поиск не отправляет пользователей напрямую к искомым данным, он позволяет пропустить несколько уровней навигации и попасть в точку, от которой можно пройти оставшуюся иерархию и быстро попасть к нужным данным. Также пользователи не знакомы с такими концепциями поиска, как логические операторы [10 - Логические запросы выражаются в словах и фразах и комбинируются с операторами, такими как AND, OR, NOT, XOR и т. д.] (Нилсен, 1997), им гораздо удобнее использовать простые его разновидности – поиск по ключевым словам и расширенный поиск (Spink et al., 2001; см. шаблон ADVANCED SEARCH далее в этой главе).
   Польза простого поиска также в том, что пользователи могут быстро определить, присутствуют ли данные в приложении. Например, пользователи могут захотеть узнать, предлагает ли интернет-магазин товар Х. Поиск товара Х на предмет того, предлагается ли он приложением, гораздо эффективнее навигации через информационную иерархию.
 //-- Как --// 
   Разрешите пользователям искать, вводя одно или более ключевых слов поисковое текстовое поле. В дополнение к этому позвольте пользователям искать ключевые фразы, ограничивая ключевые слова в цитатах; когда пользователи ищут ключевые фразы, им отображаются результаты, содержащие точную фразу. Также избегайте принуждать пользователей нажимать на кнопку «Поиск» или переключаться к данной кнопке; вместо этого разрешите им подтверждать поиск, используя клавиши Enter или Return.
   Разместите поиск в соответствующем месте
   Разместите функцию поиска в соответствующих местах по всему приложению, чтобы его было легко найти. Обычно он расположен рядом с «шапкой» (рис. 6.2) в следующих местах:
   • справа сверху страницы;
   • сверху страницы в зоне «шапки» или прямо под ней (свойственно таким порталам, как Yahoo! MSN и iGoogle);
   • слева сверху, над опциями просмотра (например, над списком товарных категорий в интернет-магазинах).
   (а)

   (б)

   (в)

   Рис. 6.2. Типичное расположение поисковых зон: в правом – верхнем углу (а), в центре, рядом с «шапкой» (б), в левом – верхнем углу, над опциями просмотра (в)

   Варианты «справа сверху» и «слева сверху» являются предпочтительными для размещения поиска, так как они совпадают с ожиданиями пользователей по размещению поиска на странице (Shaikh and Lenz, 2006).
   Когда поиск размещен на всех страницах, пользователям для его проведения не нужно возвращаться на главную страницу или страницу, посвященную поиску. Это позволяет пользователям начать новые поиски и получать доступ к определенному контенту из любого места в приложении.
   Задайте охват поиска
   Для приложений с сотнями и тысячами предметов и предметных категорий позвольте пользователям ограничить поиск до категорий, давая им возможность уточнить охват их поиска. В зависимости от количества доступных опций охвата, используйте кнопки радио, раскрывающийся список, изображения или панели (рис. 6.3). Однако важно, чтобы страница не обновлялась в то время, когда пользователи используют опцию охвата.
   (а)

   (б)

   (в)

   Рис. 6.3. Amazon использует выпадающее меню для того, чтобы позволить пользователям ограничить охват поиска до категории (а). Ask и Yahoo! позволяют пользователям задать охват поиска путем отображения категорий как иконок (б) или панелеобразных ссылок (в)

   Не задавайте охват поиска по умолчанию и не принуждайте пользователей выбирать категорию охвата. Пользователи могут не знать категорию, к которой принадлежит предмет, а он может быть основной причиной их поиска. Таким образом, задайте по умолчанию категорию «Все категории» в охвате поиска. По мере того как пользователи перемещаются по конкретным категориям в приложении (например, книги, музыка и т. д.), изменяйте охват поиска по умолчанию на соответствующие категории, при этом позволяя пользователям менять охват.
   Используйте привычные обозначения для кнопки поиска
   Типичными вариантами для кнопок действия, запускающих поиск, являются «Поиск», «Найти», «Перейти» и различные формы изображений в виде стрелки. При использовании вариантов «Перейти» или изображения стрелки важно, чтобы в поле ввода текста для поиска была метка «Поиск». При использовании названий «Поиск» или «Найти» для обозначения кнопок, установка меток необязательна. (рис. 6.4).
   Рис. 6.4. CNET использует кнопку «Go» для инициализации поиска и метку «Поиск» перед полем ввода текста для поиска

   Так как пользователи могут не знать, что именно они ищут, добавьте подсказку или пример того, что они могут ввести в поле для поиска. Из-за того, что пространство рядом с зоной поиска зачастую ограничено, типичным является внедрение поисковых подсказок в поле для поиска (рис. 6.5). Однако удалите подсказку, как только пользователи активизируют поисковое поле, чтобы им не приходилось удалять текст подсказки перед вводом запроса.
   Рис. 6.5. Home Depot размещает подсказку в поисковом поле, чтобы указать пользователям, что они могут в него вводить

   Предлагайте эффективные ключевые слова
   Подсказывайте пользователям подходящие ключевые слова и термины поиска, когда они начинают печатать текст в поисковом блоке для сокращения ошибок при печати и повышения числа соответствий в результатах поиска (рис. 6.6; см. шаблон AUTOSUGGEST/ AUTOCOMPLETION в главе 8).
   Рис. 6.6. Answers.com предлагает сопоставление элементов поиска, когда пользователи вводят информацию в поисковый блок. Пользователи могут щелкнуть по предмету из списка предложенных и перейти на соответствующую страницу

   Поддерживайте сложный поиск в поле простого поиска
   Чтобы позволить опытным пользователям вводить более точные запросы в поиске, часто имеет смысл поддерживать специфичный для домена язык запросов, который поддерживает функционал расширенного поиска (ADVANCED SEARCH) (рис. 6.7).
   Рис. 6.7. Nabble, веб-приложение для форумов, предлагает пользователям специфический язык поиска, позволяющий им вводить точные запросы. Например, для поиска исключительно в форуме «Apache» пользователи могут включить «forum: Apache» в свой запрос

 //-- Связанные шаблоны проектирования --// 
   Если поиск может быть структурированным или направленным, разрешите использовать поиск по параметрам (PARAMETRIC SEARCH), так как он позволяет пользователям более точно задать критерии поиска. Для опытных пользователей предложите отдельную опцию расширенного поиска, включите советы по поиску (SEARCH TIPS), объясняющие, как можно повысить эффективность поиска.


   PARAMETRIC SEARCH (ПОИСК ПО ПАРАМЕТРАМ)

 //-- Проблема --// 
   Пользователи могут не знать, как лучше сформулировать свои запросы в виде ключевых слов или ключевых фраз, когда ищут предметы с несколькими свойствами (например, цены авиаперелетов из Денвера в Сан-Франциско, отправляющихся в среду и возвращающихся в пятницу). Это может привести их к такому уточнению в поиске, которое будет либо слишком общим, что заставит их просматривать большое количество несвязанных результатов, или слишком специфическим, что отсеет много полезных результатов.
 //-- Решение --// 
   Разрешите поиск, основанный на характеристиках (т. е. параметрах). Например, если пользователи ищут авиарейсы, попросите их уточнить дату, город отправления и прибытия и т. д. Также, где это возможно, ограничьте поисковые запросы пользователей, предлагая выбрать из готового набора вариантов, представленных в раскрывающихся списках, групп переключателей и флажков (рис. 6.8).
   Рис. 6.8. Match.com, как и многие другие сайты знакомств, позволяет пользователям формулировать запрос поиска, запрашивая у них пол, «искомый» пол, возраст и индекс. Также сервис предлагает расширенные возможности, позволяющие пользователям указывать интересы, уровень дохода и т. д.

 //-- Зачем --// 
   Позволив пользователям структурировано уточнять поиск, вы даете им возможность легче формулировать запросы и предохраняете их от предположений, какие параметры доступны для поиска. В некоторых случаях поиск по набору параметров более приемлем, нежели свободный поиск по ключевым словам – например, бронирование авиарейса, гостиницы или автомобиля; поиск автомобильного маршрута; поиск недвижимости для покупки или продажи; поиск людей со специфическими качествами или интересами и т. д.
 //-- Как --// 
   Попросите пользователей ввести критерии поиска в форму с четко определенными параметрами поиска. Разделите форму на несколько секций, где это допустимо, чтобы пользователям отображались только необходимые поля поиска (рис. 6.9).
   Рис. 6.9. Yahoo! Travel отображает для пользователей параметры поиска, связанные только с выбранной панелью

   Скройте параметры поиска, используемые редко
   При использовании поиска по параметрам важно сохранить поиск простым и не перегружать пользователей теми параметрами поиска, которые они, скорее всего, не будут использовать. Скройте редко используемые параметры элементами «Расширенные параметры» и «Больше вариантов» и сделайте их доступными по требованию пользователей (рис. 6.10).
   (а)

   (б)

   Рис. 6.10. Сервис «Build your Trip» на сайте Expedia скрывает нечасто используемые варианты (а). Он отображает их только когда пользователи выбирают ссылку Airline, first or business class… (Авиаперелеты, первый или бизнес-класс) в группе Additional options (дополнительные варианты) (б)

 //-- Связанные шаблоны проектирования --// 
   Хотя поиск по параметрам может помочь определить точные критерии для поиска, он не уменьшает возможности получения большого количества результатов поиска. Позвольте пользователям сократить количество выводимых результатов путем использования фильтрации (FILTERING) или многоаспектного поиска (FACETED SEARCH).


   ADVANCED SEARCH (РАСШИРЕННЫЙ ПОИСК)

 //-- Проблема --// 
   Важной проблемой, с которой пользователи сталкиваются во время поиска, является большое количество результатов поиска, значительное количество которых не соответствуют запросам и не подходят им. Опции сокращения и фильтрации полезны, но они работают только после того, как пользователям отображаются результаты поиска (см. шаблон FILTERING далее в этой главе). Также из-за того, что фильтрация позволяет многократно уточнять результаты поиска, пользователям потребуется несколько стадий уточнения, прежде чем они получат необходимый список результатов поиска.
 //-- Решение --// 
   Предложите пользователям возможности расширенного поиска, чтобы они могли точно формулировать свои поисковые запросы (рис. 6.11).
   Рис. 6.11. Страница Advanced Search Options (Варианты расширенного поиска) сайта IRS предлагает пользователям различные варианты уточнения их поисковых запросов

 //-- Зачем --// 
   Вне зависимости от того, насколько качественно сделан поисковый движок, пользователи скорее всего столкнутся с проблемой несоответствий в результатах поиска.
   Хотя фильтрация (FILTERING) помогает сократить количество несоответствий в результатах, происходит это только после того, как первоначальный запрос был введен и результаты отображены. Расширенный поиск помогает пользователям точнее указывать поисковые запросы, сокращая количество несоответствий в результатах впредь.
 //-- Как --// 
   Предложите пользователям ссылку на расширенный поиск рядом с блоком поиска (см. шаблон SIMPLE SEARCH ранее в этой главе) или на странице результатов поиска (рис. 6.12). Для большинства приложений со сложным или различающимся контентом имеет смысл установить ссылку на расширенный поиск рядом с блоком простого поиска. Тем не менее, если предпочтительно, чтобы пользователи попробовали простой поиск перед использованием расширенного, то разумно будет разместить ссылку на расширенный поиск на страницу результатов поиска. Это позволяет пользователям посмотреть результаты поиска перед формулированием сложного поискового запроса.
   (а)

   (б)

   Рис. 6.12. IRS предлагает ссылку Advanced Search (Расширенный поиск) рядом с простым поисковым блоком (а), в то время как MSN Live Search предлагает ссылку Advanced (Расширенный) на странице результатов поиска (б)

   На странице расширенного поиска дайте пользователям возможность точно сформулировать свой запрос, позволяя им комбинировать ключевые слова с функциями «включить» (например AND, OR) и «исключить» (например NOT), и уточнять значения специальных свойств, таких как временные рамки и тип контента. Также дайте пользователям возможность контролировать вид представления информации, а именно, какая информация будет представлена на странице результатов поиска, количество результатов на странице, сортировка результатов и т. д. (рис. 6.13).
   Рис. 6.13. «Расширенный поиск» в iStockPhoto предлагает пользователям множество вариантов точного определения критериев поиска, по типу медианы, цвету, типу информации, отображаемой/скрываемой ее в описании файла и т. д. В дополнение к этому iStockPhoto предлагает интересный подход к иерархическому сокращению свойств категорий. Данное изображение показывает совершение выбора в категории «люди» и подкатегории «национальность»

   Упростите терминологию
   Хотя расширенный поиск нацелен на опытных пользователей, разработчики могут принимать во внимание доменную опытность пользователей, но не обязательно опытность в поиске. Расширенный поиск должен быть доступен для понимания. Например, вместо того чтобы просить пользователей уточнить критерии поиска с помощью логических операторов, таких как AND, OR, XOR и др., предложите пользователям такие варианты, как «все эти слова», «любое из этих слов», «не включать эти слова» и т. д. (рис. 6.14).
   (а)

   (б)

   Рис. 6.14. Страницы Advanced Search (Расширенный Поиск) у Flickr (a) и Safari Books (б) используют простую терминологию и избегают логических операторов

   Позвольте пользователям вернуться на начальную страницу
   Большое количество параметров, предлагаемых расширенным поиском, может показаться чрезмерным для некоторых пользователей. Позвольте им вернуться к простому поиску. Если расширенный поиск накладывается на текущую страницу, как у iStockPhoto на рис. 6.13, щелчок по ссылке «Вернуться к простому поиску» («Back to Basic Search») снимает наложение и возвращает пользователей на начальную страницу поиска. С другой стороны, если расширенный поиск расположен на отдельной странице, дайте пользователям возможность вернуться на связанную страницу простого поиска (рис. 6.15). Во избежание путаницы, не отображайте простой и расширенный поиск на одной странице.
   (а)

   (б)

   Рис. 6.15. Flickr использует ссылку возврата к простому поиску под кнопкой Search (Поиск) на странице расширенного поиска (а), которая отсылает пользователей на страницу простого поиска (б)

 //-- Связанные шаблоны проектирования --// 
   Подобно поиску по параметрам (PARAMETRIC SEARCH) расширенный поиск (ADVANCED SEARCH) не гарантирует меньшего количества результатов поиска и также выиграет от фильтрации (FILTERING) и многоаспектного поиска (FACETED SEARCH), помогая пользователям сократить количество результатов поиска (SEARCH RESULTS).


   SEARCH TIPS (СОВЕТЫ ПО ПОИСКУ)

 //-- Проблема --// 
   Качество результатов часто зависит от того, насколько четко пользователи уточнили цель поиска. В поисковых движках существует множество способов задать четкую цель поиска. Однако эта информация обычно недоступна пользователям, что делает уточнение критериев поиска проблематичным.
 //-- Решение --// 
   Предложите пользователям легко доступные советы по поиску и разъясните различные методы уточнения критериев поиска и формулирование точных поисковых запросов. (рис. 6.16).
   Рис. 6.16. Инструмент Search Tips (Советы по поиску) на странице IRS предлагает руководство по работе поиска и по улучшению поисковых запросов пользователей. Подсказки даются не только для простого и расширенного поиска, но и для страницы результатов поиска. Также предлагаются советы по поиску в файле формата PDF (формат файлов программы Adobe Acrobat)

 //-- Зачем --// 
   Поисковые движки, используемые в веб-приложениях, различаются по тому, как они комбинируют ключевые слова и строят точные поисковые запросы. Нельзя ожидать, что пользователи знают все нюансы каждого поискового движка, с которым они сталкиваются. Подсказки по поиску могут простым языком объяснить пользователям, как эффективно использовать особенности поиска.
 //-- Как --// 
   Сделайте советы по поиску доступными и заметными, разместив соответствующую ссылку рядом с областью поиска (рис. 6.17).
   Рис. 6.17. Ресурс iStockPhoto размещает ссылку Need help? (Нужна помощь?) в поисковой панели под ссылкой Advanced Search (Расширенный поиск)

   Советы по поиску могут быть представлены пользователям следующим образом:
   • Они могут быть отображены на отдельной странице, если они слишком детализированы, чтобы разместить их рядом с функцией поиска. В большинстве случаев разумно предположить, что пользователи могут использовать информацию, представленную в подсказках по поиску, и формулировать свои поисковые запросы в неизменном поисковом блоке в верхней части страницы.
   • Они могут отображаться как всплывающие окна в случае, если маловероятно, что пользователи получат доступ к подсказкам на странице результатов поиска или расширенного поиска и уйдут с текущей страницы (и поискового запроса).
   • Они могут быть отображены на той же странице, используя подход «раскрытия на месте». Например, Nabble раскрывает секцию подсказок по поиску и отображает ее между поисковой панелью и результатами поиска (рис. 6.18).
   (а)

   (б)

   Рис. 6.18. Nabble использует ссылку Show Tips (Показать подсказки) рядом с кнопкой Go (Поиск), для того, чтобы подсказки по поиску были легкодоступны (а). Нажатие кнопки Show Tips (Показать подсказки) приводит к раскрытию подсказок под областью поиска и отображению примеров, как точные поисковые запросы связаны с результатами поиска (б)

   Включите примеры соответствующих поисковых запросов
   Ввиду того, что пользователи ищут советов по улучшению поисковых запросов, включите один или несколько примеров с кратким описанием (рис. 6.18). В дополнение к этому, как и в любой системе помощи, избегайте технического жаргона и используйте простой язык.
 //-- Связанные шаблоны проектирования --// 
   Шаблон SEARCH TIPS должен считаться частью справки. По этой причине важно, чтобы советы по поиску содержали ответы на часто задаваемые вопросы (FREQUENTLY ASKED QUESTIONS) пользователей (см. главу 14).


   SEARCH RESULTS (РЕЗУЛЬТАТЫ ПОИСКА)

 //-- Проблема --// 
   Когда пользователи уточнили и подтвердили свои критерии поиска, результаты поиска должны быть отображены в доступном виде, чтобы была возможность быстрого перехода к наиболее полезным результатам и отпадала необходимость «прыгать по результатам», т. е. возвращаться на страницу результатов поиска и искать более подходящий.
 //-- Решение --// 
   Отображайте пользователям результаты поиска, сортированные по степени соответствия, с наиболее релевантными предметами наверху страницы.
   Также представляйте результаты поиска в форме, подходящей для быстрого просмотра, чтобы облегчить определение путей дальнейшей навигации и исследования (рис. 6.19).
   Рис. 6.19. Google упорядочивает результаты поиска по степени соответствия, используя запатентованный алгоритм PageRank. Он использует более крупный полужирный шрифт для результатов поиска, подсвечивает термины поиска и вновь заполняет поисковое поле пользовательским поисковым запросом с возможностью уточнять его. (Обратите внимание: для каждого связанного результата поиска Google использует тег

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

 //-- Зачем --// 
   Пользователи осуществляют поиск, потому что они ищут либо конкретный предмет поиска, либо набор предметов, связанных с терминами их поиска. Так что предметы, наиболее совпадающие с терминами их поиска (т. е. с наибольшим соответствием), должны отображаться наверху страницы результатов поиска. Любой другой способ отображения результатов может запутать пользователей, или им придется обращаться к результатам по степени соответствия, чтобы попасть к наиболее подходящим совпадениям. В дополнение к этому большинство пользователей не смотрят дальше второй страницы в результатах поиска (Nielsen, 2001; Spool, 2008b). Исходя из этого, если пользователи специально не указали, что данные необходимо сортировать иначе (к примеру, при использовании расширенного поиска (ADVANCED SEARCH)), отображайте результаты, отсортированные по степени соответствия.
 //-- Как --// 
   В дополнение к сортировке результатов поиска по степени соответствия, сохраняйте ключевые слова или ключевые фразы, по которым пользователи искали, в поле поиска, чтобы дать возможность изменить поисковый запрос без необходимости вводить заново начальные ключевые слова (рис. 6.20).
   Рис. 6.20. Страница Search Results (Результаты поиска) на сайте Dell показывает, что именно пользователи искали, и отображает запрос пользователя в поле поиска

   Сделайте ключевые слова поиска нечувствительными к регистру
   Пользователи обычно не обращают внимания на регистр ключевых слов и вводят критерии поиска в верхнем, нижнем или смешанном регистре. Кроме случаев, указываемых самими пользователями (например, при использовании расширенного поиска (ADVANCED SEARCH)), игнорируйте регистр поисковых терминов при отображении результатов поиска. Например, выдавайте одинаковые результаты поиска для запросов «ВЕБ-ДИЗАЙН», «Веб-Дизайн» и «веб-дизайн».
   Показывайте общее количество результатов поиска
   На странице результатов поиска четко указывайте общее количество результатов поиска и число результатов, отображаемых на данной странице (рис. 6.21, см. шаблоны PAGINATION и CONTINUOUS SCROLLING далее в этой главе). Отображение общего количества результатов поиска помогает пользователям решить, хотят ли они изменить свой запрос, сделать его более узким (или широким) или просто просмотреть результаты.
   Рис. 6.21. NexTag отображает как количество результатов на текущей странице, так и общее количество результатов. Также в раскрывающемся меню показывается используемый способ сортировки результатов со стрелкой, дающей возможность пользователям сменить метод сортировки

   Отображайте описательную информацию с каждым результатом поиска
   Исходя исключительно из заголовка, пользователи не всегда могут решить, связан ли результат поиска с их задачей. Пользователям может потребоваться дополнительная описательная информация о результатах поиска, чтобы принять решение, стоит ли просматривать их. В примере с книгами пользователи могут захотеть узнать автора, дату публикации, содержание и краткую аннотацию (рис. 6.22). В случае с товарами они, возможно, захотят узнать цену, рейтинг у покупателей (если он доступен), производителя, продавца, изображение товара и т. д. Так что примите во внимание самые частые запросы пользователей для определения информации, сопровождающей каждый результат поиска, чтобы улучшить «привкус информации» (Pirolli and Card, 1999).
   Рис. 6.22. Safari (из O’Reilly) демонстрирует несколько описательных характеристик книги на странице результатов, чтобы пользователям было проще определить, какая книга им больше подходит

   Отображайте изображения предметов поиска для упрощения просмотра
   Включите изображения в результаты поиска (рис. 6.23, а), если они помогут пользователям опознать и различить предметы поиска лучше, чем текстовые описания (например, в интернет-магазинах и медиаприложениях). Однако предложите альтернативный, исключительно текстовый вариант отображения результатов поиска (рис. 6.23, б), так как пользователи могут не быть заинтересованными в изображениях ввиду низкой скорости соединения с Интернетом (например, при доступе к приложению из отдаленных мест или с мобильных устройств), или потому что они просто предпочитают текстовый вывод результатов.
   (а)

   (б)

   (в)

   Рис. 6.23. Blockbuster показывает изображения к фильмам, чтобы упростить просмотр результатов поиска (а). Также предлагается формат «только текст» (б) и формат «только изображение без текстового описания» (в)

   Предложите альтернативные формы представления результатов поиска
   В дополнение к отображению результатов поиска в текстовой форме и в форме с использованием изображений могут быть дополнительные подходящие варианты отображения результатов. Например, когда пользователи ищут информацию, базирующуюся на конкретной местности (к примеру, рестораны в городе), хорошей идеей будет показать результаты в виде карты (рис. 6.24, см. шаблон MAPS в главе 7).
   (а)

   (б)

   Рис. 6.24. Zagat предлагает пользователям переключаться между видом в форме списка (a) и в форме карты (б) при отображении информации о ресторанах

   Сгруппируйте результаты поиска
   Если результаты поиска могут быть организованы в независимые категории, это поможет сгруппировать их по этим категориям. Каждая категория может служить сужающей опцией и сократить количество результатов поиска до управляемого набора (рис. 6.25).
   Рис. 6.25. При поиске по ключевому слову Dell группирует результаты поиска во All Results (Все результаты), Browse Products (Просмотр товаров), Support&Help (Поддержка и помощь) и т. д. Это позволяет фильтровать результаты по категориям, если требуется. Dell также показывает количество найденных результатов в каждой категории

   Категории результатов поиска могут быть основаны как на механизме группирования, так и на кластерах. Группирование основано на заранее определенном наборе категорий, в то время как механизм кластеров является динамичным в том, что категории выводятся из самих результатов поиска и могут меняться с каждым поиском, осуществляемым пользователями. Ввиду динамики в кластеровом подходе пользователям никогда не предлагается категория с нулевым количеством результатов (рис. 6.26).
   (а)

   (б)

   (в)

   Рис. 6.26. Amazon использует механизм кластеров для группировки результатов поиска. Категории, показанные при поиске по словам «Гарри Поттер» (а), несколько отличаются от категорий по запросу «iPod» (б). Plaxo, с другой стороны, использует механизм группирования и может иметь нулевое значение предметов в категории (в)

   Однако кластеры могут сбить с толку пользователей в наборе данных поиска с небольшим количеством возможностей группирования, и может быть непонятно, почему категории не появляются в результатах последовательно.
   Разрешите пользователям менять количество результатов поиска на странице. Важно отображать результаты так быстро, как это возможно, менять запрос, если результаты поиска не удовлетворительны. Одним из способов сокращения задержки при отображении результатов поиска является сокращение количества предметов на каждой странице результатов поиска. Дополнительным преимуществом отображения меньшего количества результатов является то, что пользователям не придется долго пролистывать страницу, чтобы увидеть все предметы поиска. Однако некоторые пользователи предпочитают видеть больше предметов поиска на экране, так как у них большие мониторы, высокоскоростное интернет-соединение или им просто неудобен постраничный вывод информации. Для удовлетворения таких предпочтений пользователей дайте им возможность задать количество результатов на странице (рис. 6.27, см. шаблон CONTINUOUS SCROLLING далее в этой главе).
   Рис. 6.27. Home Depot показывает пользователям по умолчанию 12 результатов на страницу. Для пользователей, которые хотят видеть больше результатов, предусмотрена возможность отображения 24 и 48 результатов на странице

   Предлагайте альтернативу, когда поиск не приносит результатов
   Существуют две причины, по которым пользовательский поиск не приносит результатов:
   1. Контент, в котором пользователь заинтересован, недоступен.
   2. Пользователем некорректно сформулированы критерии поиска (например, ввиду грамматических ошибок или слишком специфических критериев поиска).
   Когда поиск не приносит результатов по теме, как альтернативу в качестве дальнейших шагов предложите возможные варианты. Предложения могут быть в форме альтернативного правописания, особенно если пользователи, скорее всего, допустили ошибку в поисковых терминах. Возможным является сделать разумную догадку о том, что пользователи, вероятно, искали, и показать результаты поиска, соответствующие альтернативным ключевым словам, при отображении того, что совпадения не были найдены по ключевым словам, введенным пользователями (рис. 6.28). Другими вариантами являются отображение инструментов расширенного поиска (см. шаблон ADVANCED SEARCH ранее в этой главе), предложение просмотра с использованием высокоуровневых категорий внутри приложения и выдвижение предложений по улучшению результатов поиска.
   Рис. 6.28. NexTag отмечает, что по запросу «kindella» не было найдено результатов и показывает результаты по наиболее приближенному термину, «kinsella». В дополнение к этому показывается несколько связанных предметов, таких как «kinsella» и «sophie kinsella»

 //-- Связанные шаблоны проектирования --// 
   На странице результатов поиска (SEARCH RESULTS) пользователи могут захотеть реорганизовать результаты, используя критерий, отличный от степени соответствия (SORTING). В дополнение к этому, когда им представлено большое количество результатов, они могут захотеть сократить его до управляемого набора (FILTERING, FACETED SEARCH). Результаты поиска обычно сопровождаются постраничным выводом информации (PAGINATION) и непрерывной прокруткой (CONTINUOUS SCROLLING), так как в большинстве приложений они не могут быть размещены на одной странице.


   SORTING (СОРТИРОВКА)

 //-- Проблема --// 
   Порядок, в котором результаты поиска представлены пользователям, может не совпадать с их предпочтениями или ожиданиями. Например, результаты поиска обычно упорядочены по степени соответствия, основываясь на поисковых критериях пользователей. Однако пользователи могут захотеть упорядочить их по другим критериям, таким как популярность, дата, цена и т. д.
 //-- Решение --// 
   Дайте пользователям возможность сортировать результаты поиска не только по критерию релевантности. Например, сайты по сравнению товаров в интернет-магазинах могут захотеть предложить пользователям сортировку по популярности, рейтингу товара и цене (рис. 6.29).
   Рис. 6.29. CNET предлагает пользователям сортировать результаты по релевантности, наибольшей популярности, рейтингу, дате просмотра и цене

 //-- Зачем --// 
   При поиске по ключевым словам обычным правилом сортировки результатов является сортировка по степени соответствия (релевантности). При просмотре результатов пользователи могут подумать, что изменение порядка, в котором представлены предметы поиска, поможет попасть к желаемому предмету поиска быстрее, например, к самому дешевому предмету или предмету с наивысшим пользовательским рейтингом. Давая возможность пользователям менять порядок результатов поиска, вы упрощаете им просмотр результатов поиска в том виде, в котором они предпочитают.
 //-- Как --// 
   Покажите пользователям различные варианты сортировки рядом с результатами поиска в форме ссылок, кнопок радио или раскрывающихся списков (рис. 6.30). Ссылки и переключатели обычно являются наиболее предпочтительными вариантами, так как они упрощают просмотр всех возможных вариантов сортировки. С другой стороны, раскрывающиеся списки полезны, когда присутствует несколько вариантов сортировки и отображение их всех одновременно потребовало бы значительного количества места на экране. Однако убедитесь, что сортировка с использованием раскрывающегося списка доступна, разместив «начать» или другую подобную кнопку «действия» и воздержитесь от сортировки списка, когда опция выбрана (см. шаблон UNOBTRUSIVE JAVASCRIPT в главе 11).
   (а)

   (б)

   (в)

   Рис. 6.30. Тремя типичными подходами к отображению вариантов сортировки являются ссылки (выглядящие как панели), как на сайте Buy.com (а), кнопки радио, как на сайте Forrester Research (б), и раскрывающееся меню на сайте Amazon (в)

   Для веб-приложений, предлагающих расширенный поиск (ADVANCED SEARCH), убедитесь, что опции сортировки совпадают с информацией, представленной на странице результатов поиска (SEARCH RESULTS). Это даст пользователям возможность быстро разобраться в результатах, так как это позволит им быстро сопоставить их с контентом, представленным в результатах поиска.
 //-- Связанные шаблоны проектирования --// 
   Если результаты поиска представлены в табличных списках, разрешите пользователям сортировать заголовки колонок (см. шаблон TABULAR LIST в главе 7).


   PAGINATION (РАЗБИВКА НА СТРАНИЦЫ)

 //-- Проблема --// 
   Количество результатов поиска, представленных пользователям, слишком велико для отображения на странице. Даже при возможности отображения всех результатов на одной странице время загрузки может разниться от нескольких секунд до нескольких минут, что ухудшает впечатление у пользователей.
 //-- Решение --// 
   Разделите результаты поиска так, чтобы на каждой странице показывалось определенное количество предметов поиска (обычно 10–20 на страницу), и дайте пользователям возможность переходить по страницам, используя инструменты управления «назад», «вперед», «в начало», «в конец». Инструменты постраничного вывода информации могут использовать ссылки на пронумерованные страницы, чтобы позволить пользователям перейти к конкретной странице в результатах поиска (рис. 6.31).
   Рис. 6.31. При представлении большого количества результатов Amazon разделяет их на несколько страниц (с 12 результатами на странице) и дает пользователям возможность переходить по ним, используя инструменты управления постраничного вывода информации

 //-- Зачем --// 
   Разделение большого количества результатов на небольшие управляемые группы делает навигацию более эффективной, так как пользователи могут остановиться на одной группе (например, на одной странице) результатов единовременно. В дополнение к этому разбитие большого списка на управляемые части ускоряет процесс скачивания и, соответственно, пользователи смогут быстрее просматривать результаты.
 //-- Как --// 
   Разделите результаты поиска на последовательные страницы и дайте пользователям возможность переходить по ним, используя для этого, как минимум, ссылки «вперед» и «назад».
   Минимизируйте количество страниц и скроллинг
   Определение количества предметов поиска для отображения на странице результатов – это грань между количеством страниц и скроллингом. Обычно для всех текстовых результатов с минимальным описанием для каждого предмета на странице результатов поиска отображается около 20 предметов поиска одновременно, в то время как для результатов, включающих изображения, обычно показывается не более 10–15 предметов поиска. Однако, предполагая, что пользователи ограничивают просмотр результатов поиска несколькими страницами и нормально относятся к прокрутке, в данном случае можно показывать больше результатов на странице. (Spool, 2008b). Отображение 50 результатов поиска на странице является оптимальным по сообщению Bernard et al. (2002), обнаружившему самое быстрое время поиска и предпочтений для 50 результатов в сравнении с результатами поиска от 10 до 100 [11 - Интересно, что исследование показало медленное время поиска и низкие предпочтения для 100 результатов поиска одновременно. Это может быть примером, показывающим, почему не стоит отображать необоснованно большое количество результатов поиска.].
   Сделайте инструменты постраничного вывода информации удобными для перехода
   Когда пронумерованные ссылки включены в инструменты управления постраничным выводом информации для того, чтобы дать пользователям возможность переходить прямо к конкретной странице результатов поиска, часто ссылка для нажатия оказывается слишком мала. Чтобы обеспечить легкость использования инструментов постраничного вывода информации, используйте увеличенный размер текста и обеспечьте достаточно места между строками (рис. 6.32). Это помогает отличить одну ссылку постраничного вывода информации от другой и минимизирует возможность случайно попасть на ненужную страницу.
   Рис. 6.32. Типичной практикой в разработке для увеличения размера инструментов при управлении постраничным выводом информации является применение блоков как показано в примере UX Magazine (www.uxmag.com)

   Покажите наличие дополнительных результатов поиска, если возможно
   В случаях когда количество результатов поиска чрезмерно велико и не может быть охвачено инструментами управления постраничного вывода информации, оповестите о присутствии дополнительных результатов, используя ссылку «больше» или другие информаторы, такие как многоточие (рис. 6.33).
   (а)

   (б)

   Рис. 6.33. Digg использует многоточие между инструментами управления постраничным выводом информации, чтобы оповестить о присутствии дополнительных результатов поиска (а). С другой стороны, NexTag показывает присутствие дополнительных страниц знаком «+» (б)

   Показывайте общее количество результатов и диапазон, который пользователи просматривают
   Из-за того что инструменты управления постраничным выводом информации служат одновременно и навигационным, и ориентационным механизмами, они должны точно показывать пользователям, какую страницу они просматривают, какую уже видели или пропустили, и какие им еще предстоит увидеть.
   Страница, на которой находится пользователь, должна быть легко отличима от остальных страниц и она не должна быть кликабельна, чтобы пользователи понимали, где именно они находятся (рис. 6.34).
   Рис. 6.34. При навигации по результатам поиска на сайте Dell пользователи знают, что они просматривают «результаты 13–24 из 4525» и что они находятся на второй странице результатов поиска

   Разрешите пользователям переходить прямо к первой странице результатов поиска
   Для больших наборов данных (больше 10–15 страниц) позвольте пользователям переходить прямо на первую страницу, так как на ней обычно содержатся наиболее релевантные результаты. Обычно пользователям также показывается ссылка на последнюю страницу результатов поиска. Однако с недавнего времени при отображении большого количества результатов поиска ссылка на «последнюю» страницу пропадает. Это обосновано двумя причинами. Во-первых, последняя страница содержит наименее релевантные результаты и маловероятно, что пользователи перейдут к результатам на ней. Во-вторых, пользователи обычно не переходят дальше первых нескольких страниц, чтобы найти искомые предметы. Согласно результатам анализа, проведенного Нильсеном (Nielsen, 2001), «Пользователи практически никогда не заглядывают дальше второй страницы результатов поиска».
   Однако существуют ситуации, когда ссылка перехода на последнюю страницу не только применима, но и необходима. Если результативный набор данных может быть сортирован различными методами (например, по алфавиту, по хронологии, по цене и т. д.), то ссылка на последнюю страницу становится нужной, так как она позволяет пользователям быстро просмотреть предметы поиска на последней странице с предсказуемым набором результатов поиска – например, предметы поиска, названия которых начинаются с буквы Я, самые дорогие/дешевые товары и т. д.
   Продублируйте инструменты управления постраничным выводом информации в верхней части страницы
   Для коротких списков инструменты управления постраничным выводом информации могут быть размещены только внизу списка. Однако на страницах с результатами поиска, требующих от пользователя значительной прокрутки (например, когда пользователям разрешается менять размер страницы), продублируйте инструменты управления постраничным выводом информации в верхней части страницы.
   Данный прием станет выигрышным для результатов поиска, сопровождаемых алфавитным указателем. Например, пользователи, которые ищут предмет поиска, начинающийся со слова «сюрреализм», могут перескочить в начало страниц «Т» и использовать инструменты управления в верхней части страницы для перехода назад, пока они не попадут на страницу с первым результатом, наиболее приближенным к слову «сюрреализм».
   Не связывайте ссылками инструменты управления постраничным выводом информации, не являющиеся релевантными
   Как и во всех механизмах навигации, предоставьте четкое оповещение пользователей о том, где они могут найти результаты поиска и куда они могут перейти.
   Предотвратите ненужную навигацию путем отключения инструментов управления, которые не перенесут пользователей на другие страницы результатов поиска (рис. 6.35).
   Рис. 6.35. Digg отключает элементы управления «назад» и «вперед» на первой и последней странице соответственно. В дополнение к этому текущая страница подсвечивается, и ссылка на нее не дается во избежание ненужной навигации

   • На первой странице отключите ссылки на «первую» и/или «предыдущую» страницы.
   • На последней странице отключите ссылки «далее» и/или на «последнюю» страницы.
   • Вместо отображения номера текущей страницы как ссылки, сделайте его простым текстом или каким-то образом подсветите.
   Найдите подходящие названия для инструментов управления постраничным выводом информации
   Для большинства инструментов управления наименование и порядок инструментов следующие: «в начало», «назад», «вперед» и «в конец». В приложениях, где предметы упорядочены хронологически, недавно стало популярно обозначать их так, чтобы это отображало их по хронологии – «самый новый», «новее», «старше» и «самый старый», где «самый новый» является эквивалентом «в начало» (рис. 6.36).
   (а)

   (б)

   Рис. 6.36. Yahoo! группирует и упорядочивает сообщения в хронологическом порядке и использует обозначения «самый новый», «новее», «старше» и «самый старый» по умолчанию (а). Когда пользователи меняют порядок сортировки, они также изменяют порядок обозначений на обратный (б)

 //-- Связанные шаблоны проектирования --// 
   Альтернативой постраничному выводу информации (PAGINATION) является непрерывная прокрутка (CONTINUOUS SCROLLING), позволяющая пользователям просматривать все предметы поиска в результатах как прокручивающийся список.


   CONTINUOUS SCROLLING (НЕПРЕРЫВНАЯ ПРОКРУТКА)

 //-- Проблема --// 
   Хотя постраничный вывод информации является типичным методом навигации по большому количеству результатов поиска, впечатление от работы с ним не продолжительное, так как перед просмотром следующего набора результатов пользователям приходится ждать, пока страница обновится.
 //-- Решение --// 
   Позвольте пользователям прокручивать результаты в большом списке. Как и при постраничном выводе информации, показывайте пользователям только подмножество данных единовременно. Запрашивайте дополнительные данные в режиме реального времени с сервера, используя технологии богатых интернет-приложений (RIA), такие как Ajax, и показывайте пользователям следующий набор результатов поиска, когда они дойдут до нижней части текущего списка без обновления страницы (рис. 6.37).
   Рис. 6.37. Ресурс Rutland Tool&Supply использует непрерывную прокрутку для отображения пользователям предметов в списке товаров

 //-- Зачем --// 
   Постраничный вывод информации требует от пользователей переключения внимания между навигацией по страницам и просмотру результатов поиска. При этом взаимодействие становится еще сложнее в том случае, когда пользователи хотят выбрать предметы поиска с разных страниц перед подтверждением действия (например, когда пользователи хотят сравнить предметы, не находящиеся на одной странице). В таких случаях пользователям зачастую непонятно, сохранился ли их выбор на других «страницах» когда они переходили дальше по результатам поиска и выбирали предметы. В дополнение к этому постраничный вывод информации требует значительного места на экране, часто двигая контент вниз по странице. Применение непрерывной прокрутки решает данные проблемы путем отображения предметов в списке прокрутки и получении следующего набора предметов поиска только тогда, когда пользователи доберутся до нижней части списка.
   В данном случае основания для предпочтения непрерывной прокрутки перед постраничным выводом информации неубедительны. Как упоминалось раньше, Бернард и др. (Bernard et al., 2002) обнаружили, что меньшее число пользователей предпочли просматривать страницы результатов со 100 предметами поиска по сравнению со страницами с количеством предметов поиска от 10 до 50, кроме того, это заняло у них больше времени.
   Однако упомянутое исследование было основано на результатах анализа постраничного вывода информации и не учитывало непрерывную прокрутку. А поскольку такие взаимодействия, как сравнение и выбор, становятся проще с непрерывной прокруткой, этот подход не стоит терять из поля зрения.
 //-- Как --// 
   Покажите пользователям результаты поиска в списке с раскрытым подмножеством предметов поиска. Когда пользователи прокрутят страницу и достигнут нижней части текущего списка, предоставьте новые данные и покажите пользователям следующий набор результатов. Чтобы сделать скроллинг гладким и непрерывным, приготовьте и храните несколько последующих наборов данных и запрашивайте дополнительные данные, когда пользователи прокручивают страницу. Если пользователям нужно ждать, пока данные загрузятся, разместите индикатор «пожалуйста, подождите…», чтобы пользователи знали, что дополнительные данные загружаются (рис. 6.38).
   Рис. 6.38. DZone.net показывает анимированную иконку LOADING (Идет загрузка) при получении дополнительных данных с сервера

   Отметьте для пользователей подмножество предметов поиска, которое они просматривают
   Как и в шаблоне постраничного вывода информации, показывайте, какие предметы поиска пользователи просматривают в настоящий момент вместе с общим количеством предметов в результатах поиска (рис. 6.39).
   Рис. 6.39. В данном примере инструмент «Live Search» на сайте MSN использует подход непрерывной прокрутки и демонстрирует набор результатов, отображаемых пользователям – «29–40 из 13’900’000»

 //-- Связанные шаблоны проектирования --// 
   Непрерывная прокрутка (CONTINUOUS SCROLLING) не применима в случаях, когда пользователи, скорее всего, захотят сделать закладки результатов поиска.
   Для наборов данных с предсказуемыми шаблонами (например, в алфавитном или хронологическом порядке) разбивка на страницы (PAGINATION) станет лучшим выбором, так как позволяет пользователям переходить на какую-либо конкретную страницу или последнюю страницу без необходимости ожидания загрузки промежуточного набора данных.


   FILTERING (ФИЛЬТРАЦИЯ)

 //-- Проблема --// 
   Часто поисковые критерии пользователей слишком широки, вследствие чего появляется очень большое количество результатов, через которые пользователям придется пробираться для определения тех, которые совпадают с их потребностями. Хотя пользователи могут повторить поиск, сделав критерии более точными, они все равно могут столкнуться с большим количеством результатов.
 //-- Решение --// 
   Дайте пользователям возможность сократить список результатов поиска, применяя фильтры на один или больше атрибутов данных (рис. 6.40).
   Рис. 6.40. Веб-сайт Download.com позволяет пользователям фильтровать список программного обеспечения, доступного для загрузки, по операционной системе, типу лицензии, размеру файлов и категориям

 //-- Зачем --// 
   В ситуации с большим количеством результатов поиска фильтрация является эффективным методом для их сокращения до управляемого набора. Она также позволяет пользователям начинать поиск с более широкими критериями и делать его более точным далее, по мере того, как они ознакомятся с набором результатов поиска и доступными атрибутами фильтрации. Возможность пользователям использовать фильтрацию является схожей с внедрением функций расширенного поиска или поиска по параметрам на странице результатов поиска.
 //-- Как --// 
   На странице результатов поиска фильтры обычно отображаются как раскрывающиеся списки, наборы переключателей или ссылок (рис. 6.41). По мере того как пользователи применяют фильтрацию по разным атрибутам, остающиеся варианты фильтрации не демонстрируются, чтобы показать доступные атрибуты в оставшихся результатах поиска, так как они будут использоваться при многоаспектном поиске (FACETED SEARCH) (см. шаблон далее). В результате пользователи могли увидеть «нулевое» количество предметов поиска в результатах поиска при определенных комбинациях вариантов фильтрации. Однако пользователям легко изменить или сбросить критерии фильтрации, вернуться на шаг назад и управлять результатами поиска, применяя другой набор фильтров.
   Рис. 6.41. Ресурс Expedia позволяет пользователям фильтровать результаты поиска по авиалиниям и отображает параметры фильтрации как ссылки

 //-- Связанные шаблоны проектирования --// 
   Фильтрация (FILTERING) в традиционных приложениях может быть медленной, так как применение критериев фильтрации потребует обновления страницы. По этой причине рассмотрите использование динамических запросов (DYNAMIC QUERYING) (см. главу 8), которые обновляют результаты поиска по мере того, как пользователи выбирают варианты фильтрации, и делают взаимодействие пользователей с приложением эффективнее.
   Использование многоаспектного поиска (FACETED SEARCH) стоит также рассмотреть как альтернативу фильтрации – он предоставляет возможность делать многократные сокращения до нахождения необходимого предмета(-тов) поиска и исключить вероятность «нулевого» количества результатов поиска. Кроме того, когда результаты поиска представлены в табличных списках (TABULAR LIST), пользователи могут применять параметры фильтрации на отдельных столбцах (см. главу 7).


   FACETED SEARCH (МНОГОАСПЕКТНЫЙ ПОИСК)

 //-- Проблема --// 
   Когда пользователям представлено большое количество результатов поиска, им может быть проблематично найти желаемый предмет(-ы) поиска. Хотя они могут применять фильтры к своему набору результатов поиска, вероятности пустого списка результатов с отдельными критериями фильтрации не избежать.
 //-- Решение --// 
   Позвольте пользователям сократить количество предметов в результатах поиска, основываясь на атрибутах релевантного предмета (т. е. ограничениях) (рис. 6.42). Сужение результатов поиска путем выбора ограничения существенно уточняет поисковые критерии, что может быть использовано для поиска внутри результатов для их уточнения. С каждым уточнением в наборе результатов сужающие ограничения обновляются, демонстрируя атрибуты, доступные для обновленного набора результатов поиска. Пользователи могут использовать обновленные ограничения для дальнейшего сужения результатов до управляемого списка, удобного для просмотра
   Рис. 6.42. Home Depot позволяет пользователям сократить количество результатов, используя ограничения, такие как «категория», «цена», «бренд» и др.

 //-- Зачем --// 
   Многоаспектный поиск позволяет пользователям быстро сократить количество результатов поиска, чтобы попасть к желаемому предмету(-ам). Отображение вариантов аспектов (ограничений) удобно пользователям, так как им не нужно обязательно знать синтаксис, чтобы сделать поиск более точным. Поскольку атрибуты сужения извлекаются из набора результатов поиска, пользователи никогда не остаются с пустым набором результатов. В дополнение к этому, имея возможность видеть все доступные варианты, пользователи могут лучше понять, как структурированы данные и, возможно, использовать эту информацию для того, чтобы лучше уточнять поиск в будущем.
 //-- Как --// 
   Вместе с результатами поиска показывайте пользователям релевантные ограничения, с которыми они смогут сократить набор результатов поиска. Для каждого сокращающего ограничения показывайте соответствующее количество результатов поиска, чтобы пользователи могли легко определить величину, до которой сократятся результаты поиска при выборе данного ограничения.
   По мере того как пользователи делают выбор, обновляйте набор сокращающих ограничений, основываясь на новом наборе результатов поиска. Это дает пользователям возможность многократно обновлять результаты поиска и быстро сокращать их количество (рис. 6.43).
   (а)

   (б)

   Рис. 6.43. Dell предлагает пользователям такие сокращающие ограничения, как продукт, категория и бренд (а). К каждому сокращающему ограничению пользователям показывается соответствующее количество результатов поиска. По мере того как пользователи выберут сокращающее ограничение, количество результатов обновится вместе с набором ограничений (б)

   Разрешите пользователям сбрасывать выбранные ограничения
   Покажите пользователям выбранные ограничения и дайте им возможность сбросить их в случае необходимости для возможности вернуться назад и выбрать другие ограничения для сокращения количества результатов (рис. 6.44).
   Рис. 6.44. NexTag позволяет пользователям убирать ограничения, нажав на соответствующую ссылку Back to all… (Вернуться ко всем…) в секции Narrow These Results (Сократить эти результаты)

 //-- Связанные шаблоны проектирования --// 
   Как и в случае фильтрации (FILTERING), многоаспектный поиск предполагает обновления страницы при выборе пользователем опции сокращения результатов поиска.
   Другим вариантом при использовании богатых Интернет-приложений являются динамические запросы (DYNAMIC QUERYING), где выбор ограничения обновляет список результатов без обновления страницы. Многоаспектный поиск часто сопровождается многоаспектной навигацией (FACETED NAVIGATION). Основное различие между ними в том, что первый инициализируется пользовательским поиском, а второй нацелен на пользователей, просматривающих информационное пространство.


   SAVED SEARCHES (СОХРАНЕННЫЕ РЕЗУЛЬТАТЫ ПОИСКА)

 //-- Проблема --// 
   Пользователи могут захотеть повторно совершить один или более поисков в будущем. Уточнение одного и того же критерия снова и снова неэффективно и при этом легко допустить ошибки, так как пользователи могут забыть включить один или более критериев в сложные поиски.
 //-- Решение --// 
   Дайте пользователям возможность сохранить их специфические поисковые запросы и выполнить их еще раз, если требуется.
   В дополнение к этому рассмотрите возможность для пользователей устанавливать оповещения, чтобы они были информированы о новых предметах поисков, совпадающих с их поисковым критерием (рис. 6.45).
   (а)

   (б)

   Рис. 6.45. Roost позволяет пользователям сохранять поиски (а). При их сохранении пользователи могут задать частоту, с которой им будут приходить оповещения о любых новых совпадениях, основанных на их поисковом критерии (б)

 //-- Зачем --// 
   Возможность сохранения поисков может сберечь пользователям время, особенно когда поиски являются сложными и включают в себя сочетание фильтрации, сортировки и опции модификации. Даже когда поиски не являются сложными, возможность сохранять поиски упрощает пользователям вспоминание прошлых поисков и дает возможность поделиться ими с другими. Более того, предоставляя пользователям возможность устанавливать уведомляющие сигналы для сохраненных поисков, вы сделаете приложение более полезным, так как пользователям не нужно регулярно запускать сохраненные поиски, чтобы определить измененные предметы в них.
 //-- Как --// 
   На странице результатов поиска предложите пользователям опцию сохранения их поисков (рис. 6.46).
   Рис. 6.46. Monster, приложение по размещению и поиску вакансий, предлагает пользователям возможность сохранить их поиски на странице с результатами поиска по вакансиям рядом с поисковым критерием

   Разместите ссылку «сохранить поиск» рядом с критерием поиска, чтобы пользователям были понятны параметры, по которым они осуществляли поиск.
   Упростите процесс повторного поиска для пользователей
   Важно, чтобы у пользователей была возможность легко вновь выполнить сохраненные поиски. Если пользователи будут часто обращаться к сохраненным поискам, сделайте их доступными с главной страницы (рис. 6.47) или включите их в утилиту навигации в зоне заголовка страницы. Также рассмотрите вариант их размещения в секции «Ваша учетная запись», откуда пользователям будет проще управлять списком сохраненных поисков (рис. 6.48).
   Рис. 6.47. Ресурс Roost дает пользователям доступ к их сохраненным поискам, отображая их как раскрывающийся список. Этот список является частью элементов навигации вверху страницы

   Рис. 6.48. Веб-сайт COHomeFinder дает пользователям возможность управлять сохраненными поисками в разделе My Account (Моя учетная запись)

   Сохраненные поиски доступны в раскрывающемся списке.
   Рассмотрите возможности уведомления пользователей
   Просить пользователей сохранить поиски может быть недостаточно, так как они могут забывать регулярно проверять их сохраненные поиски и просматривать обновления. Даже когда они выполняют заново поиски, им может быть сложно определить, какие предметы изменились. Сделайте сохраненные поиски более полезными, предлагая пользователям варианты и параметры оповещений, чтобы они были информированы об изменениях (рис. 6.49).
   Рис. 6.49. При сохранении результатов поиска ресурс Yahoo! Jobs предлагает пользователям возможность установить требуемые параметры сигналов/уведомлений. Пользователи могут задать как метод уведомлений (например, по электронной почте или с помощью сервиса мгновенных сообщений), так и их периодичность

   Новой тенденцией стало давать пользователям возможность отсылать оповещения об их поисках по электронной почте или подписке на каналы Really Simple Syndication (RSS) (рис. 6.50). При такой подписке пользователи могут использовать программу просмотра RSS и следить за обновлениями в каналах. Это исключает необходимость входа в приложение для доступа к сохраненным поискам.
   (а)

   (б)

   Рис. 6.50. Ресурсы Indeed (а) и Forrester Research (б) предлагают пользователям сохранить их поиски как с оповещениями по электронной почте, так и по каналу RSS

 //-- Связанные шаблоны проектирования --// 
   Если двум или большему количеству пользователей необходимо совершить один и тот же поиск, дайте им возможность совместно пользоваться сохраненными поисками внутри группы (см. шаблон SHARING в главе 9).



   Глава 7
   Списки


   Введение

   Списки широко применяются в веб-приложениях для отображения совокупности элементов. Однако подход, используемый для представления списков, зависит от характера элементов в совокупности. Простой список (SIMPLE LIST), как правило, используется для представления совокупности элементов только с одним или двумя атрибутами. Он может быть использован и для элементов с несколькими атрибутами, если пользователь не станет ссылаться на дополнительные атрибуты при сравнении или сортировке. Для многоатрибутивных элементов, которые важно сравнить или рассортировать, лучше всего использовать табличный список (TABULAR LIST).
   Для отражения отношений «родитель—ребенок» наиболее подходящим является иерархический список (HIERARCHICAL LIST). Когда отношения «родитель—ребенок» становится невозможно поддерживать вследствие изменения порядка расположения элементов, иерархический список превращается в табличный (TABULAR LIST).
   Список событий (EVENT LIST) и временные шкалы (TIMELINES) применяются для списков, состоящих из элементов, содержащих информацию о времени. Список событий (EVENT LIST) уместен при отражении будущих событий, а временные шкалы (TIMELINES) подходят для структурирования уже свершившихся событий.
   С увеличением количества мультимедийного контента текстовые списки все чаще уступают место спискам/сеткам изображений (IMAGE LIST/GRID), где элементы показаны в виде миниатюр изображений. Сейчас изображения используются даже для тех элементов, которые традиционно были представлены в виде текстовых списков – особенно для результатов поиска. Поскольку информация с географической карты легко доступна с помощью открытых программных интерфейсов приложений, взаимодействие на основе карт также становится распространенным, и списки элементов с географическими (или пространственными) атрибутами часто дополнены картами (MAPS).
   В веб-приложениях пользователи не просто просматривают элементы списков, но и могут воздействовать на отдельные элементы (например, редактировать, удалять, копировать и т. д.) или на группу элементов (например, сравнивать, перемещать, удалять и т. д.). Подобные операции со списком (LIST ACTIONS) влияют на его элементы тем или иным способом. Однако существуют операции, направленные не на изменение элементов, а на облегчение обмена, печати и анализа данных путем их экспорта в другие форматы (LIST UTILITY FUNCTIONS).


   SIMPLE LIST (ПРОСТОЙ СПИСОК)

 //-- Проблема --// 
   Пользователям необходим список элементов с одним или несколькими атрибутами, где в отношении каждого элемента могут быть совершены одно или несколько действий. Кроме того, представленные элементы не должны быть рассортированы или сопоставлены ни по одному из атрибутов.
 //-- Решение --// 
   Показать пользователям простой список элементов с соответствующими действиями (рис. 7.1).
   Рис. 7.1. Basecamp отображает категории сообщений в виде простого списка, для каждого элемента которого предусмотрена команда «Удалить»

 //-- Зачем --// 
   Знакомство пользователей со списками превращает их в очень эффективный конструкторский прием представления набора элементов, особенно когда показанные элементы являются прежде всего текстовыми и существует перечень основных действий, связанных с ними. Например, списки, как правило, используются на панелях инструментов и в порталах (см. главу 4), где пользователям показывают список элементов – таких, как возможные действия, лучшие реферальные ссылки, наиболее популярные продукты и т. д. (Few, 2006). Пользователи могут затем щелкнуть мышью по элементу списка, чтобы перейти к более подробному его просмотру.
 //-- Как --// 
   Простые списки следует отображать с пронумерованными либо непронумерованными элементами. Пронумерованные списки особенно полезны в случае, если цифры отражают порядок очередности элемента, например, в рейтинге «10 лучших фильмов недели» или «10 главных новостей» (рис. 7.2).
   Рис. 7.2. CNN показывает самые популярные статьи в виде пронумерованного списка

   Для улучшения визуального воздействия непронумерованного списка, а также для указания типа элемента рекомендуется использовать иконки и другие символы. Кроме того, для улучшения удобочитаемости близко расположенных элементов списка могут применяться альтернативные оттенки цвета фона или разделителя строк (рис. 7.3). Несмотря на то что в большинстве простых списков показаны элементы только с одним или двумя атрибутами, некоторые списки могут содержать и больше. Например, в результатах поиска в формате простого списка часто представлены заголовок страницы, краткое описание, адрес вебсайта, а также другая информация.
   Рис. 7.3. В списке Movie Showtimes in Denver (Киносеансы в Денвере) использована иконка для обозначения элемента списка как фильма и различные оттенки цвета фона для улучшения удобочитаемости

   Когда пользователям не нужно сортировать список, состоящий из элементов с несколькими атрибутами, и сравнивать их по этим атрибутам, предпочтительнее использовать простой список вместо табличного (TABULAR LIST) (см. следующий шаблон). Однако при отображении простого списка, содержащего элементы с несколькими атрибутами, следует упростить его быстрый просмотр, выделив наиболее важный атрибут списка и поместив его перед другими (рис. 7.4).
   Рис. 7.4. При отображении списка файлов ресурс Basecamp показывает имена файлов, выделенные более крупным шрифтом и более темным цветом, чем описание файла, имя пользователя, размер файла, а также названия операций по улучшению возможностей беглого просмотра

   Рассмотрите возможности отображения второстепенных операций при наведении
   С элементами простого списка могут соотноситься одно или несколько действий. Для сведения к минимуму визуальных помех необходимо ограничить видимые операции для каждого элемента списка, так, чтобы второстепенные операции отображались при наведении на него (рис. 7.5).
   Рис. 7.5. В Zoho Planner по умолчанию показаны только флаговые кнопки. Благодаря этому наиболее частые операции по выполнению запланированного действия становятся видимыми и очевидными. Редко совершаемые операции, такие, как редактирование и удаление, показываются пользователям при наведении

 //-- Связанные шаблоны проектирования --// 
   Несмотря на то, что простой список может быть приемлемым для демонстрации элементов, обладающих множеством атрибутов, при необходимости сортировки списка или сравнения его элементов по одному или нескольким атрибутам, а также для экономии места, занимаемого списками, содержащими элементы с несколькими атрибутами, стоит воспользоваться табличным списком (TABULAR LIST).


   TABULAR LIST (ТАБЛИЧНЫЙ СПИСОК)

 //-- Проблема --// 
   Необходимо показать пользователям набор элементов с несколькими атрибутами, чтобы они могли четко ассоциировать каждый элемент с его атрибутами, а также сравнивать их друг с другом на основе этих атрибутов. Кроме того, они могут пожелать отсортировать список на основе одного или нескольких атрибутов.
 //-- Решение --// 
   Показать пользователям список в виде таблиц, где элементы перечислены в строках, а их атрибуты приведены в столбцах (рис. 7.6).
   Рис. 7.6. В данном списке «100 лучших блокбастеров напрокат в Интернете» в табличном формате представлены фильмы и соответствующие им атрибуты, такие, как категория, дата выпуска, MPAA (Американская Ассоциация кино) и средний рейтинг пользователей

 //-- Зачем --// 
   Информацию о нескольких атрибутах лучше всего представить в таблицах, поскольку это обеспечивает структурирование данных. Например, заголовки столбцов могут определять атрибуты элементов, представленных в строках. Кроме того, отображение информации в табличной форме облегчает пользователям сравнение элементов, а также сортировку их в желаемом порядке (если поддерживается). Самое главное, знакомство пользователей с табличным расположением данных в строках и столбцах превращает табличный список в удобный способ представления многокритериальных данных.
 //-- Как --// 
   Данные в таблице с элементами в строках и значениями атрибутов в столбцах обычно читают построчно. Покажите названия атрибутов в заголовках столбцов таблицы, если они не следуют из данных. Для эффективного проектирования важно, чтобы проект таблицы соответствовал ее назначению, а не требовал от пользователей проведения дополнительного анализа (рис. 7.7).
   Рис. 7.7. В этом «Списке ценных бумаг» ресурса MSN Money показан перечень инвестиций (в виде символов акций), а также несколько атрибутов, в том числе введенные пользователем, такие как высокие цели, низкие цели и акции. Пользователи, наиболее вероятно, воспользуются этим списком для определения рыночной стоимости своих инвестиций, выявления степени их изменения, а также причин изменения. Данная форма способствует достижению этих целей пользователей, показывая рыночную стоимость и изменения, как в отдельности, так и в совокупности

   Сделайте табличные данные читаемыми и построчно, и по столбцам
   Удобочитаемость табличных данных зависит от того, насколько легко читаются отдельные строки и столбцы. Улучшить удобочитаемость строк можно путем добавления разделительной линии к каждой строке или с помощью изменения оттенка цвета следующей строки, известного как чередование строк или разметка «зебра» (рис. 7.8). Оба подхода помогают визуально группировать элементы в строках и особенно важны для таблиц данных с большим количеством столбцов (или с широкими столбцами), в которых пользователям может быть трудно отслеживать данные в каждой строке.
   (а)

   (б)

   Рис. 7.8. Общие способы улучшения удобочитаемости состоят в разделении каждой строки линией, как показано на примере Fidelity (а) и чередования цвета строк, как показано в табличном списке Related Companies (Связанные компании) Google Finance (б)

   Исследование Эндерса (Enders, 2008) показало, что разметка «зебра» позволяла лучше выполнить задание (по крайней мере, не хуже), и ей чаще отдавали предпочтение по сравнению с другими стилями, такими, как ровный фон, линии, чередование строк двух цветов, две и три полосы. Кроме того, улучшить удобочитаемость столбцов можно, выровняв значения атрибутов в них в зависимости от содержания ячейки таблицы (рис. 7.9). Придерживайтесь следующих правил выравнивания данных (Galitz, 2002; Mayhew, 1992):
   • использование выравнивания по правому краю для столбцов, содержащих целые числа (а не «текстовые» номера, такие как личный идентификатор);
   • использование десятичной точки и выравнивания по правому краю для чисел с десятичной дробью; отрицательные числа могут быть показаны красным цветом и/или заключены в скобки;
   • использование выравнивания по левому краю для столбцов, содержащих текст (в том числе дату и время);
   • использование выравнивания по центру для столбцов, содержащих короткие слова или информацию о статусе (например, активный, неактивный).
   Рис. 7.9. В таблице сделок Mint.com использовано правильное выравнивание для каждого типа столбцов: флажки выровнены по центру; столбцы Merchant (Продавец), Category (Категория) и Date (Дата) – по левому краю, а в столбце Amount (Сумма) – данные указаны с десятичной точкой и выровнены по правому краю

   Важным исключением является случай, когда числа в столбце представлены в разных единицах измерения. Тогда используется выравнивание по левому краю, так как пользователи не будут сравнивать числа.
   Предоставьте пользователям возможности сортировать столбцы с данными
   Сортировка длинных списков данных по столбцам помогает пользователям быстро найти желаемые элементы и проанализировать их относительно конкретного типа или состояния. Как и его версия для ПК, распространенный метод взаимодействия при сортировке табличных данных по частоте обращения необходим, чтобы пользователи могли произвести сортировку элементов столбца, щелкнув мышью по его заголовку (рис. 7.10), а вторым щелчком – отсортировать в обратном порядке (по возрастанию или убыванию).
   Рис. 7.10. Сервис Google Documents предоставляет пользователям возможность сортировать документы по столбцам, а стрелка используется для указания способа сортировки столбца. Кроме того, градиент в написании заголовков столбцов используется для указания, что их можно активировать нажатием клавиши мыши

   Укажите атрибут столбца, по которому отсортированы данные в таблице, поместив иконку с изображением стрелки рядом с соответствующим заголовком столбца, чтобы показать, отсортированы ли данные по возрастанию (стрелка вверх) или по убыванию (стрелка вниз). Сортировка данных по столбцам и отображение индикатора сортировки по умолчанию также сообщают пользователям, что таблица может быть отсортирована. Сортировка по заголовкам столбцов используется, когда все возможные способы, при помощи которых пользователи могут отсортировать данные, доступны в столбцах. В случаях, когда это невозможно, следует наглядно представить параметры сортировки в виде выпадающего списка или набора ссылок (рис. 7.11).
   Рис. 7.11. Ресурс Home Depot не использует заголовки столбцов данных, так как вся информация – бренд, название продукта и цена – находится в одном столбце. Поэтому он предлагает раскрывающийся список Sort By (Сортировать по), который позволяет пользователям сортировать данные

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

   Предоставьте пользователям возможности фильтрации длинных списков
   Фильтры помогут пользователям сузить большое количество элементов в списке до управляемого набора (см. шаблон FILTERING в главе 6). Если варианты сужения являются атрибутами, содержащимися в списке, и пользователи, скорее всего, сузят список, используя одновременно только один из них, то такие фильтры могут быть встроены в табличный список (рис. 7.13).
   Рис. 7.13. В Rally пользователи могут фильтровать данные, выбрав элемент из выпадающего списка, находящегося ниже заголовка столбца

   С другой стороны, если не все параметры фильтрации доступны в списке и пользователи могут применить несколько фильтров одновременно, то данные опции следует отобразить отдельно над списком (рис. 7.14). Кроме того, следует учитывать вид матрицы, когда данные могут быть отфильтрованы по атрибутам строк и столбцов в отдельности или в сочетании (рис. 7.15).
   Рис. 7.14. В Blinksale параметры фильтрации представлены отдельно от списка, поскольку они позволяют пользователям выбрать несколько статусов и указать диапазон дат, что было бы трудно сделать, используя заголовки столбцов списка

   Рис. 7.15. В Expedia цены на авиабилеты обобщены над списком полетов. Пользователь может перейти по ссылке и просмотреть обобщенный список, чтобы отфильтровать его по авиакомпании, цене, беспосадочным рейсам, сочетанию авиакомпании и цены и т. д.

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

   (б)

   Рис. 7.16. Ресурс Google Analytics позволяет пользователям переключаться между несколькими отображениями: список (а), круговая диаграмма (б), гистограмма и сопоставление средних данных сайта

   (а)

   (б)

   Рис. 7.17. Веб-сайт Home Depot при отображении элементов представляет пользователям данные в виде сетки (а) и списка (б)

   Улучшение доступа к табличным данным
   Облегчите доступ к табличной информации, включив в разметки HTML следующее (см. также шаблон ACCESSIBLE TABLES в главе 11):
   1. Опишите содержание таблицы, используя тег и атрибут . В рамках тега содержится краткий заголовок, описывающий содержание таблицы. В отличие от тега , содержание которого видно пользователям, содержание в атрибуте SUMMARY не отображается на странице, но дает более детальное описание контента таблицы для тех, кто использует альтернативные браузеры.
   2. Опишите взаимосвязь между заголовками столбца или строки и соответствующими данными с помощью атрибута SCOPE в теге , который помогает пользователям создавать контекст для данных таблицы.
 //-- Связанные шаблоны проектирования --// 
   Большинству крупных списков необходима фильтрация (см. шаблон FILTERING в главе 6 и шаблон DYNAMIC QUERYING в главе 8) для выбора доступных проектировщикам опций сужения длинных списков. Помимо того, в длинных списках обычно невозможно показать все элементы на одной странице, так что разбиение на страницы (PAGINATION) часто является неотъемлемой частью табличных списков; непрерывная прокрутка (CONTINUOUS SCROLLING) также рассматривается в качестве опции (см. главу 6).


   HIERARCHICAL LIST (ИЕРАРХИЧЕСКИЙ СПИСОК)

 //-- Проблема --// 
   Элементы в списке соотносятся друг с другом иерархически так, что каждый элемент может иметь один или несколько подпунктов с типом отношений «родитель—ребенок» (например, «категория—подкатегория»).
 //-- Решение --// 
   Покажите список элементов в виде «дерева», где будет четко прослеживаться связь между родительским и детским(-и) элементом(-ами) (рис. 7.18). Элементы списка на родительском уровне (т. е. узел группы или элемент—родитель) могут содержать другие группы (например, родители) и/или отдельные элементы (например, узел списка или элемент—ребенок) и могут быть развернуты для просмотра их содержания или свернуты.
   Рис. 7.18. Сервис Digg показывает комментарии в форме ветки комментариев. Когда пользователь щелкает мышью по n Replies (Ответы), они отображаются с отступом и имеют древовидную структуру

 //-- Зачем --// 
   Для многих списков, особенно в сообщениях электронной почты и форумах, имеющих несколько участников и тем, важно показать, как элементы соотносятся друг с другом. Отображение элементов в иерархическом списке облегчает пользователям процесс слежения за нитью обсуждения или разговора. Кроме того, оно позволяет легко отследить историю обсуждения.
 //-- Как --// 
   Необходимо сделать иерархию элементов списка очевидной, изобразив отношения между элементами на уровнях родителя и ребенка. Затем включить функции контроля развертывания и свертывания элементов первого столбца на родительском уровне (рис. 7.19).
   Рис. 7.19. В Rally отображен список Release Task Status (Статус выполнения задачи) в иерархическом порядке, где подзадачи показаны ниже задач родителей и выделены с помощью отступов. То же можно увидеть и в столбце State (Состояние)

   Отступы – наиболее предпочтительный способ обозначения отношений «родитель—ребенок» среди элементов многоуровневого иерархического списка.
   Однако в одноуровневых иерархиях, используемых в основном при группировке информации, для представления иерархических отношений обычно достаточно применить какую-либо форму визуальной индикации, которая выделяла бы элемент на родительском уровне (рис. 7.20).
   (а)

   (б)

   Рис. 7.20. В Sun сравнение конфигурации сервера показано с помощью выделения информации о параметрах сервера на обобщающем уровне более жирным и крупным шрифтом (а). В TechRepublic, напротив, отношения «ребенок– родитель» между элементами показаны с помощью отступов в комментариях (б)

   В соответствующих случаях возможно использование не иерархического режима просмотра списка
   Для иерархических списков организацией по умолчанию (методом сортировки) является древовидная структура, которая показывает отношения «родитель—ребенок».
   Однако в списках, содержащих несколько столбцов (т. е. несколько атрибутов), пользователи могут захотеть отсортировать данные по другому атрибуту.
   Например, в дискуссионных группах пользователю может потребоваться просмотреть сообщения в хронологическом порядке, а не в иерархическом порядке ветки дискуссии, как установлено по умолчанию.
   При сортировке столбцов пользователями может возникнуть необходимость перехода к не иерархическому списку, при этом необходимо убедиться, что пользователи смогут вернуться к первоначальному иерархическому отображению (рис. 7.21).
   (а)

   (б)

   Рис. 7.21. Ресурс Nabble предоставляет пользователям возможность перехода от ветки комментариев (а) к просмотру в хронологическом порядке (б), при выборе другого значения в раскрывающемся списке View (Просмотр)

   Будьте осторожны, позволяя пользователям удалять родительские элементы
   Удаление элемента на родительском уровне приведет к удалению всех дочерних элементов, в том числе и других родительских элементов в его рамках.
   Таким образом, предоставляя пользователям возможность удаления, необходимо сообщить им о последствиях этой операции. Если в результате удаления может быть неумышленно допущена существенная потеря данных, следует ограничить возможности удаления элементов пользователями только «пустыми» родительскими элементами. Кроме того, при необходимости, сделать так, чтобы удалить родительский элемент можно было только из мастера создания элементов (рис. 7.22).
   Рис. 7.22. Удалить комментарий в Nabble может только его владелец. Пункт Delete post permanently (Удалить комментарий окончательно) недоступен другим пользователям

 //-- Связанные шаблоны проектирования --// 
   При сортировке необходимо представить иерархические списки (HIERARCHICAL LISTS) в виде не иерархических, т. е. либо как простые списки (SIMPLE LISTS), либо как табличные (TABULAR LISTS). Кроме того, пользователям может потребоваться отсортировать иерархические списки (SORTING, см. главу 6).


   EVENT LIST (СПИСОК СОБЫТИЙ)

 //-- Проблема --// 
   Элементы, предназначенные для просмотра пользователями, содержат дату и время – как, например, расписания или перечни планируемых мероприятий. Хотя пользователям может потребоваться просмотреть уже прошедшие события, основной акцент делается на предстоящих и будущих мероприятиях.
 //-- Решение --// 
   Для отображения элементов используйте формат календаря. Кроме того, не забывайте также показывать элементы в виде списка и давать пользователям возможность переключаться между ними (рис. 7.23).
   (а)

   (б)

   Рис. 7.23. Когда пользователи нажимают на Calendar (Календарь) на веб-сайте университета Клемсон, по умолчанию отображаются ежемесячные события пользователей (а) и они могут перейти к еженедельному или ежедневному режиму отображения (б). При любом отображении пользователи могут перейти на другой месяц или день с помощью панели управления календаря или кнопок Previous (Предыдущая) и Next (Следующая) средств управления разметки страниц

 //-- Зачем --// 
   Пользователи обычно знают, как пользоваться календарем, благодаря знакомству с настольными приложениями, такими как Outlook, Entourage, ICAL и др. Более того, использование просмотра в режиме календаря позволяет пользователям легко увидеть запланированные события и помогает им в планировании, так как они могут ясно увидеть, на какое время запланированы дела и какое время свободно.
 //-- Как --// 
   Покажите пользователям календарь с соответствующими настройками по умолчанию, например, календари для личного или делового использования по умолчанию обычно отображают просмотр по неделям. Вместе с тем позвольте им изменить режим просмотра в соответствии со своими предпочтениями (рис. 7.24).
   (а)

   (б)

   Рис. 7.24. По умолчанию Google Calendar показывает пользователям просмотр по неделям (а), но позволяет им изменить его на странице Settings (Настройки) (б)

   При использовании средств управления календаря для навигации, выделите дни с одним или несколькими запланированными мероприятиями для предотвращения излишней навигации (рис. 7.25).
   Рис. 7.25. В Yahoo! Calendar даты, содержащие записи, выделены полужирным шрифтом

   Предоставьте пользователям возможности переключаться между режимами просмотра календаря и списка
   Несмотря на то, что события, как правило, отображаются в календаре, предложите пользователям просматривать данные и в виде календаря, и в виде списка (рис. 7.26), поскольку пользователи могут захотеть распечатать список событий для справки. В списке расположите события в хронологическом порядке.
   (а)

   (б)

   Рис. 7.26. Ресурс Pepsi Center показывает запланированные спортивные мероприятия как в режиме просмотра календаря (а), так и списком (б)

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

   (б)

   Рис. 7.27. Agile University показывает календарь курса с помощью списков (а), но позволяет пользователям просмотреть их по месяцам, а также по регионам (б)

   Позвольте пользователям осуществлять просмотр записей календаря
   Если общее число событий слишком велико, чтобы быть представленным в виде календаря, позвольте пользователям просматривать записи календаря (рис. 7.28).
   Рис. 7.28. SanDiego.org позволяет пользователям вести поиск по диапазону дат, типу события и ключевым словам

 //-- Связанные шаблоны проектирования --// 
   При отображении событий в формате списка, а не в формате календаря в зависимости от количества атрибутов, которые необходимо показать пользователям, можно использовать шаблоны SIMPLE LIST или TABULAR LIST. Более того, при показе результатов поиска событий примените шаблон SEARCH RESULTS (см. главу 6).


   TIMELINES (ВРЕМЕННЫЕ ШКАЛЫ)

 //-- Проблема --// 
   Пользователям необходимо предоставить историческую информацию с указанием времени (часы/минуты дня, дни недели, месяцы, годы и т. д.), чтобы они могли видеть тенденции и/или эволюцию событий.
 //-- Решение --// 
   Показать историческую информацию в виде временной шкалы (рис. 7.29).
   Рис. 7.29. National Geographic использует временные шкалы, чтобы помочь пользователям сориентироваться в контенте, посвященном путешествиям в космос. Проект также содержит шаблон CAROUSEL (см. главу 8), что позволяет пользователям перемещаться по шкале

 //-- Зачем --// 
   Временные шкалы являются подходящими для представления данных с указанием времени, поскольку они позволяют пользователям видеть отношения между событиями и облегчают процесс сопоставления. Они могут также помочь пользователям увидеть исторический контекст и обоснование текущего положения дел, если таковые имеются.
 //-- Как --// 
   Покажите время вдоль горизонтальной оси, а дату или информацию о мероприятии – по вертикальной. Когда доступное пространство экрана ограничено, предоставьте пользователям возможность прокрутки или соединения временной шкалы (рис. 7.30) или сожмите шкалу и позвольте им увеличивать и уменьшать изображения по желанию (рис. 7.31).
   Рис. 7.30. Данный пример из проекта «Сравнение временных шкал» MIT показывает динозавров в рамках геологической шкалы. Пользователи могут соединить временные шкалы, перетащив их по горизонтали и получить доступ к информации, не отображающейся в данном режиме просмотра

   Рис. 7.31. В Google Finance показана историческая информация о стоимости акций в двух отдельных временных шкалах, при этом ограниченное пространство экрана использовано с максимальной пользой. Временная шкала в нижней части диаграммы (показана серым) – это весь период, за который доступны данные о стоимости акций. Временная шкала в верхней части диаграммы показывает информацию о выбранном сегменте. Пользователи могут выбрать для просмотра интересующий их сегмент шкалы, передвигая ползунок в нижней части панели

   Предоставьте пользователям доступ к деталям события
   Поскольку большое количество информации возможно сжать до небольшого объема, может быть трудно отразить детали во временной шкале. Поэтому предоставьте пользователям возможность просматривать детали при наведении курсора мыши или при щелчке мышью по событию (или информационной точке) на временной шкале (рис. 7.32).
   Рис. 7.32. На данной временной шкале «Rise of Life» (Эволюция жизни) ресурса National Geographic пользователи могут щелкнуть по событию на временной шкале, чтобы просмотреть сведения в нижней части панели

 //-- Связанные шаблоны проектирования --// 
   Большие временные шкалы (TIMELINES), которые не вписываются в рамки доступного пространства экрана, часто содержат шаблон OVERVIEW-PLUS-DETAIL (см. главу 8), чтобы позволить пользователям увеличивать и уменьшать изображения для просмотра деталей.


   IMAGE LIST/GRID (СПИСОК/СЕТКА ИЗОБРАЖЕНИЙ)

 //-- Проблема --// 
   Элементы, представленные пользователям, визуальны по своей природе, и отображение их с использованием только текстового описания может затруднить пользователям процесс поиска и узнавания желаемых элементов. Кроме того, пользователи могут узнать изображение, но название элемента может им быть незнакомо.
 //-- Решение --// 
   Покажите пользователям элементы в виде сеток изображений или списков изображений, а не в форме текстового списка. Однако изображения необходимо дополнить текстовым описанием (рис. 7.33).
   Рис. 7.33. Ресурс Last.fm представляет лучшие видеоролики в виде сетки изображений и добавляет краткое текстовое сообщение о видео

 //-- Зачем --// 

   Картинка стоит тысячи слов.
 Пословица

   Люди способны узнавать и вспоминать изображения лучше, чем слова (Paivio et al., 1968). Поэтому при показе мультимедийного контента, такого как фотографии, фильмы, музыка и т. д., пользователям проще просмотреть и найти нужный элемент в том случае, когда все элементы представлены в виде изображений, а не просто в текстовом списке.
   Преимущество изображений над текстовой информацией – обычно называемое «эффект превосходства рисунка» (Lidwell et al., 2003) – особенно наглядно проявляется в ситуациях, когда пользователи могли случайно видеть изображение ранее или знают, как выглядит «прототип» искомого изображения. Например, если пользователи ищут фото, художника, альбом или видео, которое они видели раньше или если они помнят один или несколько элементов, они смогут быстрее найти его с помощью изображений, а не текста. А поскольку память на изображения и на текст вместе взятые, как правило, лучше, чем на текст или изображения по отдельности, следует дополнить изображения текстовым описанием (Childers and Houston, 1984; Paivio et al., 1968).
   В первые дни существования Интернета пропускная способность была сдерживающим фактором, и в центре внимания находился обмен текстовой информацией. С распространением широкополосного соединения меняется и форма взаимодействия с пользователями, так как пользователи не только просматривают и загружают фотографии, музыку и видео, но и обмениваются ими. Это сделало использование списков изображений вполне обычным явлением.
 //-- Как --// 
   Упростите процесс быстрого сканирования элементов, показав миниатюры элементов в сетке изображений. Как и в других списках, убедитесь, что пользователям предоставлены необходимые функции разметки страниц списка, сортировки и фильтрации (рис. 7.34, см. шаблоны PAGINATION, SORTING и FILTERING в главе 6).
   Рис. 7.34. Fotolia предлагает пользователям несколько вариантов фильтрации списка изображений, в том числе по категориям, по ориентации изображения, по типу файла и т. д.

   При ограниченном пространстве списки изображений могут быть реализованы с помощью шаблона CAROUSEL, где пользователям одновременно показывается меньшее число элементов, но они могут использовать средства навигации для просмотра скрытых изображений (рис. 7.35, см. шаблон CAROUSEL в главе 8).
   Рис. 7.35. Ресурс Yahoo! TV использует карусель для собственных списков изображений

   Предоставьте пользователям возможности предварительного просмотра изображений
   Если миниатюры используются для представления реальных изображений, то для сведения к минимуму излишней навигации следует убедиться, что пользователям будет доступен предварительный просмотр более крупного изображения при наведении на него курсора мыши (рис. 7.36). Функция предварительного просмотра изображений может быть также интегрирована, когда список изображений является частью слайд-шоу.
   Рис. 7.36. Сервис iStockphoto предоставляет пользователю возможность предварительного просмотра изображения (или видео) при наведении мыши

   Хотя для просмотра детального изображения нет необходимости переходить на другую страницу, предварительный просмотр позволяет пользователям легко различать похожие изображения, особенно когда картинки относительно небольшого размера (рис. 7.37).
   Рис. 7.37. Данный пример из Vertigo SlideShow показывает галерею миниатюр для навигации по картинкам. Он также обеспечивает их предварительный просмотр, когда пользователи наводят указатель мыши на миниатюру

   Изучите возможности использования списка изображений в качестве альтернативы другим спискам
   Все чаще взаимодействие с Интернетом становится визуальным. Предполагается, что взаимодействие пользователей с сетью станет более эффективным и действенным, если они смогут просмотреть (возможно, предварительно) контент перед навигацией. Новейшие поисковые системы начали изучать возможности использования изображений для отображения результатов поиска (рис. 7.38 и 7.39).
   Рис. 7.38. Сервис SearchMe показывает результаты поиска в первую очередь в виде серии миниатюр веб-страниц, которые пользователи могут пролистывать в поисках нужной. Кроме того, если они ранее попадали на полезные (или не достаточно полезные) страницы, то им визуально легче распознать страницы, увидев изображение, а не только название

   Рис. 7.39. Поисковая система Viewzi распределяет результаты по нескольким категориям и использует различные типы списков изображений для различных групп результатов поиска; здесь представлены интернет-магазины

 //-- Связанные шаблоны проектирования --// 
   В отличие от списков, особенно табличных, которые могут быть достаточно компактными, списки/сетки изображений (IMAGE LISTS/ GRIDS), как правило, требуют больше пространства. Когда пространство на сайте ограничено, воспользуйтесь шаблоном CAROUSEL для размещения большего числа элементов (см. главу 8).


   MAPS (КАРТЫ)

 //-- Проблема --// 
   Элементы, представляемые пользователям, содержат информацию пространственного характера, касающуюся географического (например, расположение ресторана на карте) или физического местоположения (например, сидения в самолете, места в концертном зале или на стадионе). Кроме того, пользователям важно знать месторасположение элемента в географическом или физическом пространстве, а также о его связи с другими элементами в том же пространстве.
 //-- Решение --// 
   Покажите элементы на карте региона или в интересующем пространстве (рис. 7.40).
   (а)

   (б)

   Рис. 7.40. Ресурс Roost показывает расположение дома на карте (а), а авиакомпания United Airlines позволяет пользователям выбрать себе место, предоставляя схему расположения сидений (б)

 //-- Зачем --// 
   Так как пользователям предоставляется пространственная информация, отображение на карте физического пространства исключает необходимость визуализации расположения интересующего объекта. При этом информация также становится более значимой и актуальной для таких целей пользователей, как нахождение месторасположения, навигация к месту и от него и соотнесение данных с выбранным регионом.
 //-- Как --// 
   Карты, как правило, используются в качестве фонового изображения, на которое накладывается географическая, физическая и статистическая информация. В зависимости от потребностей пользователей, карты могут быть представлены в качестве иллюстраций (с помощью точек, линий и многоугольников), фотографических или спутниковых изображений, текста или их комбинации (рис. 7.41).
   Рис. 7.41. Сервис Google Maps показывает местоположение с помощью просмотра карты, фото со спутника, ландшафта и улиц

   Отображайте детальную информацию по требованию
   При показе нескольких мест на карте предоставление подробной информации обо всех их одновременно может перегружать карту и затруднять пользователям анализ значимых данных. Кроме того, пользователи могут быть заинтересованы в просмотре подробной информации только о некоторых местах. Для уменьшения запутанности распространен подход, заключающийся в предоставлении пользователям необходимой информации при наведении указателя мыши или при щелчке мышью по маркеру карты. Детальная информация может быть представлена в виде всплывающих подсказок или раскрывающихся окон.
   Всплывающие подсказки, как правило, используются, когда детали небольшие по объему, носят исключительно информативный характер и не требуют от пользователей совершать действия с предоставленной информацией, в то время как раскрывающиеся окна используются, когда пользователи могут совершать действия, такие, как нахождение ориентиров (рис. 7.42). Другая альтернатива – демонстрация раскрывающихся окон пользователям-новичкам с задержкой в несколько секунд, так как они могут не знать, какие действия можно производить с маркерами карты (например, Microsoft Live Maps).
   Рис. 7.42. Ресурс Zillow предоставляет подробные сведения о месте по щелчку, так что пользователи могут предпринять дальнейшие действия для просмотра информации о доме и подобных домах в этом районе

   Предоставьте пользователям контекст для больших карт при помощи обзоров
   При панорамировании и масштабировании больших карт важно, чтобы пользователи не терялись и были в состоянии поддерживать чувство местонахождения. Обзоры в рамках карты помогают обеспечить такой контекст (рис. 7.43). Большинство обзоров карт поддерживают панорамирование, позволяя пользователям перемещаться в пределах окна «регион» в окне обзора, таким образом, воздействуя на просматриваемую карту.
   Рис. 7.43. Сервис Yahoo! Maps предоставляет обзор карты в правом верхнем углу. В окне обзора не только предоставляет контекст для пользователей, но также предоставляется возможность перемещать в нем прямоугольник карты

   Некоторые обзоры карт также поддерживают масштабирование. Однако использование обзоров для панорамирования и масштабирования, как правило, не так эффективно, как панорамирование и масштабирование на основной карте (Hornbæk et al., 2002) (см. шаблон VERVIEW-PLUS-DETAIL в главе 8).
   Рассмотрение использования символов для отображения типов расположения
   Карты могут показать более чем один тип мест, например, карта может показывать рестораны, заправочные станции, жилье и т. д. Для обозначения различных типов мест используйте один или несколько из следующих подходов.
   Цвета и формы. Использование различных цветов и форм полезно при отображении от двух до трех типов мест на карте. Добавьте легенду, чтобы пользователи могли ассоциировать цвета и формы с типом мест. Кроме того, не разочаровывайте пользователей недостатком цвета изображения, используйте цветные маркеры в сочетании с уникальными формами.
   Пиктографические символы. Используйте узнаваемые пиктографические символы для определения типов мест, таких как рестораны, туалеты, автозаправочные станции, дороги и т. д. (рис. 7.44).
   Рис. 7.44. Для данного плана поездки от Yahoo! Travel используется рунический алфавит символов дифференцирования мест для посещения, ресторанов, гостиниц и т. д.

   Использование миниатюр реальных фотографий для определения месторасположения становится все более популярным способом указывать положения на карте, хотя они и не применяются для обозначения типа места как такового (рис. 7.45).
   Рис. 7.45. На данном отображении карты в Google Maps показаны фотографии мест в окрестностях Сан-Франциско

   Дополните карты просмотром элементов в виде списка или таблицы
   Хотя карта полезна для отображения информации о местоположении, само место может обладать другими атрибутами, которые лучше представить в формате списка. Более того, если пользователи заинтересованы в сравнении признаков элементов помимо их местонахождения, табличные списки более полезны, например, при сравнении цен на дома, показанные на карте. Сделайте подобное сравнение возможным, предложив пользователям элементы в виде списка в дополнение к карте (рис. 7.46, см. шаблон TABULAR LISTS в начале этой главы). Для данных с небольшим числом атрибутов может быть полезно отображение списка и карты рядом, чтобы облегчить пользователям выбор места из списка и поиск его на карте или выбор места на карте и поиск его в списке со всеми его атрибутами (рис. 7.47).
   (а)

   (б)

   Рис. 7.46. По умолчанию Zillow показывает результаты поиска пользователей в виде карты (а). Однако позволяет пользователям щелкнуть по ссылке See homes in a list (Просмотреть дома списком), чтобы сменить режим просмотра на список (б)

   Рис. 7.47. Ресурс Cisco показывает пользователю список и карту рядом при отображении результатов поиска партнера

   Используйте карты для сообщения информации о статусе
   Карты также полезны для отображения информации о статусе на панели управления. Например, ShipCompliant для Six88 использует карту США, чтобы показать виноделам информацию о согласовании поставок (рис. 7.48).
   Рис. 7.48. ShipCompliant для Six88 использует карту США, чтобы показать виноделам информацию о согласовании поставок. При наведении курсора мыши на штат пользователи также смогут увидеть записи о согласовании поставок на месте и удаленно

   Используйте карты для отображения информации о движущихся объектах в реальном времени
   Карты также могут быть использованы для показа в режиме реального времени информации о местонахождении объектов в пути (например, грузовые автомобили, поезда, самолеты и т. д.). Местоположение объектов, оборудованных однажды устройствами с системой глобального позиционирования (GPS), может быть наложено на карту для отображения его местонахождения в данный момент.
   Это полезно для отслеживания положения флота или выявления местонахождения поезда в данный момент (рис. 7.49).
   Рис. 7.49. Данная карта движения поездов показывает их местонахождение, основываясь на швейцарском расписании поездов. И хотя здесь не указывается фактическое местоположение поезда по GPS, сайт утверждает, что данные о поездах являются точными

 //-- Связанные шаблоны проектирования --// 
   Большие карты, как правило, не вписываются в доступное пространство экрана, и чтобы позволить пользователям поддерживать их контекст, часто используют шаблон OVERVIEW-PLUS-DETAIL. Кроме того, для панорамирования в картах используется ПЕРЕТАСКИВАНИЕ (DRAG-AND-DROP). Более подробная информация представлена в главе 8.


   LIST ACTIONS (ОПЕРАЦИИ СО СПИСКОМ)

 //-- Проблема --// 
   Пользователи могут захотеть совершить с элементами в списках такие операции, как редактирование, удаление, сравнение и т. д. Желаемые операции могут быть применены к отдельным элементам, или пользователям потребуется выбрать два или несколько элементов.
 //-- Решение --// 
   Такие операции, как редактирование, удаление, копирование и другие, применяемые к отдельным элементам, следует четко ассоциировать с конкретными элементами и показать операции для каждого элемента. Для операций, требующих выбора двух или более элементов, выделите флажками каждый элемент в списке и соответствующие операции вне списка (рис. 7.50). Баксли (Baxley, 2003) выделяет операции со списком – такие как специальные операции и общие операции соответственно.
   Рис. 7.50. Ресурс PriceGrabber отображает «сопоставление цен» – операцию, производимую для каждого элемента в списке товаров. Он также предлагает возможность установить флажки на каждый элемент так, чтобы пользователи могли отметить два или более элементов и выбрать команду Compare (Сравнить) для сравнения характеристик выбранных элементов

 //-- Зачем --// 
   При выборе специальных операций с элементом подразумевается, что пользователи выбирают элемент, поэтому нет необходимости просить пользователей выбрать элемент перед совершением операции. Кроме того, при работе с длинными списками пользователям, возможно, придется выбрать элемент, а затем прокрутить страницу вверх или вниз, чтобы применить операцию, что, тем более, делает взаимодействие неэффективным. В списках, поддерживающих и специальные, и общие операции (см. рис. 7.50), если элементы в них не разделены, проектировщику также будет достаточно сложно четко указать, какие операции применяются к отдельным элементам, а какие – к нескольким сразу.
 //-- Как --// 
   Расположите специальные операции в одной строке с элементом списка и повторите их для каждого элемента, а общие операции вынесите за пределы списка.
   Если пользователям предоставляется возможность выбора одного или нескольких элементов, как во многих веб-приложениях электронной почты, размещение специальных и общих операций за пределами списка является приемлемым в случае, когда это помогает уменьшить визуальные помехи (рис. 7.51).
   Рис. 7.51. С операциями, которые могут применяться к одному или нескольким пунктам, как в данном примере с Hotmail, допустимо сгруппировать все средства управления и позволить пользователям выбрать один или несколько элементов, используя флажки

   Вместе с тем чтобы свести к минимуму ошибки, рекомендуется отключать возможность совершения специальных операций, когда пользователями выбрано более одного элемента списка.
   Выделение строки, соответствующей выбранному элементу
   Демонстрация выбранных элементов только с помощью флажков часто не сообщает достаточно визуальной информации о том, что они выбраны. Распространенным способом сделать выбранные элементы более заметными является выделение соответствующих строк путем изменения цвета их фона (рис. 7.52, см. шаблон HIGHLIGHT в главе 12).
   Рис. 7.52. Сервис Google Docs выделяет выбранные элементы, изменяя цвет фона соответствующих строк

   Рассмотрите возможности использования иконок и списков для специальных операций
   Специальные операции могут быть представлены в виде набора ссылок, кнопок или иконок (рис. 7.53). Однако поскольку специальные операции повторяются для каждого элемента списка, то размещение в одном ряду нескольких операций в виде ссылок или кнопок может потребовать дополнительного пространства экрана, что приведет к созданию визуального беспорядка. В таких ситуациях лучше использовать меню операций (рис. 7.54).
   (а)

   (б)

   (в)

   Рис. 7.53. Примеры списков со специальными операциями, представленными в виде ссылок (а), в виде кнопок на странице Your Account Dominios (Ваша учетная запись) (б) и в виде иконок (в)

   (а)

   (б)

   Рис. 7.54. Веб-сайт Box.net предлагает меню действий для каждого элемента как в виде списка (а), так и в виде иконок (б)

   Другая опция проектирования, позволяющая поместить кнопки специальных операций в ограниченном пространстве, заключается в перемещении не так часто используемых команд на страницу «детали» элемента или отображении их при наведении (рис. 7.55). Хотя при таком подходе некоторые операции остаются скрытыми, он может упростить пользовательский интерфейс.
   Рис. 7.55. Список запланированных дел в Basecamp показывает только одно важное действие для каждого элемента списка – флажок, обозначающий выполнение задачи. Другие действия по редактированию, удалению и перемещению запланированных элементов отображаются только при наведении

   Повторите общие операции для длинных списков
   Для длинных списков, требующих прокрутки, повторите общие операции вверху и внизу списка. Это устранит необходимость прокрутки, так как пользователям всегда будет виден один набор общих операций или, по крайней мере, поможет минимизировать прокрутку для совершения операции после выбора элемента.
   Предоставьте пользователям возможности выбирать (отменять) все товары в списках с мультивыбором
   Когда существует вероятность, что пользователи могут выбрать многие или все элементы в списке, позвольте им выбрать или отменить все элементы списка (рис. 7.56). Однако существует одно исключение из данного правила. Опцию «Выбрать все» лучше не предлагать для таких действий, как «сравнение», где пользователи выигрывают от выбора меньшего числа элементов, поскольку выбор множества элементов затруднит показ всех их в сравнении.
   Рис. 7.56. Сервис Gmail позволяет пользователям выбрать все (или ни одного) электронные письма. Кроме того, пользователи имеют возможность выбора электронных писем на основе других характеристик: прочитанные, непрочитанные, отмеченные и неотмеченные

   Проектируйте для предотвращения ошибок выбора
   В случаях, когда выбор пользователей ограничен определенным числом элементов или конкретными элементами, которые они могут выбрать, спроектируйте интерфейс для предотвращения ошибок выбора. Например, если пользователи не могут выбрать более 4-х элементов из списка в 10 пунктов, как только пользователи выберут 4 пункта, сбросьте флажки для других элементов. Или если существуют зависимости от того, что пользователи могут выбрать, включайте или отключайте опции на основе их выбора (рис. 7.57).
   (а)

   (б)

   Рис. 7.57. Википедия позволяет пользователям выбрать две версии статьи для сравнения на странице истории. Для сравнения двух версий пользователи нажимают селективную кнопку в левой колонке для старой версии и селективную кнопку в правой колонке для новой версии, а затем – кнопку Compare selected versions (Сравнить выбранные версии). Материалы для выбора динамически обновляются в целях предотвращения выбора неправильных версий. По умолчанию для сравнения выбраны последние две версии (а). Как только пользователи добавляют в колонку другую версию, селективные кнопки в другом столбце будут автоматически обновляться, чтобы предложить только действительный выбор (б). Подобное проектирование предотвращает ситуации выбора для сравнения той же версии, а также выбор старой версии более позднего документа и новой версии старого документа

   Отображайте сообщения о подтверждении и соглашении по мере необходимости
   Операции со списком влияют на его элементы одним из следующих способов:
   1. Они сразу же применяют операцию к выбранным элементам и показывают пользователям результат. Результат может быть отображен на той же странице или на отдельной странице. Например, такие операции, как «Обновить корзину», оставляют пользователей на той же странице, в то время как такие операции, как «Сравнить», направляют пользователей на отдельную страницу.
   2. Они запрашивают у пользователей дополнительную информацию, показывая диалог или направляя их на отдельную страницу. Как только пользователи предоставят дополнительную информацию и удовлетворят запрос, их возвращают на страницу со списком, где они могут увидеть результаты выбранного действия. К действиям данной категории относятся: «Новый», «Редактировать», «Копировать», «Отправить другу» и т. д.
   3. Они подтверждают намерения пользователя, требуя ответить утвердительно на вопрос о выбранной операции, например, «Вы уверены, что хотите удалить…?» (рис. 7.58). Запрос подтверждения намерений пользователей имеет большое значение при операциях, которые приводят к необратимой потере данных (например, «Удалить»).
   Рис. 7.58. При удалении напоминания Basecamp просит пользователя подтвердить, что он хочет его удаления. Сайт также сообщает, что удаленное напоминание невозможно будет восстановить

   Важно помнить, что не все команды «Удалить» нуждаются в подтверждающем сообщении, а только операции, приводящие к необратимым результатам, должны требовать подтверждения пользователя. Например, не нужно требовать подтверждения при удалении элемента из корзины, так как его относительно легко добавить обратно.
   Кроме того, для операции «Удалить», которая встречается довольно часто и может раздражать пользователей, требуя подтверждения каждый раз, последней тенденцией является предвосхищение подтверждающего сообщения; вместо него пользователям предлагается операция «Отменить действие», чтобы они могли пересмотреть свои действия (Raskin, 2007). Такой подход становится распространенным в приложениях (например, в электронной почте), где при выборе операции «Удалить» от пользователя не требуется подтверждения, но предоставляется возможность отмены (рис. 7.59). Приложения могут позволить пользователям отменить только последнюю операцию, или же они могут позволить несколько уровней отмены, как в настольных приложениях.
   Рис. 7.59. При совершении операции удаления Gmail немедленно перемещает элемент в корзину, но предлагает пользователям операцию Undo (Отменить действие) для восстановления удаленного элемента

   Более того, приложения могут поддерживать функцию «Повторить действие».
   Для операций со списками, где пользователям может быть сразу не ясно, были ли операции завершены успешно, важно предоставить пользователям письма квитирования, сообщающие об успешном совершении (рис. 7.60).
   Рис. 7.60. После сохранения изменений в проекте Tick показывает подтверждающее сообщение о том, что изменения были сохранены

   И наоборот, если операция не может быть завершена успешно, пользователям следует представить соответствующее сообщение об ошибке с указанием причин отказа и действий пользователя по исправлению положения, если таковые возможны.
 //-- Связанные шаблоны проектирования --// 
   В дополнение к операциям со списком, возможно, будет необходимо представить пользователям служебные операции, применяемые к списку в целом (см. шаблон LIST UTILITY FUNCTIONS далее).


   LIST UTILITY FUNCTIONS (СЛУЖЕБНЫЕ ОПЕРАЦИИ СО СПИСКОМ)

 //-- Проблема --// 
   Для некоторых действий, которые пользователи могут совершить, не требуется выбирать конкретные элементы, они применяются ко всем элементам списка, например, печать, загрузка, отправление по электронной почте и т. д.
 //-- Решение --// 
   Подобно общим операциям со списком, служебные операции со списком (LIST UTILITY FUNCTIONS) представляют функции (например, отправление электронной почты, экспорт и т. д.) вне списка элементов (рис. 7.61).
   Рис. 7.61. Сервис Google Analytics предлагает служебные операции Export (Экспортировать), Email (Отправить по электронной почте) и Add to Dashboard (Добавить в панель инструментов)

 //-- Зачем --// 
   Как показано, режим просмотра в виде списка может быть недостаточным для удовлетворения потребностей пользователей. Они могут захотеть использовать информацию для собственного анализа с применением собственных инструментов. Кроме того, они могут решить поделиться информацией с теми, у кого нет прямого доступа к данным. Служебные операции могут помочь пользователям в проведении такого анализа и содействовать обмену.
 //-- Как --// 
   Во-первых, выделите служебную операцию из списка общих операций. Поскольку служебные операции применяются к списку в целом, а не к отдельным элементам, важно, чтобы они были представлены вне списка и располагались отдельно от перечня общих операций.
   Последнее требует выбора элементов из списка, тогда как первое – нет.
   К наиболее часто используемым форматам экспорта/загрузки относятся Adobe PDF, Excel, CSV (значения, разделенные запятыми), TSV (значения, разделенные символом табуляции) и XML (расширяемый язык разметки), поскольку они позволяют пользователям импортировать данные в предпочитаемую электронную таблицу или базу данных приложения и манипулировать ими или просматривать по мере необходимости.
   Формат XML также полезен, когда данные могут быть использованы в качестве вложенных в другие приложения и/или преобразованы в другие форматы, такие как HTML (язык гипертекстовой разметки) и SVG (масштабируемая векторная графика) с целью презентации.
   Adobe PDF полезен в случаях, когда важно сохранить внешний вид экспортируемых данных.
   Еще одна часто используемая служебная операция – «Печать». Она может быть реализована в виде версии страницы «для печати», которую пользователи могут распечатать на стандартных принтерах. При этом удаляются баннеры, рекламные объявления, средства навигации и другая брендинговая информация, а также изменяются размеры в соответствии с форматом бумаги. Изменение размера страницы для печати особенно важно для макетов с фиксированной шириной (FIXED-WIDTH LAYOUTS) (см. главу 12), когда текст может быть обрезан справа при печати в книжной ориентации (вместо альбомной). При печати списков полезно спросить пользователей, хотят ли они включить подробную информацию в отчет о печати (рис. 7.62).
   Рис. 7.62. Ресурс Rally предлагает пользователям тщательно разработанные возможности печати. Они могут получить резюме или подробный доклад с возможностями настройки колонтитулов и титульного листа. Кроме того, для подробного отчета пользователям разрешается печатать каждый объект («дефект» в данном примере) с новой страницы или непрерывно без каких-либо разрывов страниц. Эти функции особенно полезны при работе в команде и показывают, что данное веб-приложение стремится удовлетворить потребности пользователей офлайн

   Отображение предварительного варианта страницы перед печатью
   Поскольку пользователям может быть не ясно, что именно они печатают, покажите пользователям предварительный вариант и предложите команду печати (рис. 7.63).
   (а)

   (б)

   Рис. 7.63. При печати портфеля акций Morningstar пользователям сначала демонстрируют параметры печати и инструкции по использованию функций печати браузера (а), а затем показывают превью отчета (б)

   Предоставьте пользователям возможности установки оповещений и/или расписаний для повторяющихся действий
   Если существует вероятность повторения использования служебной операции в будущем или на регулярной основе (например, электронная почта), позвольте пользователям создавать сигналы или установить график повторения функции через регулярные интервалы времени (рис. 7.64).
   Рис. 7.64. При отправлении отчета Google Analytics предлагает пользователям возможность запланировать данное действие. Поскольку это второстепенное действие, оно помещено на отдельной вкладке

 //-- Связанные шаблоны проектирования --// 
   Список служебных операций похож на список операций (LIST ACTIONS) и требует, чтобы пользователям показывали соответствующее подтверждающее сообщение после успешного завершения задачи.



   Глава 8
   Богатые веб-приложения


   Введение

   Как говорилось в главе 1, богатые веб-приложения (Rich Internet Applications или RIA) обеспечивают оперативность и интерактивность, сравнимые с настольными приложениями. С RIA взаимодействие представляется непрерывным и динамическим, так как пользователям не приходится ждать обновления основных данных и макета страницы, и они сразу могут видеть результаты своих действий.
   Возможно, первым богатым взаимодействием в веб-приложениях был редактор полноценного форматирования (RICH-TEXT EDITOR), который позволял пользователям размещать отформатированный текст на веб-страницах, без знания лежащего в их основе HTML (языка гипертекстовой разметки). С появлением таких технологии, как Flash и Ajax (асинхронный JavaScript и XML), стало возможным более богатое взаимодействие, поскольку они позволяют общаться с веб-серверами без явного «представления» информации. Их первоначальное использование, таким образом, сводилось к замене взаимодействий, при которых пользователям приходилось ждать, пока результаты будут обработаны веб-серверами и возвращены им с обновлением страницы.
   Сюда относятся проверка введенной пользователем информации и предоставление необходимой обратной связи с пользователями при заполнении форм (RICH FORM); предложение эффективных способов ввода данных (AUTOSUGGEST/AUTOCOMPLETION), предоставление пользователям возможности редактировать информацию в том же месте, где она просматривается (EDIT-IN-PLACE); панорамирование и масштабирование всего информационного пространства (OVERVIEW-PLUS-DETAIL); сортировка и фильтрация информации в режиме реального времени (DYNAMIC QUERYING), а также предварительный просмотр результатов изменений, внесенных пользователем (LIVE PREVIEW). Активация таких более богатых взаимодействий требует использования прямых методов манипуляции, широко применяемых для настольных приложений, к примеру, перетаскивание (DRAG-AND-DROP) и интерактивных средств управления, как, например, ползунки (SLIDERS).
   Кроме того, для сообщения об изменениях, произведенных на странице, а также чтобы помочь пользователям сохранить визуальный контекст, проектировщики начали полагаться на визуальные эффекты (ANIMATIONS/TRANSITIONS). Популярные методы включают в себя демонстрацию ожидания и процесса выполнения при извлечении данных (DELAY/PROGRESS INDICATOR); кратковременное выделение измененной информации на странице (SPOTLIGHT/YELLOW-FADE); предоставление пользователям возможности просмотра большого набора элементов в ограниченном пространстве (CAROUSEL). Объединяя аспекты обновления данных в режиме реального времени с соответствующими визуальными эффектами, RIA, как правило, стремятся сделать взаимодействие с веб-приложением эффективным и приятным.


   RICH-TEXT EDITOR (РЕДАКТОР ПОЛНОЦЕННОГО ФОРМАТИРОВАНИЯ)

 //-- Проблема --// 
   Информация, введенная пользователями, может выиграть от полноценного форматирования, такого, как полужирный шрифт, подчеркивание, курсив и маркированный список. Кроме того, информация может быть лучше представлена с использованием оттенков цветов, таблиц, изображений и гиперссылок. Хотя этого можно достигнуть с помощью HTML, не следует ожидать от пользователей знания HTML, и даже если они с ним знакомы, не нужно надеяться, что они способны создать работоспособный HTML. В некоторых случаях предоставление пользователям возможности напрямую вводить HTML-код (или JavaScript) может также привести к появлению бреши в системе безопасности.
 //-- Решение --// 
   Позвольте пользователям вводить информацию с помощью редакторов полноценного форматирования, имеющих необходимые средства управления для форматирования и вставки изображений и гипертекстовых ссылок (рис. 8.1).
   Рис. 8.1. Yahoo! Mail предлагает пользователям редактор полноценного форматирования для составления писем. Обратите внимание, что также предоставляется возможность добавления эмотиконов (например, улыбок)

 //-- Зачем --// 
   Простой текст может использоваться далеко не везде. В приложениях, где информация предназначена для использования другими способами, таких как электронная почта и блоги, пользователям важно подчеркнуть определенные фрагменты текста, сделав его полужирным, подчеркнутым, наклонным или представленным другим цветом. В некоторых случаях (например, блоги, сайты для поиска работы) также может быть важно предоставить вспомогательную информацию, такую как таблицы, картинки и ссылки на другие веб-страницы. Хотя этого возможно добиться, позволив пользователям вводить свою информацию во фрагменты HTML, не следует ожидать от пользователей его знания. Если вы разрешите вводить HTML, возможно, вам потребуется затратить больше усилий на разработку приложения, чтобы гарантировать, что введенный пользователем HTML окажется рабочим и не испортит вид остальной части страницы.
   Редакторы полноценного форматирования в силу своих WYSIWYG свойств («что видите, то и получаете») представляют собой более простые способы форматирования текста и могут быть преобразованы в HTML как для хранения, так и для того, чтобы пользователи могли сразу увидеть результат своего выбора.
   Кроме того, редакторы полноценного форматирования просты для пользователей, которые, скорее всего, сталкивались с подобными взаимодействиями в офисных приложениях, таких как Microsoft Office, Corel WordPerfect Suite, OpenOffice и т. д.
 //-- Как --// 
   Редакторы полноценного форматирования, как правило, используются как часть более крупного приложения, а также для выполнения конкретных задач по вводу данных, таких как составление электронного письма или создание записи в блоге. Таким образом, важно показать пользователям области ввода текста, которые могут быть отформатированы с помощью средств управления полноценного форматирования, а также доступные опции форматирования (например, полужирный шрифт, подчеркивание, курсив, маркированный список, гиперссылки, изображения и т. д.).
   Предоставьте пользователям альтернативные варианты ввода текста
   Некоторые пользователи могут не захотеть использовать опции полноценного форматирования. По возможности предложите альтернативные варианты ввода текста, такие как простой текст или HTML. В приложениях электронной почты, например, продумайте проблему предоставления возможности ввода простого текста (рис. 8.2). С другой стороны, в блогах предложите возможность ввода непосредственно HTML (рис. 8.3). Для предотвращения возникновения сбоев в системе безопасности перед сохранением информации убедитесь, что введенные пользователем скрипты (например, JavaScript) в коде HTML удалены.
   Рис. 8.2. Сервис Gmail предлагает пользователям возможность переключать текст электронного сообщения с обогащенного текста в простой текст

   Рис. 8.3. Сервис Blogger предлагает пользователям вводить посты либо в виде обогащенного текста, либо в HTML-формате

   Предоставьте только основные средства управления RTF-форматированием
   Не стоит предлагать пользователям всевозможные средства управления, а только те, которыми наиболее вероятно воспользуется большинство пользователей. Например, Gmail не предлагает какие-либо средства управления для создания таблиц при написании писем (рис. 8.4). Это не означает, что сервисы электронной почты, использующие редакторы полноценного форматирования, не должны предоставлять пользователям возможность создавать таблицы, но ограничение набора средств управления обогащенным текстом приемлемо.
   Рис. 8.4. Gmail не предлагает пользователям средства управления для создания таблиц при написании электронного письма

   Предоставьте пользователям возможности увеличения поля ввода текста
   Когда текст, вводимый пользователями, объемный, просмотр его в доступной области может быть затруднен. В таких случаях следует предоставить пользователям возможность увеличивать поле ввода текста и/или просматривать сообщения перед публикацией. Например, сервисы Gmail (см. рис. 8.4) и Yahoo! Mail (см. рис. 8.1) предлагают пользователям опцию увеличения поля ввода текста. Для этого редактор запускается в отдельном окне, которое может быть увеличено по мере необходимости (рис. 8.5).
   Рис. 8.5. Запустив редактор электронной почты в отдельном окне и позволив менять его размер при необходимости, Gmail предлагает пользователям возможность просмотра больших объемов информации

 //-- Связанные шаблоны проектирования --// 
   Редакторы полноценного форматирования (RICH-TEXT EDITOR), как и предпросмотр в режиме реального времени (LIVE PREVIEW), являются WYSIWYG-инструментами. В то время как редакторы полноценного форматирования (RICH-TEXT EDITOR) отражают результат изменений, предпросмотр в режиме реального времени (LIVE PREVIEW) позволяет пользователям просматривать результаты выбора конфигурации элемента или интерфейса.


   RICH FORM (ПОЛНОЦЕННАЯ ФОРМА)

 //-- Проблема --// 
   Некоторые недостатки в заполнении форм связаны с необходимостью ожидания пользователями валидации после заполнения формы. При исправлении ошибок валидации требуется заново представить и подтвердить правильность формы. В некоторых случаях приходится просить пользователей заполнять форму небольшими частями потому, что в зависимости от выбора пользователя, дальнейшие шаги могут быть определены только после того, как представленная форма будет проверена в соответствии с необходимыми правилами бизнеса, например, предложение пользователям опции оформления заказа на покупку товара или просьба о предоставлении данных кредитной карты на основе выбранной ими формы оплаты.
 //-- Решение --// 
   В дополнение к шаблонам, рассмотренным в главе 2, таким, как FORGIVING FORMAT, INPUT HINTS/PROMPTS, SMART DEFAULTS и REQUIRED FIELD INDICATORS, используйте интерактивные формы проверки, которые подтверждают информацию по мере ее введения пользователем, предотвращая возникновение ошибок, предлагая пользователям только верные альтернативы. Кроме того, по возможности, покажите зависимые или второстепенные альтернативы, близкие к варианту-родителю (рис. 8.6).
   (а)

   (б)

   (в)

   Рис. 8.6. Yahoo! Farechase использует комбинацию технологий RIA, чтобы сделать эту форму «обогащенной»: шаблон AUTOSUGGEST для полей From (От кого) и To (Кому) (а), отображение только верных дат отправления и прибытия и отключение недействительных дат (б), и сокрытие даты возвращения, если пользователи выбирают полет в один конец (в)

 //-- Зачем --// 
   Необогащенные формы требуют от пользователей ввода данных и представления формы на сервер для проверки или отправки на сервер частей выбора, для демонстрации зависимых альтернатив. Затем пользователю представляют «успешно выполненную» страницу или информацию об ошибках, которые должны быть исправлены при последующем обновлении страницы. Использование обогащенной формы не только устраняет необходимость обновлений страницы, но также может вообще предотвратить их, выявив ошибки в зародыше. Пользователи также могут контролировать процесс, поскольку ошибки и подсказки теперь хорошо интегрированы в форму.
 //-- Как --// 
   Проектируйте форму так, чтобы валидация ввода информации пользователем происходила при вводе либо при переходе пользователя к следующему элементу формы (или переключении внимания с текущего элемента формы на другой). Если ввод данных или выбор неверны, представьте соответствующие подсказки или сообщения, так чтобы пользователи могли немедленно исправить ошибки (рис. 8.7).
   Рис. 8.7. При регистрации ресурс Picnik проверяет информацию по мере ввода. Проверенные элементы формы отмечаются соответствующими иконками, чтобы указать правильность введенной информации

   Проектируйте формы для минимизации числа ошибок
   Обогащенные формы могут не только производить валидацию информации, вводимой пользователем при заполнении формы, они прежде всего способствуют сокращению числа ошибок. Например, как показано на рис. 8.6, шаблон AUTOSUGGEST/AUTOCOMPLETION может предложить пользователям верные варианты при вводе данных; эффективные средства управления календарем могут обеспечить верный выбор дат, а включение или отключение соответствующих средств управления при каждом выборе пользователя может свести к минимуму неправильный ввод данных. Другие распространенные элементы проектирования включают в себя «развернутые» подходы, обеспечивающие показ пользователям только верных зависимых опций (рис. 8.8), а также измерители надежности пароля, гарантирующие, что пользователи выберут безопасные пароли (рис. 8.9).
   Рис. 8.8. После того как пользователи выберут марку, выпадающее меню All Models (Все модели) в Blue Book от Kelly обновляется и предлагает им только подходящие варианты

   Рис. 8.9. После ввода пользователями пароля измеритель надежности пароля оценивает уровень его надежности, позволяя пользователям выбрать более сложные пароли

 //-- Связанные шаблоны проектирования --// 
   Как видно из примеров, богатство форм достигается за счет шаблонов, таких как AUTOSUGGEST/AUTOCOMPLETION, когда они реагируют на ввод информации пользователями, показывая только верные варианты выбора и предотвращая возникновение ошибок. Шаблоны SLIDER (помогающий пользователям вводить диапазоны данных) и DELAY/PROGRESS INDICATORS (отображающие прогресс во время ожидания пользователем) также содержат большое количество обогащенных форм (RICH FORMS).


   AUTOSUGGEST/AUTOCOMPLETION (АВТОЗАПОЛНЕНИЕ)

 //-- Проблема --// 
   Когда пользователи вводят такие данные, как даты, адреса электронной почты, условия поиска и прочее, предоставить пользователям стандартный выпадающий список становится невозможно, поскольку общее число возможных элементов в начале достаточно велико. Тем не менее, основываясь на контексте задачи или частичном вводе информации пользователями, эти данные можно прогнозировать. Кроме того, вводимый текст может быть длинным или трудно запоминаемым, что повышает вероятность совершения пользователями ошибки и влияет на субоптимальный опыт пользователей.
 //-- Решение --// 
   Предложите возможные альтернативы при вводе пользователями данных и позвольте им выбрать одну из предлагаемых альтернатив (рис. 8.10).
   Рис. 8.10. Google объединяет опции AUTOSUGGEST с результатами поиска. Как только пользователи вводят условие, они видят меню, отображающее потенциальные условия поиска вместе с общим числом совпадений в результатах. Пользователи могут нажать на желаемый вариант из меню или переместиться к нему с помощью клавиш со стрелками вверх и вниз

 //-- Зачем --// 
   Предлагая совпадения и позволяя пользователям выбрать из списка, вы не только делаете взаимодействие более эффективным, так как пользователи могут быстро сосредоточиться на правильном выборе, но и сводите к минимуму возможность совершения ошибки. Поскольку узнавание происходит легче, чем вспоминание, пользователям проще узнать правильный синтаксис или формат информации из возможных вариантов, чем вспомнить его – например, легче выбрать Сан-Антонио (SAT) из списка аэропортов, чем помнить его код.
 //-- Как --// 
   Элементом пользовательского интерфейса для этого шаблона является текстовое поле, позволяющее вводить данные в свободной форме. Когда пользователи набирают текст, им показывают список элементов (ниже текстового поля), которые близко соответствуют тому, что было введено на данный момент. По мере того как пользователи продолжают печатать, список сужается, пока необходимый элемент не будет предложен или же совпадения среди элементов могут быть не найдены. В случаях когда для подобранных элементов доступна связанная с ними информация, способная помочь пользователям сделать правильный выбор, включите также и ее.

   Примечание
   Для приложений без RIA, где потенциальное число вариантов выбора для пользователей ограничено, как правило, рядом с текстовым полем размещают кнопку Select (Выбрать). При нажатии кнопки Select (Выбрать) открывается всплывающее окно (или пользователей направляют на другую страницу), позволяя пользователям выбрать нужный пункт из разделенного на страницы или прокручиваемого списка; пользователям также может быть предложен механизм поиска.

   Например, покажите и адрес, и имя при вводе адреса электронной почты (рис. 8.11) или предоставьте код и города, и аэропорта (рис. 8.12) при вводе названия города в приложении, помогающем забронировать авиабилеты. Другой пример – указание общего числа совпадений для данного поискового запроса, как это сделано в Google Suggest (см. рис. 8.10).
   Рис. 8.11. При вводе пользователем адреса получателя Yahoo! Mail показывает как совпадающие имена, так и адреса электронной почты

   Рис. 8.12. Ресурс Kayak показывает коды как городов, так и аэропортов, когда пользователи указывают места отправления и прибытия

   Предоставьте доступ с клавиатуры для выбора элемента из предлагаемого списка
   Просить пользователей отложить клавиатуру и использовать мышь для выбора элемента из предложенного списка будет неэффективно. Поэтому дайте пользователям возможность перемещаться внутри предложенного перечня элементов, используя клавиши со стрелками вверх и вниз и выбирать выделенные элементы с помощью клавиш Enter или Tab. В поисковых приложениях можно позволить пользователям, нажав клавишу Enter, переходить непосредственно к странице с результатами поиска, а в веб-приложениях, имеющих дополнительные поля, следует переместить фокус на следующий логический элемент формы.
   Выделите первое совпадение в предлагаемом списке
   Выделите самое первое совпадение в предлагаемом списке (см. рис. 8.11 и 8.12), чтобы пользователи могли выбрать его, нажав клавишу Tab или Enter. Приложение должно затем вписать выделенный элемент в текстовое поле. Однако важно, чтобы пользователи указали свое намерение, нажав клавишу Tab или Enter, поскольку приложение не сможет сделать логический вывод из намерений пользователей и набрать остальной текст вместо них.
 //-- Связанные шаблоны проектирования --// 
   Шаблон AUTOSUGGEST/AUTOCOMPLETION обычно используется в обогащенных формах (RICH FORMS) и динамических запросах (DYNAMIC QUERYING), чтобы ограничить вводимую пользователями информацию правильными вариантами выбора и таким образом предотвратить возникновение ошибок.


   EDIT-IN-PLACE (РЕДАКТИРОВАНИЕ НА МЕСТЕ)

 //-- Проблема --// 
   Когда пользователи создают или редактируют элементы с помощью всего лишь нескольких свойств (не более чем 3 или 4), отображение всплывающего окна или перевод пользователей на отдельную «редакторскую» страницу делает взаимодействие неэффективным. Все потому, что пользователям приходится запускать редактор, вносить изменения, сохранять эти изменения и ждать, пока страница обновится, чтобы увидеть измененную информацию.
 //-- Решение --// 
   Разрешите пользователям создавать новый элемент или вносить изменения в характеристики существующего элемента «на месте», используя упрощенный редактор (рис. 8.13). В некоторых случаях, лучше предложить пользователям опцию «редактирование-на-месте» только для редактирования нескольких фрагментов информации о существующих элементах, но не для создания новых элементов. Например, в приложении, отслеживающем ошибки, изменение статуса существующей ошибки более подходит для редактирования «на месте», но при создании новой записи об ошибке опция «редактирование-на-месте» – не самый лучший вариант, поскольку ввод ошибки требует ввода нескольких кусков информации, например, краткого наименования, описания, шагов для воссоздания ошибки и т. д.
   (а)

   (б)

   Рис. 8.13. Когда пользователи наводят указатель мыши на доступный для редактирования элемент списка запланированных дел, Basecamp отображает опции Edit (Редактировать), Delete (Удалить) и Move (Переместить) (а). Когда пользователи нажимают кнопку Edit (Редактировать), им предоставляют редактор элементов списка запланированных дел с опциями Save this item (Сохранить этот элемент) и Cancel (Отмена) (б)

 //-- Зачем --// 
   Разрешить пользователям изменять свойства элемента в его первоначальном контексте, без открывания его в отдельном окне или перехода на новую страницу – это гораздо более простой способ предоставления или изменения нескольких фрагментов данных. Когда пользователям необходимо перейти на отдельную страницу, взаимодействие становится прерванным потому, что пользователям приходится ждать загрузки редактора, а затем переключать свое внимание на новый контекст.
 //-- Как --// 
   Когда пользователи активируют функцию редактирования, поместите элемент в режим «редактирование», показав его свойства в редактируемых полях (например, текстовые поля, выпадающие кнопки или другие необходимые средства управления формы). После этого пользователи смогут вносить необходимые изменения и либо сохранять, либо отменять свои изменения, чтобы вернуться в режим «для чтения» (рис. 8.14).
   (а)

   (б)

   Рис. 8.14. В Basecamp пользователи могут редактировать элемент отслеживания времени в строке. Когда пользователь нажимает кнопку Edit (Редактировать) рядом с элементом списка (а), элемент становится доступен для редактирования и опции Edit (Редактировать) и Delete (Удалить) меняются на Save (Сохранить) и Cancel (Отмена) (б)

   При необходимости используйте больше пространства для режима «редактирование». Кроме того, поскольку возможность редактирования текста может быть новой для пользователей Интернета, обеспечьте необходимые подсказки или инструкции, чтобы помочь им узнать, каким образом работает данная функция. Распространенным способом информирования пользователей является предоставление инструкций и/или действий при наведении пользователями курсора мыши на редактируемый элемент.
   Выделите текст для элементов только с одним редактируемым свойством
   Если изменяемый элемент обладает только одним редактируемым свойством (например, имя или название), выделите текст элемента так, чтобы пользователи могли просто переписать существующий текст (рис. 8.15).
   Рис. 8.15. Ресурс Flickr позволяет пользователям редактировать название фото, щелкнув по нему мышью. Когда пользователи щелкают по названию, текст названия выделяется по умолчанию, что позволяет пользователям изменить его

 //-- Связанные шаблоны проектирования --// 
   При сохранении редактируемой информации часто бывает полезно отображать индикатор ожидания/выполнения (DELAY/PROGRESS INDICATOR) для подтверждения прогресса процедуры сохранения. При использовании редактирования-на-месте (EDIT-IN-PLACE) для нового элемента в качестве указания на дополнения в элементе может использоваться метод SPOTLIGHT/YELLOW-FADE.


   OVERVIEW-PLUS-DETAIL (ОБЗОР И ДЕТАЛИ)

 //-- Проблема --// 
   Когда пользователям предоставляют большой набор данных, они могут захотеть увеличить разные области данных, чтобы получить доступ к подробной информации. В других случаях пользователям может потребоваться уменьшить масштаб до более высокого уровня «обзора», чтобы переориентироваться. Необходимость постоянного перемещения пользователей между обзором и детализированным видом делает навигацию в информационном пространстве крайне неэффективной.
 //-- Решение --// 
   Предоставьте пользователям панели обзора и детализированного вида с перемещаемым демонстрационным окном в панели обзора, показывающим увеличенное изображение области (рис. 8.16).
   Рис. 8.16. Ресурс Google Maps показывает панель обзора, снабженную демонстрационным окном, выделяющим увеличиваемую в данный момент область, в правом нижнем углу

 //-- Зачем --// 
   При работе с информационными пространствами, которые слишком велики, чтобы уместиться на экране, пользователи получают доступ к информации, увеличивая и уменьшая масштаб для просмотра желаемых подробностей.
   Позволяя пользователям просматривать информацию об интересующих их областях и одновременно видеть обзор (хотя и в гораздо более грубом разрешении), вы избавляетесь от необходимости уменьшения масштаба для доступа к другим областям информационного пространства. Предоставление пользователям возможности перемещать демонстрационные окна или манипулировать ими также облегчает быструю навигацию в информационном пространстве без потери связи. Кроме того, отображение демонстрационных окон в панели обзора помогает пользователям не потеряться в информационном пространстве; и, в сущности, отвечает на распространенный, связанный с ориентацией вопрос: где я?
   Данный шаблон базируется на одном из основных принципов визуализации информации: фокус плюс контекст.

   Во-первых, пользователю нужны и обзор (контекст), и подробная информация (фокус) одновременно. Во-вторых, информация, необходимая в виде обзора, может отличаться от той, которая требуется в подробностях. В-третьих, эти два типа информации могут быть объединены в рамках одного (динамического) отображения так же, как в человеческом зрении.
 Card et al., 1999

   Основное применение данного принципа в проектировании заключается в том, что выделенные, интересующие пользователя области отображаются более подробно (т. е. фокус), а глобальный вид при этом сохраняется, но отображается менее подробно (т. е. контекст) таким образом, что вся информация видна одновременно.
 //-- Как --// 
   Сделайте панель обзора доступной для пользователей в любое время. Она может быть расположена в виде вставки в панели подробностей (см. рис. 8.16) или находиться рядом с ней (рис. 8.17).
   Рис. 8.17. Google Finance располагает панели обзора и деталей одну над другой и позволяет пользователям видеть подробные тенденции изменения цен на акции, разрешая им регулировать размер демонстрационного окна в панели обзора

   Отобразите демонстрационное окно в обзоре, выделив увеличенную в данный момент часть панели подробностей. Разрешите пользователям перемещать демонстрационное окно в пределах панели обзора для увеличения различных областей обзора. Если пользователи могут прокручивать информацию в панели подробностей, следует перемещать демонстрационное окно в панели обзора вместе с ней. По возможности позвольте пользователям регулировать размер демонстрационного окна для изменения масштаба набора данных в панели подробностей.
   Например, Google Finance позволяет пользователям менять размер демонстрационного окна так, чтобы они могли увеличить или уменьшить диапазон дат в диаграмме тенденций изменения цен на акции (см. рис. 8.17).

 //-- Связанные шаблоны проектирования --// 
   При масштабировании и панорамировании окна просмотра или перемещении и/или изменении размера демонстрационного окна необходимо применять перетаскивание (DRAG-AND-DROP). Кроме того, чтобы позволить пользователям сохранить визуальную преемственность между состояниями, могут быть использованы некоторые типы визуальных эффектов (ANIMATION/TRANSITIONS).


   DYNAMIC QUERYING (ДИНАМИЧЕСКИЕ ЗАПРОСЫ)

 //-- Проблема --// 
   Когда пользователям предоставляют большое количество элементов, они могут захотеть «настроить» их критерии, чтобы сократить число элементов до управляемого набора.
   Несмотря на то что традиционные механизмы фильтрации решают эту проблему (см. шаблон FILTERING в главе 6), взаимодействие пользователей может быть затруднено, поскольку при каждом выборе фильтрации пользователям необходимо «представить» свои критерии и ждать обновления страницы, чтобы увидеть обновленный список элементов.
 //-- Решение --// 
   Позвольте пользователям фильтровать элементы при помощи набора интерактивных средств управления (например, ползунков, флажков, селективных кнопок и т. д.) так, чтобы при каждом выборе они могли видеть обновленные результаты и не были вынуждены ждать обновления страницы (рис. 8.18).
   Рис. 8.18. Ресурс Blue Nile позволяет пользователям сузить ассортимент бриллиантов, разрешив им фильтровать их по цене, шлифовке, цвету, прозрачности, а также каратам. Диапазон для каждого выбора определяется пользователями с помощью ползунков

 //-- Зачем --// 
   В традиционных веб-приложениях для фильтрации пользователям необходимо провести сужающийся отбор, представить его на сервер, и ждать, чтобы просмотреть улучшенный набор результатов после обновления. Совершая каждый раз выбор при фильтрации, пользователи проходят один и тот же процесс, что приводит к перерывам в работе. RIA устраняют подробные операции по «представлению» и сопровождающие их обновления страницы, обеспечивая тем самым более гибкую и интерактивную работу.
 //-- Как --// 
   Представьте пользователям критерии в виде набора флажков, ползунков, селективных кнопок, а также ссылок и результатов поиска. По мере того как пользователи делают выбор, сужайте или расширяйте набор результатов без перезагрузки страницы, позволяя пользователям сразу видеть последствия их выбора (рис. 8.19).
   Рис. 8.19. Kayak позволяет пользователям фильтровать соответствующие рейсы по количеству остановок, авиакомпании, времени прибытия и отправления, аэропортам, куда прибывает и откуда отправляется рейс и по нескольким другим опциям

   Насколько возможно, сделайте все строки меню видимыми для пользователей и сведите к минимуму использование выпадающих списков или скрытых (каскадных) опций.
 //-- Связанные шаблоны проектирования --// 
   Несмотря на то что динамические запросы (DYNAMIC QUERYING) – это эффективный способ показать пользователям отфильтрованный набор данных практически в реальном времени, задержки обработки неизбежны. Поэтому данный шаблон обычно сопровождается шаблоном DELAY/PROCESS INDICATORS.


   LIVE PREVIEW (ПРЕДПРОСМОТР В РЕАЛЬНОМ ВРЕМЕНИ)

 //-- Проблема --// 
   В отличие от готовых серийных продуктов, во многих новых продуктах один или несколько атрибутов могут быть настроены в соответствии с предпочтениями пользователей. Например, при покупке автомобиля пользователи могут заказать его цвет, отделку и другие опции и аксессуары. Однако невозможность увидеть результат выбора оставляет пользователей неуверенными в своем выборе и препятствует освоению других возможностей. Кроме того, заставлять пользователей ждать проявления результата внесенных ими изменений после каждого выбора может быть утомительно.
 //-- Решение --// 
   Предложите пользователям возможность предварительного просмотра элемента с их выбором сразу, без необходимости «представления» выбора и ожидания обновления страницы (рис. 8.20).
   Рис. 8.20. Веб-сайт BMW позволяет пользователям модифицировать свои машины, разрешая им выбирать цвета экстерьера и интерьера (среди прочих опций). Когда пользователи делают выбор, его результат сразу же отражается на изображении и в цене. BMW также предлагает опции Undo (Отменить) и Redo (Выполнить повторно), что облегчает пользователям возвращение к предыдущему результату выбора

 //-- Зачем --// 
   Предоставление пользователям возможности просматривать результаты их выбора помогает им решить, хотят ли они сохранить, изменить или отменить свой выбор. Кроме того, предлагая немедленную обратную связь, предпросмотр в режиме реального времени побуждает к освоению, невозможному в традиционных веб-приложениях, требующих от пользователей сделать выбор, запросить предварительный просмотр и ждать, пока приложение отобразит результаты их выбора.
   Это похоже на шаблон RICH-TEXT EDITOR, где пользователи изменяют цвет текста и форматируют его, а затем сразу же видят результаты в стиле WYSIWYG.
 //-- Как --// 
   Предложите пользователям опции изготовления на заказ вместе с фактическим изображением элемента. По мере того как пользователи выбирают различные опции, обновляйте изображение элемента, чтобы отразить их выбор.
   Рассмотрите возможности демонстрации элемента, модифицированного клиентом, с разных ракурсов
   Для трехмерных предметов или продуктов, обладающих множеством поверхностей, предоставьте пользователям несколько ракурсов отображения элемента, измененного в соответствии с их пожеланиями так, чтобы они четко понимали последствия своего выбора.
   Например, Nike позволяет пользователям просматривать модифицированную в соответствии с их требованиями обувь с различных углов, к примеру, сверху, сбоку, спереди и т. д. (рис. 8.21). А BMW позволяет пользователям переключаться между видом спереди и сзади для модифицирования экстерьера «под себя» (рис. 8.20), а также между видом места водителя и видом приборной панели для изменения интерьера (рис. 8.22).
   Рис. 8.21. NIKEiD предоставляет пользователям обзор модифицированного в соответствии с их пожеланиями товара с различных углов

   Рис. 8.22. BMW предлагает пользователям вид кресла водителя и приборной панели при изменении интерьера автомобиля

   Ресурс Lands End, с другой стороны, предлагает не только вид спереди и вид сзади, но и вид модели с модифицированным элементом (рис. 8.23).
   Рис. 8.23. Веб-сайт Lands End демонстрирует модель в одежде, измененной в соответствии с требованием заказчика

 //-- Связанные шаблоны проектирования --// 
   Как уже упоминалось, шаблон LIVE PREVIEW аналогичен шаблону RICH-TEXT EDITOR в том, что он пытается обеспечить пользователям WYSIWYG просмотр по мере произведения ими выбора. Кроме того, предварительный просмотр полезен при настройке пользователями интерфейса; CUSTOMIZATION также является важным шаблоном (см. главу 4).


   DRAG-AND-DROP (ПЕРЕТАСКИВАНИЕ)

 //-- Проблема --// 
   Традиционные веб-приложения требуют непрямых методов перегруппировки или переупорядочивания элементов данных. Например, пользователь может изменить порядок в списке элементов одним или двумя способами: выбрать нужный элемент и указать действие «вверх» или «вниз» или ввести желаемый порядок элементов в текстовые поля и выбрать действие «переупорядочить».
   Несмотря на то что оба этих подхода являются разумными, они не предоставляют пользователям непосредственной обратной связи после их действий и могут быть обременительными даже для относительно коротких списков.
 //-- Решение --// 
   Позвольте пользователям напрямую управлять элементами данных и/или компонентами страницы, используя стиль взаимодействия «перетаскивание» (рис. 8.24).
   Рис. 8.24. Сервис My MSN позволяет пользователям перетащить столбцы, чтобы настроить их порядок

 //-- Зачем --// 
   В веб-приложениях без RIA перемещение или перегруппировка элементов данных, как правило, требует перехода пользователей на другую страницу, где последствия изменений не видны до тех пор, пока желаемая перестройка не будет представлена на сервер, а первоначальная страница не обновится, чтобы отразить новый порядок или макет.
   Используя методы прямого вмешательства, аналогичные широко применяемым в большинстве настольных приложений (например, удаление документа путем перетаскивания его в корзину), можно сделать взаимодействие эффективным и поощрить освоение.
 //-- Как --// 
   Разрешите пользователям перетащить элементы данных (компоненты) с их нынешнего места, переместить их на новое место и положение и оставить их там.
   Перетаскивание может использоваться для следующих целей:
   • перегруппировка элементов в списке (рис. 8.25);
   Рис. 8.25. Ресурс Ta-Da Lists позволяет пользователям изменять порядок элементов в списке с помощью механизма перетаскивания

   • перемещение накладывающихся всплывающих окон с одного места на другое (рис. 8.26);
   Рис. 8.26. Ресурс Live Maps корпорации Microsoft позволяет пользователям перемещать всплывающее окно блокнота путем перетаскивания. Это также увеличивает прозрачность блокнота, позволяя пользователям видеть карту, и указывает на режим «перетаскивания»

   • составление списков, такое как добавление товара в корзину (рис. 8.27);
   Рис. 8.27. Ресурс Rally позволяет пользователям перемещать объекты из Product Backlog (Журнал пожеланий) в раздел Release (Выполнить), что помогает планированию и достижению высоких целей

   • обозначение действия (рис. 8.28);
   Рис. 8.28. Сервис iGoogle позволяет пользователям поместить «портлет» во вкладку, что означает перемещение его в данную вкладку. На этом примере показано, что портлет Stock Market (Рынок ценных бумаг) перетаскивают из вкладки Home (Главная) во вкладку Finance (Финансы)

   • изменение размера объекта (рис. 8.29).
   Рис. 8.29. Веб-сайт Picnik позволяет пользователям изменять размер изображения с помощью перетаскивания

   При поддержке перетаскивания важно, чтобы пользовательский интерфейс был чувствительным, и изменения отображались немедленно без каких-либо задержек.
   Предложение необходимых эффордансов для областей перетаскивания
   Важно, чтобы в интерфейсе пользователя было четко указано, какие объекты можно (или нельзя) перетащить, а также в какие области их можно (нельзя) поместить. Это возможно осуществить:
   • отобразив четкие метки для перетаскивания;
   • изменив указатель мыши на значок «переместить» () при наведении на элементы, которые можно перетащить, установив CSS-свойства cursor на move. При использовании перетаскивания для изменения размера используйте значок «изменение размера» (\), установив CSS-свойства cursor на nw-resize, sw-resize, w-resize и т. д. по мере необходимости;
   • выделив зоны размещения объекта при его перетаскивании;
   • не выделив зоны, не подходящие для размещения объекта, которые должны отмечаться значком «запрещенные» (Q) при установке CSS-свойства cursor на not-allowed.

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

 //-- Связанные шаблоны проектирования --// 
   Шаблон DRAG-AND-DROP также используется для осуществления выбора с помощью ползунков (SLIDER) в динамических запросах (DYNAMIC QUERYING) и перемещении или корректировке размеров в шаблоне OVERVIEWPLUS-DETAIL.


   SLIDER (ПОЛЗУНОК)

 //-- Проблема --// 
   Указание одного или нескольких значений из диапазона может привести к ошибке, так как пользователи должны знать допустимые значения. Кроме того, им также необходимо знать точность желаемого ввода (например, 10 в отличие от 10,1 и в отличие от 10,12). И хотя подобная информация может быть включена в проект страницы, страница может получиться беспорядочной, поскольку число элементов формы, требующих ввода таких данных, увеличивается.
 //-- Решение --// 
   Предложите пользователям управление с помощью ползунка, указав допустимый диапазон значений. Затем пользователи могут перетащить ползунок (-и), чтобы установить значение (рис. 8.30) или диапазон значений (рис. 8.31).
   Рис. 8.30. Ресурс Picnik использует различные ползунки, чтобы предоставить пользователям возможность управлять параметрами изображения, такими как выделение, тени, гистограмма, выдержка, контрастность и т. д

   Рис. 8.31. Ресурс Kayak использует два маркера для каждого ползунка раздела Flight Times (Расписание полетов), чтобы пользователи могли установить диапазон времени Leave (Отправления) и Return (Возвращения)

 //-- Зачем --// 
   В традиционных веб-приложениях из-за отсутствия встроенной поддержки управления ползунком в текущей версии HTML пользователям предлагается текстовое поле, набор селективных кнопок, раскрывающиеся списки для указания одного или нескольких значений в пределах диапазона.
   Однако ползунки обеспечивают более простой и прямой метод выбора значения в пределах диапазона (Galitz, 2002). Кроме того, они предотвращают ошибки пользователей в отличие от ввода значений в текстовые поля. Еще одним важным преимуществом ползунков является то, что диапазон данных может быть как непрерывным, так и дискретным, а дизайн ползунка может передать необходимую точность ввода данных пользователем. Кроме того, с помощью ползунка значения можно выбрать быстрее, чем с помощью селекторной кнопки или текстового поля.
 //-- Как --// 
   Позвольте пользователям установить одно значение или диапазон значений, перетащив ползунок(-и) с помощью средств управления ползунками. В дополнение к перетаскиванию позвольте пользователям нажимать непосредственно на указатель для перемещения ползунка в указанную позицию. Предоставьте пользователям также возможность управления ползунком с помощью клавиш со стрелками влево, вправо, вверх и вниз на клавиатуре. Важно, чтобы стрелки соответствовали ориентации ползунка, т. е. левая и правая стрелки должны работать для горизонтальных ползунков, а стрелки вверх и вниз – для вертикальных. Однако принято также иметь и другой рабочий набор стрелок. Наконец, по возможности, позвольте пользователям просто вводить значение в текстовое поле (рис. 8.32).
   Рис. 8.32. Ресурс Splashup (Faux Labs) позволяет пользователям указывать цвет, введя значения RGB (красный, зеленый, синий) или соответствующие значения в шестнадцатеричном формате. В силу контекста и знакомства пользователей с выбором цвета в других настольных приложениях для редактирования изображений предоставление словесного описания для ползунков не является необходимым

   Чаще всего ползунок применяется для выбора значения на непрерывной шкале в пределах допустимых значений. Однако когда пользователи могут выбрать только дискретные значения в заданном диапазоне, следует использовать прерывистый ползунок, который при перетаскивании будет перемещаться от одного значения к другому, чтобы пользователи не рассматривали значения, находящиеся между двумя дискретными величинами (рис. 8.33). Пользователи должны иметь возможность нажать на любое дискретное значение, чтобы ползунок переместился к нему.
   Рис. 8.33. Сервис CheapTickets использует прерывистый ползунок, позволяя пользователям устанавливать критерии сортировки для рейтинга звезд отелей и свои оценки

   Используйте описательные якоря для значений полосы ползунка
   При использовании ползунков для непрерывных значений применяйте якорные метки (например, дескрипторы или иконки) на конце полосы ползунка (см. рис. 8.33). Для ползунков с дискретными значениями используйте метки на каждом конце, как и для каждого крупного значения полосы ползунка (см. рис. 8.33). Для ползунков, передающих цвета или другие многокритериальные значения, метки могут не требоваться, однако для цветов отобразите все значения атрибутов, таких как RGB или шестнадцатеричные значения (см. рис. 8.32).
   Информируйте пользователей о выбранном значении(-ях)
   При использовании ползунков как с непрерывными, так и с прерывистыми значениями пользователи всегда должны знать выбранное значение(-я). Кроме того, покажите пользователям все значения в случае, когда выбранные значения затрагивают более одного (например, определение цвета с помощью RGB, CMYK [голубой, пурпурный, желтый, черный] или шестнадцатеричных значений) (см. рис. 8.32).
 //-- Связанные шаблоны проектирования --// 
   Шаблон DRAG-AND-DROP важен для работы средств управления ползунком, так как пользователи перетаскивают ползунок для указания своего выбора. Управление ползунком также обычно используется в динамических запросах (DYNAMIC QUERYING) и может быть применено в обогащенной форме (RICH FORMS) для указания одного или нескольких значений в пределах диапазона.


   ANIMATIONS/TRANSITIONS (АНИМАЦИИ/ПЕРЕХОДЫ)

 //-- Проблема --// 
   Важное эвристическое правило практичности заключается в том, чтобы «уведомлять пользователей» об изменениях в интерфейсе (Nielsen and Molich, 1990). При использовании RIA часто меняется только часть интерфейса, и вполне вероятно, что пользователи не будут знать об этих изменениях, поскольку они сосредоточены на других областях интерфейса.
   Кроме того, когда в результате взаимодействия пользователей с приложением происходит изменение состояния страницы (например, показ следующего набора фотографий при использовании шаблона CAROUSEL или изменение масштаба изображения), отображение только конечного состояния без показа пользователям промежуточных может быть резким и дезориентирующим, поскольку им может быть трудно понять связь между начальным и конечным состоя ниями.
 //-- Решение --// 
   Используйте соответствующие визуальные эффекты (например, переходы и анимации) для привлечения внимания пользователей к изменениям на странице (рис. 8.34).
   Рис. 8.34. При добавлении товара в корзину для покупок Gap смещает корзину вниз на той же странице, чтобы указать, что выбранный товар был добавлен в нее. Это устраняет необходимость перехода пользователей на страницу корзины и создания кнопки Continue Shopping (Продолжить покупки), метод взаимодействия, обычно применяемый многими сайтами, занимающимися продажами через Интернет и не использующими RIA

 //-- Зачем --// 
   Так как наше периферийное зрение приспособлено для обнаружения движения (Faraday and Sutcliffe 1997; Peterson and Dugas, 1972), использование анимации для направления внимания пользователей на изменения на странице является практичным и эффективным методом, особенно для RIA, где страница не обновляется при внесении изменений в ее контент. Анимации и переходы также обладают эстетической ценностью, которую нельзя игнорировать. Они делают веб-приложения интерактивными и динамическими и содействуют формированию «клевого» имиджа RIA, чего нельзя сказать о традиционных веб-приложениях, которые имеют ограниченный набор относительно статичных изображений и макетов в визуальных проектах.
 //-- Как --// 
   Для RIA используйте анимацию, изменяющую внешний вид элементов страницы, но не их положение (рис. 8.35, см. рис. 8.46 далее в этой главе) или перемещающую их с одного места на другое, но не обязательно меняющую их внешний вид (см. рис. 8.34).
   (а)

   (б)

   Рис. 8.35. Когда пользователи наводят указатель мыши на логотип Amazon (а), его внешний вид меняется (б), и он становится похожим на кнопку. Это самый основной тип анимации

   Пользователям могут показать очень простую анимацию, чтобы продемонстрировать, что система занята загрузкой информации или сохранением данных (рис. 8.36, см. шаблон ICONS в главе 12).
   Рис. 8.36. Широко используемая в RIA анимированная иконка «Пожалуйста, подождите»

   В некоторых случаях аналогичная анимация может быть использована для создания задержки, чтобы показать пользователям, что их просьба была получена. Когда анимация исчезает, они знают, что запрос был обработан и можно продолжать работу; анимированный индикатор выполнения может быть использован при более длительном ожидании (см. шаблон DELAY/PROGRESS INDICATOR далее).
   После успешной обработки запросов пользователей фон обновленного элемента может поблекнуть и лишь едва различимо обозначать изменения на странице (см. шаблон SPOTLIGHT/YELLOW-FADE далее в этой главе).
   Используйте переходы при добавлении или удалении контента на странице
   При отображении нового контента страницы (или показе скрытого контента) используйте соответствующие эффекты перехода. Например, при показе нового контента подумайте об использовании эффекта перехода в виде смещения вниз (вверх, вправо или влево) (рис. 8.37).
   (а)

   (б)

   Рис. 8.37. Когда пользователь щелкает по ссылке Invite a new member (Пригласить нового участника) (а), Campfire использует переход со смещением вниз, чтобы показать редактор Invite new members (Пригласить новых участников)(б)

   Эффекты перехода со смещением вниз и вверх являются наиболее распространенными для действий по раскрыванию и свертыванию, соответственно, в древовидной структуре или при использовании средств управления «аккордеон» для меню.
   Направление перехода должно сочетаться с направлением, подразумеваемым действием пользователя. Например, если пользователи нажимают кнопку «Далее», используйте смещение влево и, наоборот, используйте смещение вправо, когда пользователи нажимают кнопку «Назад» (рис. 8.38, см. шаблон CAROUSEL далее в этой главе).
   Рис. 8.38. Когда пользователи нажимают на кнопки со стрелками «Далее» или «Назад», Hulu применяет переходы со смещением влево и вправо соответственно для отображения следующей или предыдущей детали эпизода

   Воспроизведение анимаций должно быть кратким
   Целью анимации должно быть привлечение внимания пользователей и информирование их о чем-то. Как только это сделано, анимация должна либо остаться статичной, либо исчезнуть, ее цикл не должен быть бесконечным.
   Исключите неуместные анимации
   Анимация является эффективным инструментом только тогда, когда служит определенной цели, такой как сообщение об изменениях состояния и/или улучшение взаимодействия. Поскольку анимированные элементы страницы привлекают внимание пользователей, легкомысленные анимации отвлекают внимание пользователей от значимой информации на странице. Поэтому не следует использовать анимацию необоснованно – она отвлекает. К неуместным анимациям, ничего не сообщающим, относятся визуальные эффекты, такие как использование отмеченных областей (конечно, это допустимо при показе ленты тиккера).
 //-- Связанные шаблоны проектирования --// 
   Еще один способ держать пользователей в курсе изменений интерфейса – использование шаблонов DELAY/PROGRESS INDICATORS и SPOTLIGHT/YELLOW-FADE.


   DELAY/PROGRESS INDICATOR (ИНДИКАТОР ОЖИДАНИЯ/ВЫПОЛНЕНИЯ)

 //-- Проблема --// 
   Несмотря на то что RIA стремятся обеспечить обратную связь в режиме реального времени, пользователи часто сталкиваются с заметными задержками при работе сервера или обработке данных, перед тем как будет завершена обработка и представлена новая информация.
 //-- Решение --// 
   Покажите пользователям индикатор ожидания, намекая, что система занята обработкой запроса (рис. 8.39), или индикатор выполнения, чтобы не только указать, что система занята, но и отразить прогресс в процентах, обозначающих выполненную работу, этап обработки, оставшееся время или их сочетание (рис. 8.40).
   Рис. 8.39. Индикатор выполнения при поиске бриллиантов на ресурсе Amazon (небольшая задержка)

   Рис. 8.40. Ресурс Kayak использует индикатор выполнения при поиске соответствующей информации об авиаперелетах (длительная задержка)

 //-- Зачем --// 
   Отображение индикаторов ожидания/выполнения служит двум целям.
   1. Они сообщают пользователям, что приложение получило их запрос и работает над ним.
   2. Они держат пользователей в курсе того, на какой стадии обработки запроса находится приложение.
   Пользователи могут использовать эту информацию, чтобы прогнозировать количество времени, которое они должны подождать и могут решить отменить операцию. Как и шаблон ANIMATIONS/TRANSITIONS, индикаторы выполнения обеспечивают необходимую обратную связь с пользователями и информируют их о состоянии системы (Galitz, 2002; Nielsen and Molich, 1990).
 //-- Как --// 
   В зависимости от длительности задержки, для указания процесса выполнения могут быть использованы различные подходы. Для коротких задержек (менее 10–15 секунд), индикаторы выполнения могут быть представлены в форме:
   • текстовых сообщений, таких как «Загрузка» или «Подождите, пожалуйста…» (рис. 8.41).
   Рис. 8.41. Ресурс Kayak использует сообщение «Обновление результатов» («Updating results») для небольших задержек

   • анимированных иконок (например, песочные часы) (см. рис. 8.36).
   Для длительных задержек (более чем на 10–15 секунд) используйте индикатор, отображающий степень выполнения и показывающий состояние и/или оценку оставшегося времени. Если выполнение действия займет много времени, предоставьте пользователям возможность отменить операцию в любой момент (рис. 8.42).
   Рис. 8.42. При загрузке фото Picnik использует индикатор, показывающий степень прогресса. Пользователям также предлагается возможность отменить процесс загрузки в любой момент

   При очень длительных задержках покажите информацию о состоянии или другой привлекательный контент, чтобы задержка казалась короче (рис. 8.43).
   Рис. 8.43. Ресурс Picnik использует интересные сообщения индикатора прогресса (например, «Взбиваю облака» («Fluffing clouds») или «Разбрызгиваю росу» («Sprinkling dew»)) во время загрузки приложения

 //-- Связанные шаблоны проектирования --// 
   Обработка задержек, как правило, коротких, довольно часто встречается при осуществлении динамических запросов (DYNAMIC QUERYING) и редактировании-на-месте (EDIT-IN-PLACE). Если пользователей необходимо проинформировать о любых изменениях на странице после завершения обработки, шаблон SPOTLIGHT/YELLOW-FADE может оказаться полезным.


   SPOTLIGHT/YELLOW-FADE (ПРОЖЕКТОР/ЖЕЛТОЕ ВЫЦВЕТАНИЕ)

 //-- Проблема --// 
   Часто очень важно обратить внимание пользователей на конкретные изменения страницы, вызванные действиями пользователя или внесенные системой. Так как эти изменения не достаточно значимы, чтобы выделять обновленную информацию (см. шаблон HIGHLIGHT в главе 12), и поскольку некоторые элементы на странице могут быть изменены с течением времени, постоянное выделение может привести к тому, что интерфейс будет выглядеть загроможденным. Не стоит размещать сообщения, информирующие пользователей об изменениях, в таких приложениях, которые предназначены для мониторинга и показывают оперативные данные, например, котировки акций или спортивных соревнований. Это может сделать интерфейс нестабильным и рассеивающим внимание, поскольку значения в таких интерфейсах постоянно меняются.
 //-- Решение --// 
   Выделите измененную область на очень короткий период времени – как прожектором – чтобы создать эффект анимации, который привлечет внимание пользователей. Данный подход является вариантом техники медленно исчезающего желтого фона, предложенной Линдерманом (Линдерман, 2007): недавно измененная область на странице слегка освещается (рис. 8.44).
   (а)

   (б)

   (в)

   Рис. 8.44. Когда пользователи возвращаются к странице с недавними изменениями, измененная область выделена (а). Через несколько секунд она постепенно затухает (б) и возвращается к нормальному цвету фона (в). Таким образом, изменения доведены до сведения пользователей без загромождения интерфейса. (Источник: Линдерман, 2007.)

 //-- Зачем --// 
   Подобный метод кратковременного выделения помогает обеспечить эффект, напоминающий анимацию, достаточный для быстрого привлечения внимания пользователя к изменению в случае, когда на данной странице происходят относительно небольшие изменения. Кроме того, поскольку эффект является преходящим, то пользователи не будут отвлекаться и смогут вернуться к задаче, а интерфейс останется не загроможденным.
 //-- Как --// 
   Чтобы создать эффект, подобный анимации, ненадолго выделите измененный контент (не более чем на несколько секунд). Выберите ненасыщенный цвет выделения, который обеспечит заметное отличие от остального фона (рис. 8.45).
   (а)

   (б)

   (в)

   Рис. 8.45. Ресурс Picnik использует технику прожектора при применении метода Exposure ⇒ Autofix (Экспозиция ⇒ Автоматическая настройка). Использование данного метода устраняет необходимость выделения определенной области интерфейса для подобных сообщений. Кроме того, поскольку сообщение исчезает в течение нескольких секунд, пользователям не придется отключать его, и они могут продолжить работать с изображением

 //-- Связанные шаблоны проектирования --// 
   Использование шаблона SPOTLIGHT/YELLOW-FADE является довольно распространенным при редактировании-на-месте (EDIT-IN-PLACE) и в порталах (PORTALS) с портлетами, которые обеспечивают обновления данных в режиме реального времени (см. главу 4).


   CAROUSEL (КАРУСЕЛЬ)

 //-- Проблема --// 
   Общее число элементов (изображений или сочетаний изображения и текста), которые будут представлены пользователям, не может быть размещено в имеющемся пространстве.
 //-- Решение --// 
   Отобразите элементы в виде «карусели», чтобы пользователи могли быстро их просматривать. Хотя понятие карусели и вызывает в воображении круговую структуру, облегчающую навигацию вперед и назад, многие случаи применения карусели являются линейными и работают как демонстрационные окна, позволяющие пользователям просматривать несколько элементов одновременно и перемещаться вперед и назад для доступа к остальным элементам (рис. 8.46).
   Рис. 8.46. Flickr использует метод карусели в своем слайд-шоу

 //-- Зачем --// 
   Карусель обеспечивает пользователям доступ к нескольким элементам на относительно небольшой области экрана и позволяет проектировщикам выделить больше места для каждого элемента. Использование круговой карусели также позволяет пользователям получать доступ к элементам, нажав как стрелку влево, так и стрелку вправо. Карусели наиболее часто используются для изображений, например, при просмотре фотоальбомов (www.flickr.com), списков фильмов, музыки или книг (movies.yahoo.com, www.amazon.com) или списков объектов недвижимости (www.zillow.com, www.funda.nl).
 //-- Как --// 
   Представьте элементы в карусели вертикально или горизонтально в виде «полосы» со средствами навигации (обычно стрелки) на каждом ее конце (рис. 8.47). В проектах, где карусель выполнена в виде слайд-шоу, необходимо выделить элемент, просматриваемый в данный момент (см. рис. 8.46). Кроме того, для указания отношения между элементами используйте эффект перехода «смещение», когда один набор элементов в карусели заменяется следующим.
   Рис. 8.47. Amazon представляет элементы в карусели по горизонтали с крупными кнопками с каждой стороны

   Предоставьте пользователям информацию о наличии или отсутствии дополнительных элементов
   При использовании линейных каруселей сообщите пользователям, доступны ли дополнительные материалы, включив или выключив стрелки влево и вправо, соответственно. Например, когда пользователи достигнут конца карусели, отключите стрелку вправо, и когда пользователи вернутся к первому пункту, отключите стрелку влево. Для указания, что пользователи достигли первого или последнего элемента группы, может также использоваться разбиение на страницы (рис. 8.48). Кроме того, может быть показано частичное изображение предыдущего или следующего элемента в карусели (рис. 8.49).
   Рис. 8.48. Yahoo! Food использует стрелки навигации вправо и влево для просмотра. Кроме того, поскольку используется линейная карусель, для указания «раздела», просматриваемого пользователем в данный момент, применяются индикаторы (в виде точек), подобные разметке страниц

   Рис. 8.49. Pandora показывает частичные изображения предыдущей и следующей песни для обозначения наличия дополнительных элементов карусели

 //-- Связанные шаблоны проектирования --// 
   Карусели используют визуальные эффекты (ANIMATIONS/TRANSITIONS), такие как смещение влево, вправо, вверх и вниз, чтобы позволить пользователям поддерживать визуальный контекст между элементами карусели. В линейных каруселях, чтобы показать местоположение пользователей в карусели, используйте индикаторы разбиения на страницы (PAGINATION) (см. главу 6).


   Проблемы практичности, неизбежно возникающие при RIA

   Как и любые другие веб-приложения, RIA низкого качества могут оказаться неудобными и должны быть проверены на удобство пользования. На самом деле существуют некоторые проблемы удобства пользования, присущие RIA, о которых должны знать проектировщики. Эти проблемы связаны с использованием кнопки «Назад» и функциональными возможностями закладок (или избранных).
 //-- Проблемы с кнопкой «Назад» --// 
   Пользователи, не привыкшие к использованию веб-приложений в стиле RIA, могут не знать, что часть страницы может обновляться, поэтому, когда они видят, что фрагмент страницы изменился, они могут подумать, что перешли на новую страницу.
   Для возврата в предыдущее состояние приложения они могут затем попытаться нажать кнопку браузера «Назад», которая приведет их вместо этого на предыдущую страницу в истории браузера. И хотя пользователи пытаются отменить предыдущие действия, они обычно оказываются совершенно вне контекста своей задачи и потенциально могут потерять данные.
   Распространенное решение этой проблемы – предоставление пользователям возможности отменять свои действия на той же странице. Однако важнее понять естественное поведение пользователей при работе с приложением и определить, является ли метод RIA подходящим для выполнения данной задачи.
   Хорошим примером является почта Gmail, использующая RIA для списков или электронной почты (например, Inbox (Входящие), Starred (Избранные), Sent Mail (Отправленные) и т. д.) и при просмотре разговоров (т. е. хронологического потока электронных обменов), но позволяющая пользователям использовать кнопку браузера «Назад», чтобы вернуться со страницы разговора на страницу списка (рис. 8.50).
   (а)

   (б)

   Рис. 8.50. Когда пользователи нажимают на разговор в списке (а), Gmail переносит их на отдельную страницу (б). Это позволяет пользователям нажать «Назад» в браузере для возврата на страницу списка со страницы разговора

 //-- Проблема установки закладок --// 
   Поскольку местонахождение/адресная строка браузера остается точно такой же, когда пользователи выбирают функции и изменяют состояния приложения, превращение установки закладок в самостоятельные представления приложения невозможно.
   Хотя существуют некоторые умные подходы, решающие проблему установки закладок путем переписывания URL-адресов, это обычно не является большой проблемой для веб-приложений, поскольку пользователям не требуется устанавливать закладки конкретных состояний. Более подробную информацию о перезаписи URL, см. в книге «AJAX: How to Handle Bookmarks and Back Buttons», Brad Neuberg (2005) на веб-сайте www.onjava.com/pub/a/onjava/2005/10/26/ajax-handling-bookmarks-and-back-button.html.



   Глава 9
   Социальные приложения


   Введение

   В большей степени веб-приложения разрабатываются, чтобы поддержать пользовательское участие и распространение информации. Пользовательское участие обычно представляет собой форму содержимого, вносимого пользователем, когда пользователи добавляют свой собственный контент в приложение (ADD/UPLOADCONTENT) и описывают его при помощи тегов (TAGGING). Другие способы пользовательского участия – это обеспечение рейтинга (RATINGS) и отзывов (REVIEWS) по контенту, предлагаемых приложением. Многие приложения также вовлекают пользователей в продвижение позиций, позволяя им голосовать за их полезность и значимость (VOTE TO PROMOTE).
   Чтобы убедиться, что пользовательское участие ведет к надежному онлайн-сообществу, пользователям необходимо открыть аккаунт в приложении и создать профайл пользователя (USER PROFILE). Несмотря на то что для продуктов и услуг доверие может быть установлено через рейтинги (RATINGS) и обзоры (REVIEWS), для пользователей важно, что они могут достичь высокой репутации (REPUTATION), особенно если они хотят взаимодействовать в Интернете или получить признание других членов сообщества. Один из аспектов репутации основан на величине социальной сети пользователя. Вследствие этого социальные приложения помогают пользователям соединяться с другими, имеющими аналогичные интересы, биографические данные и жизненный опыт (DISCOVER NETWORK MEMBERS). Будучи один раз обнаруженными, они не только могут добавить их в друзья (FRIEND LIST) и/или приобщиться к их активностям в онлайне, но также могут создавать группы, чтобы обсуждать и делиться общими интересами (GROUPS/ SPECIAL–INTEREST COMMUNITIES). Социальные приложения также облегчают взаимодействие между друзьями, позволяя им общаться в режиме реального времени, отправлять друг другу сообщения и писать комментарии в распределенных разделах (MESSAGING). Для стимулирования отправки сообщений в режиме реального времени также важно передавать онлайн-статус пользователя (PRESENCE INDICATOR).
   Участие и взаимодействие дополнительно улучшаются, когда пользователи могут размещать фотографии, новые истории, видео, закладки и другой контент – зачастую упоминающийся как социальные объекты – и просматривать их со своими друзьями и доверенными коллегами (SHARING) или работать вместе, чтобы согласовать свои действия и события или создавать контент совместно (COLLABORATION).


   ADD/UPLOAD CONTENT (ДОБАВЛЕНИЕ/ЗАГРУЗКА КОНТЕНТА)

 //-- Проблема --// 
   Пользователям нужно передавать файлы контента, например, музыку, фотографии, презентации и т. д., со своих собственных компьютеров на другие со стороны провайдера приложения, чтобы поделиться ими с другими пользователями.
 //-- Решение --// 
   Предоставьте пользователям способ загрузки одного или более файлов контента. В дополнение, если это подходит, позвольте пользователям описывать (и добавлять теги) контент, а также указывать в своих предпочтениях, кто может просматривать его (рис. 9.1).
   Рис. 9.1. SlideShare позволяет пользователям загружать контент (например, презентации), а также предоставляет возможность описывать и помечать его, чтобы упростить поиск и шаринг В дополнение к этому, обеспечивая загрузку контента, SlideShare предлагает несколько вариантов загрузки: массовая загрузка, единичная загрузка, загрузка посредством URL, загрузка посредством электронной почты и встраиваемая программа (плагин) в браузер

 //-- Зачем --// 
   Упрощение процесса загрузки файлов обязательно для веб-приложений, которые полагаются на пользователей, обеспечивающих им контент. Более того, чтобы облегчить для пользователей поиск своего загруженного контента, позвольте им проставлять теги (см. шаблон TAGGING ниже).
 //-- Как --// 
   В большинстве случаев пользователи держат файлы контента на своих компьютерах, поэтому загрузку этих файлов с их компьютеров нужно сделать простой. Когда пользователи имеют возможность загрузить несколько файлов одновременно, например при загрузке фотографий, позвольте им выбрать множество файлов и загрузить их все вместе (рис. 9.2).
   Рис. 9.2. Flikr позволяет пользователям выбирать и загружать множество фотографий одновременно

   Разрешите пользователям копировать файлы с других онлайн-ресурсов
   В тех случаях когда пользователи уже могут иметь свои загруженные файлы (например, фотографии) на сайтах вроде Picasa или Flickr, упростите для них передачу файлов напрямую с тех аккаунтов (рис. 9.3), прежде чем заставлять их искать файлы на своих компьютерах или сохранять их с исходного сайта на свои компьютеры, прежде чем загрузить их снова.
   Рис. 9.3. MyFolia позволяет пользователям импортировать фотографии со своих аккаунтов в Picasa, Flickr или Gravatar

   Разрешите пользователям удалять выбранные файлы контента для загрузки
   Для пользователей существует вероятность выбрать неверные файлы для загрузки или изменить свое мнение об отдельных файлах после того, как они выбрали их. Позвольте им удалить такие файлы (рис. 9.4).
   Рис. 9.4. Flikr позволяет пользователям удалять выбранные файлы для загрузки

   Разрешите пользователям устанавливать личные предпочтения
   Пользователи могут не хотеть распространять загруженное содержимое или могут захотеть ограничить доступ для отдельных пользователей. Предложите им возможность определять такую конфиденциальность и выбирать свои предпочтения (рис. 9.5).
   Рис. 9.5. Flickr позволяет пользователям определять параметры конфиденциальности для загруженных фотографий

   Держите пользователей информированными о процессе загрузки
   Позвольте пользователям контролировать процесс загрузки содержимого, предоставив им индикатор загрузки (см. шаблон DELAY/PROGRESS INDICATOR в главе 8). Это упрощает для них подсчет времени, которое занимает загрузка файлов. В дополнение пользователи могут прервать загрузку, если они чувствуют, что это занимает больше времени, чем они предполагали, или если они решили, что выбрали неверные файлы для загрузки.
   Подтвердите успешность загрузки файлов контента
   Подтвердите пользователям успешную загрузку файлов. Как только файлы будут загружены, либо перенаправьте пользователей на страницу, с которой они могут управлять загруженными файлами, либо верните их к той странице, на которой находятся настройки загрузки большего количества файлов. Если пользователи будут иметь преимущества в виде проставления тегов к своему контенту или предоставления описаний, предложите им соответствующие шаги.
 //-- Связанные шаблоны проектирования --// 
   Поскольку загруженные файлы могут быть большими, особенно при добавлении медиафайлов, использование шаблона DELAY/PROGRESS INDICATORS (см. главу 8) имеет значение и должно быть продумано. В дополнение к этому большинство приложений, которые поддерживают контент, генерируемый пользователями, предусматривают, что пользователи описывают его, используя теги (TAGGING).


   TAGGING (ТЕГГИРОВАНИЕ)

 //-- Проблема --// 
   Веб-приложения, которые позволяют пользователям добавлять контент (например, закладки, фотографии, музыку, видео и т. д.), также могут разрешить им использовать категории или помечать свой загруженный контент, чтобы упростить его поиск впоследствии. Однако не всегда возможно предположить все различные способы и сделать доступными все потенциальные метки и варианты (или категории и подкатегории), которыми пользователи могут захотеть пометить свой контент. Например, пользователи могут захотеть пометить личные фотографии метками вроде имен людей, названий событий, территориальных мест, возраста, эмоций и т. д.
 //-- Решение --// 
   Позвольте пользователям помечать (или проставлять теги) контент с любой описывающей информацией, которую они пожелают – таким образом, вы упростите для них поиск этого контента впоследствии (рис. 9.6). Метки, используемые для проставления тегов к контенту, не должны быть запрещенными, исключая случаи, когда они могут оскорблять других пользователей приложения. Например, приложение может запретить включать ругательные слова в метки.
   Рис. 9.6. YouTube просит пользователей добавлять теги при загрузке видео

 //-- Зачем --// 
   Использование неограниченных тегов поощряет персональное изложение мыслей и естественный словарный запас. Также это упрощает для пользователей процесс нахождения их позиций впоследствии и позволяет им анализировать и взаимодействовать с контентом миллионами различных способов (Marlow et al., 2006). Например, разрешив пользователям помечать сообщения электронной почты (и добавлять многочисленные метки в одно и то же сообщение), Gmail позволяет пользователям не только использовать теги, которые описывают содержимое электронного сообщения, но также описывать действия и приоритеты (например, «к исполнению», «важно», «срочно» и т. д.). Кроме того, пользователи не должны втискивать позиции в рамки сочетания категорий/подкатегорий – они могут размещать их во множестве виртуальных категорий одновременно.
   Разработчики приложения также получают преимущества от проставления тегов, потому что им не нужно заранее обращаться к полной схеме категоризации (так называемой таксономии). Они могут положиться на теги пользователей, чтобы постоянно создавать динамическую, развивающуюся таксономию (также опирающуюся на фолксономию) [12 - Томас Вандер Уол (Thomas Vander Wal, 2007) ввел термин «фолксономия» и описал его следующим образом: «Фолксономия представляет собой результат персонального свободного добавления тегов к информации и объектам (что-либо, имеющее URL) для чьего-то собственного поиска. Добавление тегов осуществляется в социальной среде (обычно распределенной и открытой для других). Фолксономия создается в процессе акта проставления тегов человеком, потребляющим информацию».] и использовать ее для дополнения таксономии высокого уровня, чтобы содействовать навигации.
   В конечном счете, маркировка тегами может поощрить участие пользователей и размещение для общего доступа файлов, поскольку это помогает создавать сообщества с общими интересами и позволять пользователям изучать контент, который промаркирован также, как их собственный.
 //-- Как --// 
   Добавление тегов к элементам контента должно быть непосредственным. Чтобы отметить элемент, разрешите пользователям вводить ключевые слова, отделяя их пробелами или запятыми (или любыми другими разделителями) в текстовом поле. Использование пробела в качестве разделителя может стать проблематичным, когда пользователи хотят ввести теги из нескольких слов.
   По этой причине продумайте использование запятых, точки с запятой или других специальных символов в качестве разделителей.
   В дополнение к этому позвольте пользователям маркировать тегами как тот контент, который они добавляют, так и тот контент, который уже существует (рис. 9.7).
   Рис. 9.7. Flickr позволяет пользователям добавлять теги к тем фотографиям, которые они уже загрузили

   Поддерживайте маркировку тегами необязательной функцией
   Основная цель маркировки тегами – разрешить пользователям предоставлять некоторую описательную информацию о контенте, чтобы облегчить его поиск в будущем.
   Поскольку основная задача пользователя – это добавление контента, то маркировка тегами (или предоставление другой описательной информации) должна быть необязательной. Тем не менее пользователи должны иметь возможность добавлять теги позже.
   Разрешите пользователям маркировать тегами несколько позиций одновременно
   Для такого контента, как фотографии, пользователи могут захотеть добавлять одинаковые теги к нескольким позициям. Предоставьте им возможность выбирать элементы, которые будут отмечены теми же тегами, и применять теги в режиме массовой или групповой загрузки (рис. 9.8).
   Рис. 9.8. Flickr позволяет пользователям применять теги в режиме групповой загрузки. Пользователь может отобрать в одну группу фотографии, которые он хочет отметить тегами, затем нажать кнопку Add Tags (Добавить теги), чтобы добавить описание ко всем элементам группы

   Предположите теги, чтобы облегчить возможные варианты
   Одной из проблем с проставлением тегов является то, что элементы могут быть промаркированы тегами с использованием очень похожих меток, вызванных опечатками, множественных или минимальных различий в правописании (например, «честный» или «чесный»). Например, один пользователь может помечать элемент словосочетанием «веб сайт», другой словом «вебсайт», а третий – «веб-сайт» или «вебсайты». Предполагая теги и предоставляя пользователям возможность выбирать из них, приложение может минимизировать избыточность и ненужные различия в тегах.
   Кроме того, предположение тегов может также побудить пользователей представить альтернативные способы описания контента и избежать консервативных меток от пользователей, для которых маркировка тегами является новинкой. Предположения могут быть выражены в следующих формах:
   • Ранее использованные теги. Теги, которые уже вводили пользователи.
   • Популярные теги. Теги, которые часто используются другими пользователями.
   • Рекомендуемые теги. Теги, которые пользователи могут предположить, основываясь на популярных тегах, недавно используемых тегах и других факторах.
   Чтобы облегчить добавление предполагаемых тегов, позвольте пользователям выбирать из списка (рис. 9.9). В дополнение к этому во время ввода тегов предположите теги, используя шаблон интерактивного взаимодействия AUTOSUGGEST/AUTOCOMPLETION (см. главу 8).
   Рис. 9.9. Приятно радуют как рекомендуемые теги, так и список популярных тегов для пользователей, предполагающих, когда добавлять закладку и маркировать ее тегом. Чтобы использовать один и более тегов, пользователи должны просто нажать на них, и эти теги переместятся в текстовое поле tags (теги)

   Разрешите пользователям изменять и удалять свои теги
   Пользователи могут пожелать изменить свои теги, потому что они сделали ошибку или нашли другие теги, которые лучше описывают содержимое. Также если пользователи пометили тегом элемент контента, чтобы описать действие, которое они собираются сделать (например, отмечание тегом «к исполнению» или «важно» в Gmail), они могут пожелать удалить эти теги, если те больше не актуальны. Чтобы удовлетворить такие потребности, разрешите пользователям удалять, изменять или добавлять теги к существующим элементам (рис. 9.10).
   Рис. 9.10. Приятно, когда пользователям разрешено изменять или удалять теги, нажимая кнопку «редактировать», расположенную рядом с отмеченным элементом

   Управление тегами с таким же успехом должно быть возможным в режиме групповой загрузки. Это означает, что пользователи должны иметь возможность изменять или удалять теги для множества элементов одновременно. Если это поможет пользователям, позвольте им также заменять один тег другим или несколькими тегами.
 //-- Связанные шаблоны проектирования --// 
   Когда теги используются для отмечания элементов, в качестве способа навигации и исследования контента обычно прилагается облако тегов (TAG CLOUDS) (см. главу 5).


   RATING (РЕЙТИНГ)

 //-- Проблема --// 
   Вместе с избытком контента, доступного в Интернете, пользователи сталкиваются с проблемой идентификации существенного и полезного контента; это создает еще больше затруднений с контентом, распространяемым пользователями, который не просматривался и не редактировался на предмет качества.
   Приложения также сталкиваются с подобной проблемой, потому что их алгоритмы персонализации и рекомендаций часто ссылаются на интересы пользователей, которые остаются такими же, когда они пытаются предложить контент пользователям.
 //-- Решение --// 
   Разрешите пользователям отображать свои предпочтения и неприязнь, голосуя за позиции (например, фильмы, музыку, видео, рестораны, гостиницы и т. д.; рис. 9.11). Убедитесь, что проголосовать за позицию можно быстро и это не требует слишком много времени или прерывания основной задачи пользователя.
   Рис. 9.11. Сайт Amazon.com разрешает пользователям голосовать за позиции, используя пятизвездочную систему рейтингования. Они также поясняют, что голосование за позицию поможет сайту Amazon предоставить лучшие рекомендации

 //-- Зачем --// 
   Для пользователей невозможно пробираться через весь доступный контент, чтобы отделить полезное и значимое содержимое. Кроме того, при покупке товаров и услуг необходимость выбора из всех доступных вариантов может парализовать потребителя (Шварц, 2005). Вследствие этого, чтобы упростить принятие решения, пользователи обычно полагаются на опыт других, выраженный через рейтинги и обзоры (см. шаблон REVIEWS).
   Рейтинг в форме звезд полезен по двум причинам.
   1. Предоставление рейтинга относительно честно;
   2. Они предоставляют быструю, моментальную информацию о полезности или качестве продуктов, услуг, контента и других позиций, оцененных другими пользователями.
   Для пользователей это упрощает как минимум фильтрацию контента на общем уровне. Рейтинги могут использоваться в различных случаях. Например:
   • На сайте eBay, торговой площадке для покупки и продажи товаров, пользователь голосует, чтобы создать детализированный профиль обратной связи о продавце.
   • На сайте Amazon, онлайн-продавце и торговой площадке, пользователь голосует как за приобретенные им продукты, так и за продавцов, с которыми он работал.
   • На сайте NexTag, приложении для сравнительных покупок, пользователи голосуют, чтобы показать как качество продуктов, так и ответственность продавцов.
   Непрямое измерение часто используется, чтобы оценить позиции по их популярности, основываясь на приобретении, загрузках, добавлении в «список желаний» и т. д. И однако этот метод отображает действия и поведение пользователей, но не их удовлетворенность и опыт знакомства с продуктом или услугой после того, как они приобрели или опробовали их. Популярность и качество не являются одним и тем же. Например, лучше всего продающийся автор может продать множество копий впервые опубликованной или переопубликованной книги раньше, чем кому-то представится возможность прочесть ее и написать по ней обзор. В дополнение к этому, рейтинги и обзоры, полученные от других пользователей о продукте, считаются весьма полезными и доверенными источниками, чтобы помочь другим пользователям принять решение о покупке. Гаури и другие (Gauri et al., 2008) подвели итог:

   Интересно, что из всех атрибутов положительные отзывы потребителей имеют максимальное влияние на намерение о покупке. Это устойчиво наблюдается среди всех категорий (например, книги и журналы; DVD и видео; цветы и еда). Еще более впечатляющим является открытие, что количество лет, проведенных в Интернете, имеет наименьшее влияние на намерение о покупке. Отсюда можно предположить, что магазины могли бы привлечь больше потребителей, имея положительные отзывы пользователей. Другим интересным открытием является то, что общее количество отзывов, которые привели потребителя к намерению о покупке, не имеет значения. А вот процент положительных отзывов влияет на это.

 //-- Как --// 
   Веб-приложения, которые пытаются узнать отношение пользователей достаточно быстро, используют подход звездочного рейтинга, где одна звезда представляет самый низкий рейтинг, и пять звезд представляют самый высокий рейтинг. Некоторые приложения допускают приращение до половины звезд, что увеличивает диапазон измерения.
   Обычно при использовании системы звездочного рейтинга применяются два типа интерактивных подходов:
   1. Отделение рейтинга пользователя от общего рейтинга. С таким подходом пользователи видят общий рейтинг позиции отдельно от своего собственного рейтинга. Чтобы проголосовать за позицию, пользователи видят пять «пустых» звезд. Как только пользователи определяются с оценкой, звезды, влияющие на соответствующий рейтинг, подсвечиваются. Затем пользователи нажимают кнопку, чтобы установить и сохранить рейтинг. Далее пользователи видят свой рейтинг в другом цвете, нежели общий рейтинг (рис. 9.12). Так же им предлагается возможность либо удалить свои рейтинги, либо изменить ранее выставленные рейтинги.
   (а)

   (б)

   Рис. 9.12. Сайт Blockbuster демонстрирует пользователям «пустые» звезды до того, как они проголосуют за позицию (а). И показывает их в цвете после того, как они введут свой рейтинг (б)

   2. Комбинирование общего рейтинга с рейтингом пользователя. По умолчанию пользователи видят звезды в красном цвете, чтобы просмотреть текущий общий рейтинг позиции. Как только пользователи определяются с оценкой, красные звезды заменяются желтыми (или любым другим цветом). Как только пользователь нажимает кнопку, чтобы установить и сохранить рейтинг, звезды отображаются в состоянии желтого цвета, чтобы отобразить, что пользователь проставил свой рейтинг позиции (рис. 9.13).
   (а)

   (б)

   (в)

   Рис. 9.13. Сайт Netflix показывает текущий рейтинг, используя красные звезды (а). Как только пользователи определятся с оценкой, заполняющий цвет изменяется на желтый, отображая их рейтинг (б). Как только проставлены желаемые оценки, звезды заполняются желтым, чтобы отобразить, что пользователь уже проголосовал за позицию (в)

   Хотя для того чтобы отделить текущий рейтинг от пользовательского рейтинга, требуется интуиция, оба подхода широко используются. В некоторых случаях используются оба подхода в одном приложении. Например, сайт Blockbuster отделяет собранный общий рейтинг от пользовательского рейтинга на странице деталей фильма, но комбинирует их на других страницах списка. Таким образом «комбинированный» подход на страницах списка дает возможность сохранить пространство и минимизировать беспорядок.
   Присоединение рейтингов
   Присоедините каждый рейтинг к словесному описанию, чтобы упростить для пользователей значение каждой звезды рейтинга (рис. 9.14).
   Рис. 9.14. Hulu, приложение для просмотра телевизионных эпизодов и фильмов, соединяет каждую звезду рейтинга со словесным описанием

   Покажите пользователям, что они уже голосовали за данную позицию
   Чтобы убедиться, что пользователи не теряют времени, заново голосуя за позицию, позвольте им знать, голосовали ли они уже за нее (рис. 9.15). Хотя пользователям необходимо разрешать изменять свое мнение и удалять свои рейтинги, чтобы предотвратить негатив, им нельзя позволять голосовать за одну и ту же позицию более одного раза.
   Рис. 9.15. Сайт Netflix показывает пользовательский звездный рейтинг желтым и отображает суммарные рейтинги (за которые пользователи не голосовали) в красном цвете

   Покажите пользователям классификацию рейтингов
   Суммарный рейтинг обычно используется, чтобы показать рейтинг позиции. Однако когда позиция получает меньше рейтинга, суммарный рейтинг не такой уж надежный. Например, если позиция получила рейтинг пяти звезд, четырех звезд и одной звезды, при отображении рейтинга он будет высвечивать рейтинг трех звезд – не совсем реальное отображение пользовательских предпочтений. Чтобы убедиться, что качество позиции оценивается более аккуратно, покажите пользователям классификацию рейтингов (рис. 9.16).
   Рис. 9.16. Сайт Amazon показывает распределенный рейтинг, когда пользователи просматривают суммарный рейтинг. В дополнение к этому, чтобы упростить пользователям просмотр отзывов, сайт привязывает рейтинги к соответствующим отзывам

   Разрешите пользователям голосовать за позицию, используя множественные критерии
   Когда позиция может быть оценена по нескольким критериям (например, обстановка, качество сервиса), предложите пользователям дополнительные оценочные критерии, чтобы обеспечить более точную оценку (рис. 9.17).
   Рис. 9.17. В дополнение к просьбе пользователям предоставить общий рейтинг сайт TravelPost предлагает им возможность выставить детализированный рейтинг, используя несколько оценочных критериев

   Предоставление дополнительных критериев рейтинга также может отобразить определенные стороны позиции, которые нравятся пользователям (или не нравятся).

 //-- Связанные шаблоны проектирования --// 
   Чтобы получить разумное обоснование пользовательскому рейтингу и поощрить участие, рассмотрите дополнительную информацию о рейтингах в отзывах (REVIEWS). Шаблон PERSONALIZATION также относится к пользовательскому рейтингу, так как приложения, использующие персонализацию, часто ссылаются на обратную связь от пользователей, чтобы порекомендовать важный и полезный контент (см. главу 4).


   REVIEWS (ОТЗЫВЫ)

 //-- Проблема --// 
   Хотя рейтинги являются полезными, они не показывают внутренние причины низкого или высокого рейтинга. Кроме того, голосующие за позицию пользователи могут пожелать поделиться причинами своего мнения о качестве позиции, удовлетворенности от взаимодействия с ней или от ее использования. Отображение простой системы рейтинга может быть ограничено, потому что пользователи будут не в состоянии пояснить мотивацию своего мнения.
 //-- Решение --// 
   В дополнение к предоставлению рейтинга позвольте пользователям писать отзывы, которые выражают их мнения и причины той или иной оценки качества позиций или удовлетворенности взаимодействием с ними (рис. 9.18).
   Рис. 9.18. Сайт Yahoo! Local позволяет пользователям как голосовать за рестораны, так и писать отзывы

 //-- Зачем --// 
   Пользователи безоговорочно доверяют отзывам других подобных и беспристрастных пользователей, нежели лозунгам, провозглашенным продавцом товара (Gauri et al., 2008). Источник Edelman’s Trust Barometer (2008) утверждает, что примерно 60 % людей склонны доверять таким же людям, как они, т. е. тем, кто делится своими интересами и придерживается близких убеждений. Также изучение многообразия опыта с различных точек зрения может помочь пользователям оценить, насколько хорошо свойства позиции соответствуют их потребностям. Вследствие этого они могут принимать более взвешенные решения.
 //-- Как --// 
   Предложите пользователям возможность писать обзоры в дополнение к голосованию за позицию. Если позиция еще не получила ни одного отзыва или рейтинга, побудите пользователей стать первыми в написании отзыва (рис. 9.19).
   (а)

   (б)

   Рис. 9.19. Для продуктов без отзывов сайт HP просит пользователей стать первыми, чтобы оставить свой отзыв о позиции (а). Сайт Yelp поощряет пользователей написать отзыв быстро, распознавая первого желающего оставить отзыв (б)

   Разрешите пользователям оценивать полезность существующих отзывов
   Чтобы поощрить пользователей писать качественные отзывы и минимизировать злоупотребления, разрешите другим пользователям голосовать за полезность отзывов (рис. 9.20).
   Рис. 9.20. Ресурс Yelp позволяет отмечать отзывы, как «полезные», «смешные» и «клевые»

   Разрешите пользователям сортировать отзывы
   Чтобы предотвратить чрезмерное разделение на высокие и низкие рейтинги, показывайте отзывы в обратном хронологическом порядке по умолчанию. Тем не менее пользователи могут предпочесть сортировать отзывы по высоким и низким рейтингам (Porter, 2008). Поэтому позвольте им сортировать отзывы по рейтингам или дате размещения.
 //-- Связанные шаблоны проектирования --// 
   Отзывы обычно идут рука об руку с рейтингами (RATINGS), потому что часто пользователей просят сопроводить свои рейтинги отзывами. Чтобы улучшить качество и полезность отзывов, предусмотрите просьбу к другим пользователям отобразить, был ли этот отзыв полезен. Затем используйте эту информацию, чтобы вычислить пользовательскую репутацию (REPUTATION). В дополнение к этому просите пользователей авторизоваться (LOG IN), прежде чем разрешить им написать отзыв. Это поможет минимизировать злоупотребления и предвзятость (см. главу 3).


   VOTE TO PROMOTE (ГОЛОСОВАНИЕ)

 //-- Проблема --// 
   Веб-приложения, действующие на основе генерируемого или распространяемого пользователями контента [13 - Распространяемый пользователями контент включает указатели на существующие ресурсы, например, интересные новости, видео, фотографии и т. д.], нуждаются в способе определения наиболее полезного и интересного контента, а также возможности сделать его доступным для остального сообщества.
 //-- Решение --// 
   Предоставьте пользователям возможность голосовать за понравившиеся или непонравившиеся позиции, основываясь на их полезности, качестве или «интересности», а также продвигать эти позиции большинством голосов (рис. 9.21).
   (а)

   (б)

   Рис. 9.21. На вкладке New Links (Новые ссылки) сайт DZone.com позволяет пользователям голосовать за историю на позицию вниз или вверх (а). Истории, которые получили наибольшее количество голосов, затем перемещаются во вкладку Popular Links (Популярные ссылки) (б)

 //-- Зачем --// 
   В приложениях с активным сообществом пользователей общее количество подтвержденных позиции может быть таким огромным, что определение контента, который пользователи найдут полезным и интересным, может быть весьма затруднительным. Объявление нескольких людей как наиболее значимых для остального сообщества не будет ни практичным, ни осуществимым. В дополнение к этому, если позиции, подтвержденные пользователями, чувствительны ко времени (например, новостные истории), задержки в нахождении значимых позиций могут скомпрометировать полезность приложения самого по себе.
   Использование демократического процесса голосования, чтобы определить позиции, которые заслуживают продвижения и сообщения о них другим пользователям, возможно, является оптимальным способом сделать приложение полезным. Кроме того, просьба к пользователям проголосовать за позиции, которые они считают ценными, также увеличивает их вовлеченность и участие.
   Тем не менее такой подход к голосованию, чтобы продвинуть историю, имеет свои недостатки. Поскольку голосование основывается больше на том, что пользователь нашел интересным, вместо того чтобы голосовать за качество позиции и достоверность (особенно в новостных историях), часто сенсационные истории выходят наверх, оставляя полезный контент внизу.
 //-- Как --// 
   Покажите пользователям подтвержденные позиции и позвольте им голосовать за или против них. Как только они определятся с выбором, увеличьте или уменьшите счетчик голосов и дайте пользователям знать, что они проголосовали за позицию (рис. 9.22).
   (а)

   (б)

   Рис. 9.22. Когда пользователь голосует за историю на сайте Digg (а), то общее количество голосов увеличивается на единицу, а кнопка «digg it» изменяется на текст «dugg!» (б), чтобы предотвратить дополнительные голоса от того же пользователя

   Разрешите пользователям отзывать голоса
   Пользователи должны иметь возможность изменить свое мнение – отозвать голос за позицию – если они считают, что ошиблись. Поэтому убедитесь, что пользователи могут изменять голоса (рис. 9.23).
   Рис. 9.23. Сайт Digg позволяет пользователям отменить свой голос за историю на страницах пользовательского профиля в течение 15 минут после голосования за историю

   Отображайте количество голосов для позиций
   Покажите количество голосов, полученных позициями, чтобы пользователи могли определить их популярность по сравнению с другими (рис. 9.24).
   Рис. 9.24. Сайт Yahoo! Buzz показывает пользователям общее количество голосов, полученных новостью, когда пользователи наводят указатель мыши на позицию

   Предпримите шаги, чтобы минимизировать злоупотребления
   У пользователей могут быть причины, чтобы продвигать определенные позиции или занижать другие позиции, ими может быть заимствована практика для манипуляций с системой голосования. Чтобы сократить такие злоупотребления, предусмотрите включение одного или нескольких из следующих действий:
   1. Позвольте только авторизованным пользователям голосовать за позиции. Это предотвратит злоупотребления, не позволяя некоторым пользователям искусственно продвигать или занижать позиции.
   2. Ограничьте количество позиций, за которые пользователь может проголосовать вверх или вниз за определенный период времени.
   3. Установите диапазон, с которым позиция может быть проголосована вверх или вниз.
   4. Включите другие критерии, нежели общее количество голосов, чтобы рассчитать очки популярности позиции. Например, сайт Digg предусматривает источник истории, историю пользователя, трафик по категории, в которой находится позиция, и т. д., чтобы рассчитать «интересность» позиции.
   Разрешите голосованию быть запущенным с другого сайта
   Чтобы упростить продвижение позиций, многие социальные приложения предусматривают возможность (так называемые виджеты) быть размещенными на других веб-сайтах. Будучи один раз размещенными на веб-странице, пользователи могут продвигать контент напрямую с другого веб-сайта, прежде чем посетить приложение, которое демонстрирует продвигаемый контент (рис. 9.25).
   Рис. 9.25. YouTube предлагает пользователям несколько опций, чтобы продвигать видео в приложениях вроде Digg и Reddit

 //-- Связанные шаблоны проектирования --// 
   Чтобы голосование могло инициироваться с других сайтов, важно, чтобы приложение поддерживало совместный доступ (SHARING).


   USER PROFILE (ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ)

 //-- Проблема --// 
   Веб-приложения, которые предполагают авторизацию пользователей, обычно хранят пользовательскую информацию. Пользователям необходим простой доступ к этой информации, чтобы они могли управлять (т. е. добавлять, обновлять и удалять) ее и держать ее актуальной. В большинстве приложений такая информация является частной и доступна только владельцу аккаунта. Социальные приложения, тем не менее, позволяют пользователям делать некоторую или всю информацию публичной. Обычно называемая «профиль пользователя» информация пользовательского аккаунта в таких приложениях довольно детализирована и может никогда не заполняться полностью.
 //-- Решение --// 
   Разрешите пользователям управлять своими профилями и держать все или часть из них приватными. В дополнение к этому для приложений социальных сетей расширьте профиль пользователя, чтобы включить связи пользователя и взаимодействия со своим онлайн-сообществом (рис. 9.26).
   Рис. 9.26. Facebook разрешает пользователям управлять своими профилями, а также отображать ту личную информацию, которой они хотят поделиться с другими

 //-- Зачем --// 
   Для приложений, основанных на онлайн-сообществах, и приложений социальных сетей идентификация пользователей осуществляется через их профили. Чем сильнее детализирован профиль пользователя, тем проще для других пользователей (и для приложения) решить, разделяют ли они похожие интересы и могут ли они доверять ему или ей, прежде чем соединиться с ним (добавить его в друзья).
   Не будет преуменьшением факта то, что профиль пользователя может содержать выдуманную информацию, которая, как они полагают, может улучшить их имиджи перед другими пользователями – например, в соответствующих приложениях и торговых онлайн-площадках. Кроме того, часть идентификации пользователей также определяется тем, что другие говорят о них – их рейтинги, рекомендации, характеристики и т. д. – и может помочь как минимум в определенной сфере влияния, уменьшить обман и недостоверное представление информации.
 //-- Как --// 
   На самом базовом уровне профили пользователей включают имя и фотографию, хотя впоследствии это обычно опционально. Любая дополнительная информация в профиле должна соответствовать цели приложения. Например, приложение Google Health интересуется демографической информацией пользователей, лекарственными средствами, аллергией, иммунизацией и т. д. Тогда как сайт Match.com, аналогичное приложение, запрашивает информацию о физических и социальных характеристиках и о том, кого пользователи предпочитают в качестве партнера (рис. 9.27).
   (а)

   (б)

   Рис. 9.27. Профили пользователей в приложении Google Health включают демографическую и медицинскую информацию пользователя (а), в то время как профили на сайте Match.com включают физические и социальные характеристики пользователей и желаемых ими партнеров (б)

   Поддерживайте параметры универсальной идентификации пользователей, такие как OpenID
   Пользователи могут сомневаться, авторизоваться ли им в приложении, если они чувствуют, что им потребуется вводить заново всю их персональную информацию. Чтобы облегчить передачу такой информации, предусмотрите использование универсальных параметров идентификации, таких как OpenID (см. шаблон REGISTRATION в главе 3).
   Упростите соединение со знакомыми пользователями
   Приложения социальных сетей часто полагаются на сеть друзей, семьи и коллег пользователя, чтобы улучшить свой опыт. Тем не менее передача десятков или сотен контактов может занять много времени. Чтобы облегчить процесс, приложения социальных сетей обычно предлагают возможность импорта из популярных приложений электронной почты. Затем они используют эту информацию, чтобы определить, какие из друзей пользователя уже используют приложение, чтобы помочь им соединиться друг с другом (рис. 9.28).
   (а)

   (б)

   Рис. 9.28. Сайт социальной сети imeem для медиапрофессионалов предлагает

   Разрешите пользователям заполнять свои профили постепенно
   Пользователи обычно не любят предоставлять детализированную персональную информацию при регистрации (см. шаблон REGISTRATION в главе 3). Тем не менее чтобы обеспечить полезные рекомендации и предложить способы соединить их с другими пользователями со схожими интересами, очень важно, чтобы профили пользователей были максимально заполнены. Чтобы поддержать такие противоположные пользовательские цели и потребности приложения, разрешите пользователям заполнять свои профили постепенно. Общепринятым подходом для эффективного заполнения профиля является задавание соответствующих вопросов, относящихся к профилю, когда пользователи совершают определенные действия. Например, сайт LinkedIn задает пользователям такие вопросы, когда им требуется соединиться с другим пользователем или принять запрос на соединение от другого пользователя (рис. 9.29).
   Рис. 9.29. Сайт LinkedIn спрашивает пользователей, каким образом они знакомы с другими, когда они пытаются соединиться с ними. Когда они отвечают на вопрос, их профили соответственно обновляются

   Предоставьте пользователям стимул обновлять свои профили
   На сайтах социальных сетей ценность приложения для пользователей возрастает по мере увеличения количества их связей. В таких случаях стимулирование, в денежной или другой форме, может побудить людей обновлять свои профили. Это также выгодно провайдерам приложения, так как больше пользователей могут подписаться на их службы.
   Отображайте для пользователей значение, на которое заполнены их профили
   Чтобы поощрить пользователей заполнять свои профили, отображайте значение, на которое они заполнены. В дополнение к этому предложите варианты действий, которые они могут предпринять, чтобы улучшить заполненность своих профилей (рис. 9.30).
   Рис. 9.30. Сайт LinkedIn показывает пользователям, на какую величину заполнены их профили. Они также выдают предположение, что добавление изображения увеличит заполненность на 85%

   Разрешите пользователям хранить всю или часть своей информации приватной
   Страницы профилей обычно помогают в трех случаях:
   1. Для пользователей приложений они упрощают поиск других контактов и изучение информации о них, равно как и соединение с ними.
   2. Они помогают персонализировать приложение для своих пользователей.
   3. Они помогают пользователям управлять соответствующей информацией о них самих из единого места.
   Пользователи должны определенно решить, какую информацию они желают сохранить приватной. Несмотря на то, что большинство пользователей желает поделиться данными, эта опция может сделать приложение более полезным (рис. 9.31).
   Рис. 9.31. Для каждого индивидуального фрагмента информации в профиле сайт imeem позволяет пользователям решить, хотят ли они держать эту информацию приватной (т. е. «Myself» – «только для себя»), поделиться ей с пользователями в сети (т. е. «Friends» («Друзья»)), или поделиться ей со всеми пользователями imeem (т. е. «Everyone» («Каждому»))

   Разрешите пользователям использовать псевдонимы и аватары
   В дополнение к разрешению пользователям отображать, какую информацию они желают показать всем (или не желают), позвольте им использовать ники и аватары (юзерпики) [14 - Аватар – это текстовое или графическое представление пользователя в онлайн-приложении.] для себя; они также относятся к дополнительным возможностям. Особенно популярны аватары на форумах и в игровых приложениях, где пользователи могут предпочесть выдать себя за другого персонажа (рис. 9.32).
   Рис. 9.32. В процессе присоединения к сообществу Xbox 360 пользователи могут выбрать псевдоним (например, Gamer) и свое изображение аватара (например, «Изображение игрока»)

   Поскольку псевдонимы и аватары являются способом, по которому пользователи распознают друг друга в социальных приложениях (так как многие из них могли не встречаться лично), общей практикой является ограничение на частоту их смены. Многие приложения штрафуют пользователей, если они изменяют свои псевдонимы и аватары слишком часто, а некоторые из этих приложений позволяют только смену изображения аватара, но не псевдонима. В дополнение к этому, чтобы поощрить «примерное» поведение, онлайн-сообщества могут запретить доступ тем, кто не желает раскрывать свои реальные данные (например, сайты брачных агентств).
   Сделайте профили пользователей динамичными
   Для социальных приложений профиль пользователя, согласно правилам информации о самих пользователях, не изменяется в достаточной степени и может стать неинтересным для их сетевых друзей. Чтобы сделать его более востребованным и более интересным, а также поделиться, что случилось в чьей-либо жизни, сделайте профиль динамичным, предприняв одно или несколько из следующих действий (Porter, 2008):
   • отображайте новых друзей, связи и группы, в которые вступил пользователь;
   • отображайте список общедоступных комментариев (например, обрывки разговоров, сообщения, комментарии на стенах и т. д.);
   • отображайте статус пользователя и информацию о его настроении;
   • отображайте любые недавние активности в тех приложениях, на которые они подписались (например, книги, которые они прочитали, фильмы, которые они просмотрели, и т. д.).
   Отображение подобной информации заставляет профили пользователей выглядеть более «живыми» и полезными для их друзей.
 //-- Связанные шаблоны проектирования --// 
   Поскольку пользователи должны зарегистрироваться, чтобы настроить свои аккаунты и профиль пользователя (USER PROFILE), примените лучшие примеры, определенные в шаблоне REGISTRATION (см. главу 3). Кроме того, поскольку пользователи могут взаимодействовать с теми, с кем у них не было предыдущего опыта общения, им нужен способ определить их надежность, которая может быть установлена через их репутацию (REPUTATION).


   REPUTATION (РЕПУТАЦИЯ)

 //-- Проблема --// 
   Во многих веб-приложениях, связанных с сообществами, важно, чтобы пользователи ощущали комфортное взаимодействие или обмен данными с другими, с кем у них не было предыдущего опыта общения. Также пользователи могут нуждаться в некоторых опознавательных знаках, чтобы определить надежность или экспертный уровень людей, которые предлагают советы, решения или продукты. Некоторые распространенные сценарии включают выбор продавца, у которого приобретается позиция (например, на сайтах eBay, Amazon Marketplace, NexTag), выбор книги для покупки (например, на сайте Amazon), выбор фильма для просмотра (например, на сайте NexFlix), выбор ресторана для посещения (например, на сайте Yelp), доверие совету или ответу, предлагаемому другим человеком (например, на сайте Yahoo! Answers) и т. д.
 //-- Решение --// 
   Предусмотрите определенную форму системы репутации, чтобы помочь пользователям определить тех, кто имеет высокую репутацию. Система репутации должна не только упрощать определение и сравнение репутации пользователей, но также представлять собой последовательный и надежный способ для выстраивания репутации (рис. 9.33).
   Рис. 9.33. Сайт eBay позволяет покупателям оценивать продавцов по нескольким критериям. Как только продавцы получают 98 % положительных отзывов, им присваивают статус «Power Seller»

 //-- Зачем --// 
   Взаимодействия и обмен данными в онлайне (в денежном виде или любой другой форме) затрагивают два типа пользователей: провайдеры (или продавцы) и получатели (или потребители) услуг, продуктов и информации. При отсутствии взаимодействия лицом к лицу провайдерам нужен способ установить доверие или положительную репутацию перед получателями. Проектирование системы репутации является способом установить критерии для определения степени надежности провайдеров и получателей внутри сообщества. Наличие системы репутации в приложении, кроме того, помогает пользователям лучше предвидеть вероятность результата при взаимодействии или обмене данными с другими пользователями сообщества.
   Кроме того, не все пользователи сообщества равнозначны – некоторые являются более опытными, надежными и заслуживающими доверия по сравнению с другими. Их выявление поможет определить, сколько веса придать их мнениям и рекомендациям. В заключение использование системы репутации является не только способом установления доверия, но также возможностью для пользователей создать свою репутацию, а также важной мотивацией для пользователей участвовать в приложениях, находящихся в сообществе (Porter, 2008).
 //-- Как --// 
   Репутация пользователей обычно основывается на двух критериях (рис. 9.34):
   1. Связи пользователя, действия и история внутри сообщества. Обычно это включает время пребывания пользователя в качестве активного участника сообщества, общее число связей (или друзей), количество последователей (или приверженцев), число рекомендаций, количество отзывов и т. д.
   2. Обратная связь от других участников сообщества. Другими словами, то, что другие, не имеющие прямой заинтересованности в репутации пользователя, говорят о нем или ней (Crumlish, 2004; Porter, 2008). Кроме того, система репутации должна включать механизм обратной связи, чтобы оценить качество, своевременность и точность заявлений, высказанных о продуктах, услугах и информации. Кроме того, система репутации должна быть достаточно устойчивой, чтобы предотвратить злоупотребления или манипуляции со стороны пользователей.
   Рис. 9.34. Сайт Yelp предлагает пользователям несколько способов заработать репутацию: общее количество друзей, количество отзывов, количество первых отзывов, число приверженцев, количество списков, количество благодарностей и т. д.

   Возможность использовать различные методы, чтобы заслужить репутацию, очень важна, потому что это позволяет пользователям заработать репутацию теми путями, которые совпадают с их привычным поведением и личными качествами.
   Как объединители и знатоки в книге Малькольма Гладуэлла «Переломный момент» (2010) – некоторые могут зарабатывать репутацию, имея большую сеть друзей, а другие – составляя полезные и подробные отзывы.
   Предложите пользователям быстрый способ оценить полезность отзывов
   Веб-приложения, позволяющие пользователям оставлять отзывы, также позволяют читателям этих отзывов оценить их полезность. Возможность всем желающим видеть полезность оставленных отзывов снижает шансы на предвзятость и злоупотребление, а также поощряет пишущих отзывы оставлять детализированную и важную информацию. Также полезность рейтингов может быть использована другими пользователями, чтобы оценить репутацию того, кто оставил отзыв.
   Чтобы упростить голосование за полезность, попросите пользователей просто отобразить, был ли отзыв полезен для них, без оставления комментариев или проставления рейтинга (рис. 9.35).
   Рис. 9.35. Сайт Amazon спрашивает пользователей, был ли отзыв полезен для них, используя варианты голосования «Да» («Yes») и «Нет» («No»). Он также поясняет, почему пользователи должны оценить отзыв, предваряя вопрос фразой «Помогите другим пользователям найти самый полезный отзыв» («Help other customers find the most helpful reviews»)

   Признайте достижения участников сообщества
   Как знак отличия, признание достижений в сообществах помогает найти отличия в производительности, активности и экспертном уровне среди участников сообщества. Это может выражаться так просто, как достижение уровня «Power Seller» на сайте eBay, набиранием 98 % баллов положительных отзывов и предоставлением высокого уровня обслуживания покупателям. Достижение уровня «Power Seller» помогает покупателям определить, что они работают с опытным продавцом сайта eBay. Также это помогает продавцам, поскольку они могут получить большее количество (и более высоких по цене) заявок на покупку, так как большее количество покупателей чувствуют себя комфортнее, взаимодействуя с ними.
   Альтернативный способ достижения может выражаться в форме упорядоченных уровней, как на форуме ресурса Amazon Web Services, где участники сообщества зарабатывают баллы, предоставляя правильные и полезные ответы. Набирая баллы, участники достигают различного уровня оценки и получают соответствующие знаки отличия (рис. 9.36).
   Рис. 9.36. Участники сообщества на форуме Amazon Web Services могут зарабатывать свои знаки отличия (например, «Ace», «Expert», «Guide» и т. д.)

   Показывайте рейтинг пользователя на конкурирующих сайтах
   В веб-приложениях, в которых пользователи соревнуются друг с другом (например, онлайн-игры), показывайте их относительный уровень, чтобы помочь им понять, как они оцениваются по отношению к другим пользователям. Это может проявляться в форме доски лидеров, которая позволяет пользователям увидеть, кто является передовым пользователем (например, игроки высшего уровня) (рис. 9.37).
   Рис. 9.37. Kwanzoo, небольшой развлекательный сайт, показывает уровень лидирующих игроков и их баллы в формате доски лидеров. Он также показывает, сдвинулся пользователь вверх или вниз, и если да – то на сколько позиций

   Используйте доски лидеров с осторожностью, если они могут вызвать чувство надувательства. Например, сайт Digg отказался от страницы Top Contributiors, потому что она вызывала ощущение манипуляции с лидирующими историями (см. blog.digg.com/?p=60). Также на сайте Amazon началась волна протеста против обозревательницы Хэрриет Клауснер, как только другие обозреватели почувствовали, что она не может читать семь книг в день и размещать обзоры, чтобы стать лидирующим обозревателем (см. материал «Реальна ли Хэрриет Клауснер?», доступный по ссылке www.bokardo.com/archives/is-harriet-klausner-for-real/).
   Четко отображайте, как пользователи могут достичь следующего уровня
   Используя уровни репутации, упростите для пользователей определение того, как они могут достичь следующего уровня. Это поддерживает их заинтересованность и мотивацию для дальнейшего участия (рис. 9.38).
   Рис. 9.38. Сайт Yahoo! Answers показывает пользователям, как много баллов они собрали, и количество баллов, которое им необходимо для достижения следующего уровня

   Предусмотрите применение прямых рекомендаций
   В системе репутации, обсуждаемой до настоящего времени, пользователи косвенно зарабатывали репутацию, основываясь на быстроте взаимодействия, качестве поставленных продуктов, полезности совета и т. д. Многие приложения социальных сетей, с другой стороны, позволяют пользователям устанавливать репутацию через характеристики или рекомендации, которые они получают. Сайт LinkedIn, например, позволяет пользователям оставлять рекомендации другим пользователям. Те пользователи, которые получили рекомендации, получают значок, выражающий восхищение, в свой профиль и отображение, сколько людей порекомендовали их.
   Хотя прямые рекомендации основываются на прошлых взаимодействиях, действиях или предоставленных услугах, и существуют другие подобные способы систем репутации, важным различием является то, что действие по рекомендации относится более непосредственно к человеку, чем к предлагаемым им услугам или продуктам. Это означает, что рекомендуется данный человек, вместо рекомендаций относительно услуг, предоставляемых им.
 //-- Связанные шаблоны проектирования --// 
   Оба шаблона – RATINGS и REVIEWS – могут сопровождать REPUTATION, поскольку зарабатывание репутации предполагает голосование пользователей и оставление отзывов о взаимодействиях или активностях, в которых они принимали участие.


   DISCOVER NETWORK MEMBERS (ПОИСК УЧАСТНИКОВ СЕТЕВЫХ СООБЩЕСТВ)

 //-- Проблема --// 
   Пользователи, новые в данном социальном приложении, могут не знать, как связываться с другими пользователями, обладающими такими же интересами, или с кем они потеряли контакт.
   Также пользователи, являющиеся частью других приложений, основанных на сообществах, могут пожелать узнать, является ли кто-нибудь из их текущего списка друзей участником сообщества, к которому они присоединяются.
 //-- Решение --// 
   Упростите для пользователей нахождение членов сети, основываясь на общих интересах, прошлых местах работы, других онлайн-сообществах и контактах (например, адресная книга электронной почты) (рис. 9.39).
   Рис. 9.39. Сайт Facebook предлагает пользователям несколько способов нахождения друзей: посредством электронной почты (загружая также файлы списка контактов), через школу, колледж или местонахождение работы, а также через список друзей системы мгновенного обмена сообщениями. Сайт также предлагает рекомендации через настройку «Обнаружьте друзей, которых вы можете знать» («Discover People You May Know»), основываясь на профилях и текущей сети

   В дополнение к этому, рекомендации друзей, основываясь на профилях пользователей и заявленных интересах, также упрощают для пользователей нахождение новых друзей.
 //-- Зачем --// 
   Социальные сети или приложения, основанные на сообществах, вращаются вокруг соединения пользователей с текущими, прошлыми или возможными будущими друзьями и коллегами. Без простого способа соединяться с ними исчезает аспект сообщества приложения.
 //-- Как --// 
   Приложения социальных сетей могут помочь пользователям обнаружить друзей множеством способов: через адресную книгу электронной почты, список друзей системы мгновенного обмена сообщениями, существующую сеть пользователя, рекомендации и поиск. Наличие нескольких способов, чтобы установить связь, очень важно, поскольку пользователи могут не заполнять свои профили полностью и могут использовать другой адрес электронной почты, чем тот, что указан в их адресной книге.
   Разрешите нахождение друзей через адресную книгу электронной почты
   Позвольте пользователям импортировать их существующие адресные книги из таких популярных приложений электронной почты, как Outlook, Gmail, Yahoo! Mail и т. д. (рис. 9.40).
   Рис. 9.40. При авторизации сайт Yelp предлагает пользователям возможность нахождения существующих друзей, сверяя их список контактов в системе электронной почты вроде Hotmail, Yahoo! Mail, AOL Mail и Gmail

   Предложите это в качестве варианта, после того как пользователи авторизовались; это поможет в следующих случаях:
   1. Чтобы облегчить быструю регистрацию, пользователи обычно предоставляют (или их просят предоставить) очень мало информации о себе. Это затрудняет их соединение с другими людьми, которых они уже знают в сообществе. Не восприняв чувство общности после регистрации, пользователи могут засомневаться в полезности приложения и могут никогда не вернуться.
   2. Доступ к адресной книге электронной почты пользователя становится относительно прямым, как только они получили право регистрации, что упрощает для приложения помощь им в нахождении и соединении с теми, кто уже находится в их списках контактов.
   Разрешите нахождение друзей, основываясь на профилях пользователей
   Другой настройкой является разрешение пользователям находить друзей, основываясь на их профилях. Как только пользователи заполнили как минимум часть своих профилей информацией о своем месте работы или образовательных институтах, проинформируйте их о пользователях, которые совпадают с их информацией (рис. 9.41).
   Рис. 9.41. Используя информацию о прошлых организационных и образовательных институтах, указанную в профилях пользователей, сайт LinkedIn предлагает варианты нахождения друзей

   Разрешите нахождение друзей, основываясь на существующих связях
   Позвольте пользователям исследовать профили своих друзей и видеть их, чтобы сделать для них возможным нахождение общих друзей, в отношении которых они не подозревали, что те являются частью сообщества. В дополнение к этому прежде чем побудить пользователей активно исследовать профили друзей, чтобы найти общих друзей, приложение может периодически предлагать друзей по связям с пользователями, которых они могут знать.
   Разрешите пользователям искать других участников сообщества
   Предоставьте пользователям возможность искать людей (рис. 9.42) в дополнение к разрешению им находить участников, основываясь на их профилях, адресных книгах и списках знакомых (см. шаблоны SAMPLE SEARCH и PARAMETRIC SEARCH в главе 6).
   (а)

   (б)

   Рис. 9.42. Сайт LinkedIn предлагает пользователям несколько вариантов, чтобы найти свой список участников (а). Также он предлагает справочный поиск для нахождения людей в чьей-либо сети, которые могут быть в состоянии предоставить сведения о кандидате (б)

   Предусмотрите подтверждение запросов «добавления в друзья»
   Несмотря на то что нахождение участников сети, с которыми пользователи могут пожелать соединиться (т. е. «добавить в друзья»), является довольно простым механизмом, это не должно быть автоматическим процессом. Важно, чтобы запросы «добавления в друзья» кого-то распознавались и подтверждались, прежде чем добавить их в список друзей. Кроме того, при принятии запроса стать друзьями будет полезно просить их отобразить происхождение взаимосвязи. Эта информация может быть использована для обновления профилей (и более полного их заполнения) и дальнейшего нахождения участников сети, с кем пользователь может быть знаком.
   Поддерживайте представления от третьих сторон
   Пользователи могут пожелать «добавить в друзья» тех пользователей, которых они не знают. Хотя пользователи должны получить разрешение для отправки прямых сообщений, чтобы добавить друг друга в свою сеть, если существуют взаимные друзья, которых знают оба пользователя, разрешите им быть представленными друг другу. Это может помочь снизить сомнения со стороны обоих пользователей, прежде чем они станут друзьями.
   Разрешите пользователям «следовать» за другими
   Предложите другой ставший недавно популярным подход по «добавлению в друзья», называемый «следование», где пользователи могут посещать страницы профилей других пользователей и выбирать «следование» их активностям (или «статус» на примере сайта Twitter) (рис. 9.43).
   Рис. 9.43. Сайт Twitter позволяет пользователям следовать за другими пользователями; активности «следующих» пользователей отображаются в качестве обновлений страницы «последователей»

 //-- Связанные шаблоны проектирования --// 
   Как только пользователи добавляют друзей в свою сеть и отображают свои взаимосвязи по отношению к их друзьям, это создает прекрасную возможность приложению обновить их профили пользователей (USER PROFILES). Механизм увеличения сети должен быть удобен в использовании, потому что размер сети является важным фактором, влияющим на репутацию пользователей (REPUTATION).


   FRIEND LIST (СПИСОК ДРУЗЕЙ)

 //-- Проблема --// 
   Пользователям нравится общаться с одной и той же основной группой людей – друзьями, коллегами, семьей и знакомыми. Необходимость помнить свою информацию каждый раз, когда они хотят связаться с кем-то, может сделать взаимодействие неэффективным.
 //-- Решение --// 
   Разрешите пользователям создавать и поддерживать список друзей (рис. 9.44); список друзей также известен как «список знакомых». В дополнение к этому разрешите пользователям объединять своих друзей в группы, чтобы упростить их поиск и общение внутри группы.
   Рис. 9.44. Сайт MySpace позволяет пользователям просматривать и управлять своими списками друзей на странице «Мои друзья». В дополнение к этому он позволяет пользователям группировать друзей в отдельные категории. Они также могут отображать настройки приватного просмотра, чтобы определить условия, кто может просматривать созданные ими категории

 //-- Зачем --// 
   Список друзей подобен адресной книге и разрешает пользователям быстро находить своих друзей и информацию из их профилей. Как и в адресной книге, многие пользователи приложений социальных сетей имеют от десяти до сотни друзей. Если они представлены просто в виде обычного списка или постраничного списка, то нахождение друзей может стать затруднительным. Вот почему для пользователей важно наличие возможности группировать своих друзей, основываясь на их взаимосвязях, частоте взаимодействия, способе представления и т. д. В сущности, это поможет пользователям поддерживать, если они желают, точный «социальный график» их списка друзей. Кроме того, эта настройка также позволяет им настроить опции приватности и отправки сообщений к пользователям как к группе, вместо того чтобы делать это индивидуально.
 //-- Как --// 
   Обновляйте список друзей пользователей, как только они приняли запрос стать друзьями или когда их запрос «добавления в друзья» кто-то одобрил.
   Разрешите пользователям группировать своих друзей
   Пользователи могут пожелать группировать своих друзей, чтобы сделать их нахождение более простым – например, они могут захотеть сгруппировать их, основываясь на происхождении их взаимосвязи или на частоте взаимодействия с ними. Чтобы обеспечить максимальную гибкость в отношении того, как они могут организовать своих друзей, разрешите пользователям создавать свои собственные группы. Если пользователи создали группы, сделайте добавление друзей в группу частью процесса подтверждения (или «запроса на добавление») (рис. 9.45).
   Рис. 9.45. Сайт Orkut позволяет пользователям группировать своих друзей в различные категории. По умолчанию сайт предлагает группы «лучшие друзья», «семья», «школа» и «работа»; пользователи также могут создавать свои собственные группы и добавлять одних и тех же друзей более чем в одну группу

   Сделайте список друзей простым для доступа
   Среди распространенных причин, по которым пользователи посещают социальные приложения, также существует взаимодействие со своими друзьями или просмотр их статуса или истории. Чтобы обеспечить быстрый доступ к подобной информации, упростите для них доступ к их списку друзей. Большинство приложений социальных сетей позволяет пользователям просматривать список друзей на своих домашних страницах.
   Разрешите пользователям просматривать онлайн-статус своих друзей
   Важной причиной для поддержки списка друзей является разрешение обмена сообщениями между друзьями (как синхронно, так и асинхронно). Чтобы инициировать синхронный обмен сообщениями (так называемый чат), важно знать, находится ли данный друг в онлайне (рис. 9.46; см. шаблоны MESSAGING и PRESENCE INDICATOR в этой главе далее).
   (а)

   (б)

   Рис. 9.46. Сайт MySpace позволяет пользователям фильтровать свой список друзей по тому, кто из них сейчас находится в онлайне (а). Сервис Gmail, с другой стороны, показывает зеленый маркер перед именами пользователей в онлайне (б)

 //-- Связанные шаблоны проектирования --// 
   Чтобы провозгласить связь с друзьями, обычно используются оба шаблона MESSAGING и PRESENCE INDICATOR в сочетании со списком друзей (FRIEND LIST). В дополнение к этому, чтобы упростить нахождение людей, список друзей часто отображается как таблица изображений (IMAGE GRID) (см. главу 7).


   GROUPS/SPECIAL INTEREST COMMUNITY (ГРУППЫ/ОСОБЫЕ СООБЩЕСТВА ПО ИНТЕРЕСАМ)

 //-- Проблема --// 
   Пользователям необходим способ соединяться с другими людьми, обладающими схожими интересами и опытом, чтобы они могли изучать и делиться своими знаниями и мнением, выстраивать взаимосвязи, расти профессионально, расширять свои сети и т. д.
 //-- Решение --// 
   Разрешите пользователям присоединяться и создавать группы, также имеющие отношение к форумам или онлайн-сообществам (рис. 9.47).
   Рис. 9.47. Сайт LearnHub, поддерживающий сообщества в сфере образования, позволяет пользователям присоединяться к существующим сообществам или основать свое собственное сообщество

 //-- Зачем --// 
   Одной из причин, по которым люди участвуют в приложениях на основе сообществ, является связь с теми, кто разделяет похожие интересы и опыт. Следовательно, предоставление пользователям возможности создавать группы и связываться с другими является необходимым, поскольку оно способствует поддержанию чувства сообщества и поощряет участие. Для компаний форумы и сообщества также полезны в качестве службы поддержки пользователей, потому что они позволяют пользователям помогать друг другу и в процессе снижают стоимость под держки.
 //-- Как --// 
   Группы или онлайн-сообщества являются виртуальными местами, где пользователи со схожими интересами могут делиться информацией и соединяться друг с другом. В то же время сообщество может быть организовано в форме дискуссионных групп вокруг определенной темы (например, Usenet); групп, созданных внутри приложения социальной сети (например, Facebook), дискуссий вокруг социальных объектов, таких как фото, музыка, фильмы, книги и т. д. (например, YouTube, Flickr); комментариев в ответ на запись в блоге (например, Livejournal.com); сообществ, созданных компаниями, чтобы поддержать своих потребителей (например, форумы поддержки компании Dell).
   Группы могут создаваться динамически, используя теги совместного доступа (рис. 9.48), либо пользователи могут создавать их, напрямую основываясь на своих определенных интересах (рис. 9.49). Динамическое создание групп является прекрасным способом отыскать людей, разделяющих такие же интересы. Однако подобные косвенно созданные группы могут быть нежизнеспособными, поскольку пользователи не выбирали, стать им частью такой группы или нет. С другой стороны, напрямую созданные группы требуют от пользователей присоединения к ним и могут иметь больше шансов на выживание.
   Рис. 9.48. Сайт 43 Things создает группы динамически, основываясь на тегах

   Рис. 9.49. Сайт Facebook позволяет пользователям создавать свои собственные группы

   Также группы могут создаваться вокруг определенных событий посетившими их людьми, либо теми людьми, кто намеревается посетить эти события. События просто являются частью группы с местоположением и датой. Хороший пример представляет собой сайт SlideShare (www.slideshare.net), где пользователи могут создавать группы, основываясь на событиях. Преимуществом групп, основанных на событиях, является то, что они могут предоставить пользователям возможность вступать в группы касательно определенных дат или местоположений.
   Разрешите пользователям создавать общедоступные или приватные группы
   Группы, созданные пользователями, могут быть либо общедоступными, либо приватными (рис. 9.50). Общедоступные группы полезны для массово популярных тем, таких как кулинария, туризм, политика и т. д., в которые наиболее вероятно пригласить участвовать многих пользователей. Эти общедоступные группы могут породить множество специализированных подсообществ, в зависимости от интересов их пользователей. Приватные группы обычно создаются пользователями, которые имеют очень специфические цели или связаны с темами, чувствительными по своей природе.
   Рис. 9.50. Сайт Facebook разбивает группы на открытые, закрытые и секретные. Открытые группы представляют собой общедоступные группы. Секретные группы являются приватными группами. А закрытые группы наполовину общедоступны, поскольку они предполагают разрешение администратора группы на вступление

   Общедоступные группы доступны для присоединения любому желающему и могут требовать или не требовать одобрения создателя группы. Приватные группы, с другой стороны, запрещены для всех, кто не приглашен создателем группы. Присоединение к общедоступным группам обычно осуществляется простым нажатием кнопки «Присоединиться к этой группе» и подтверждением намерения.
   Поощряйте пользователей присоединяться и участвовать
   Пользователи в основном предпочитают вступать в те группы и сообщества, которые являются активными. Вот почему так важно показывать индикаторы групповой активности, такие как количество пользователей, число записей, количество ответов, частота записей и т. д. (рис. 9.51). Также полезно отображать галерею активных пользователей группы. Это можно реализовать, показывая аватары пользователей в части обсуждения и/или показывая галерею новых и активных участников сообщества.
   (а)

   (б)

   (в)

   Рис. 9.51. Сайт Flickr показывает пользователям количество участников группы (а), «фотопул» (б) и список текущих обсуждений (в), чтобы отобразить активность и интересы в группе

   Показывайте пользователям группы их друзей
   Поскольку пользователи имеют некоторую общность со своими друзьями, они с большой вероятностью присоединятся к группам, к которым принадлежат их друзья. Именно поэтому пользователям важно видеть группы, в которые вступили их друзья.
   Создавайте сообщества, где пользователи могут найти нужные идеи и советы
   Необязательно иметь сообщества, запущенные только пользователями. Они могут быть основаны компаниями, чтобы поощрить комментарии и обратную связь от потребителей (рис. 9.52).
   Рис. 9.52. Компания Rally Software использует сообщества, чтобы поддержать новых и существующих пользователей, использовать уже завершенные продукты, пригласить пользователей запрашивать функционал и т. д.

   Несколько компаний используют сообщества, чтобы отладить свои продукты и предложения услуг. Сайт Salesforce.com использует сообщество обмена идеями IdeaExchange, чтобы поощрить идеи от пользователей и попросить их продвигать или понижать идеи карты их продукции (см. ссылку ideas.salesforce.com/popular/ideas_under_consideration).
 //-- Связанные шаблоны проектирования --// 
   Облако тегов (TAG CLOUDS) является важным механизмом навигации для динамически создаваемых групп, потому что пользователи могут выбрать соответствующий тег и перейти в ожидаемую группу (см. главу 5). В дополнение к этому, поскольку пользователи участвуют в сообществах, они могут зарабатывать репутацию (REPUTATION), основанную на качестве их вклада.


   MESSAGING (ОБМЕН СООБЩЕНИЯМИ)

 //-- Проблема --// 
   Одной из причин, по которым пользователи участвуют в онлайн-сообществах, является возможность общаться друг с другом. Это может проявляться в форме беседы (т. е. чата) или в качестве сообщения, на которое можно ответить позже. Также в некоторых случаях пользователи могут пожелать отправить массовое сообщение, т. е. послать сообщение нескольким людям одновременно и, возможно, им не нужен ответный отклик.
 //-- Решение --// 
   Разрешите пользователям общаться друг с другом либо синхронно (например, через чат), либо асинхронно (например, отправкой сообщений, напоминаниями и т. д.) (рис. 9.53).
   Рис. 9.53. Сайт Facebook предлагает пользователям несколько настроек сообщений: отправка по электронной почте, чат в режиме реального времени (зеленый маркер отображает, что пользователь находится в онлайне), а также толчок (невербальное сообщение)

 //-- Зачем --// 
   Важным аспектом пребывания в онлайн-сообществе и его поддержания является поощрение общения между его участниками. Чем проще для пользователей общаться друг с другом, тем более вероятно, что сообщество будет процветать и сможет самостоятельно поддерживать себя.
 //-- Как --// 
   Разрешите пользователям общаться друг с другом как синхронно в режиме реального времени, используя возможность мгновенного обмена сообщениями (например, чат), так и асинхронно, отправляя друг другу сообщения или размещая сообщения в расшаренном общедоступном месте. Наиболее распространенной настройкой асинхронного обмена сообщениями является разрешение пользователям отправлять приватные сообщения к кому-либо (рис. 9.54), а также размещать комментарии в общедоступных местах (например, «стены» на сайте Facebook).
   Рис. 9.54. Сайт LinkedIn позволяет пользователям общаться друг с другом, используя опцию «Отправить сообщение» («Send a Message»)

   Для содействия чатам показывайте онлайн-статус друзей
   Поскольку синхронный обмен сообщениями предполагает одновременное пребывание пользователей в онлайне, чтобы начать общение, отображайте, находятся ли пользователи в онлайне (рис. 9.55; см. следующий шаблон PRESENCE INDICATOR для дополнительных деталей).
   Рис. 9.55. Сайт Facebook показывает пользователям количество их друзей, находящихся в онлайне

   Поддерживайте вещательные сообщения
   Несмотря на то что общение один на один между пользователями является эффективным через опции отправки сообщений вроде чата и электронной почты, пользователи могут пожелать писать сообщения, видимые для каждого.
   Такие вещательные сообщения предпочтительнее, чем сообщения, адресованные определенному пользователю в сети. На сегодняшний день существует несколько различных способов для реализации такой потребности: например, «стены» (на сайте Facebook), заметки (на сайте Orkut) и комментарии (на сайте MySpace) (рис. 9.56).
   Рис. 9.56. Сайт Facebook позволяет пользователям размещать комментарии на «стенах» своих друзей

   Разрешите пользователям отображать свои предпочтения по обмену сообщениями
   Поскольку вещательные сообщения, такие как комментарии и заметки, являются частью профиля пользователя, они видимы каждому, кто получил доступ к этому профилю. Тем не менее позвольте пользователем управлять доступом, чтобы они могли определить, кто может писать и просматривать комментарии (рис. 9.57).
   (а)

   (б)

   Рис. 9.57. Сайт Facebook позволяет пользователям определять, кто может писать комментарии на стене (а). Он также дает возможность исключить определенных пользователей из написания комментариев (б)

   Очень важно, чтобы эти предпочтения, будучи один раз установленными, были четко отображены на страницах профиля пользователя (рис. 9.58).
   Рис. 9.58. Сайт Yahoo! Answers отображает предпочтения общения пользователей на страницах их профилей. В данном примере пользователь предпочитает не общаться через мгновенный обмен сообщениями или электронную почту

 //-- Связанные шаблоны проектирования --// 
   Чтобы разрешить пользователям общаться синхронно (т. е. в режиме реального времени), важно, чтобы они знали, что их «друзья» или «контакты» находятся в онлайне.
   Наличие индикатора присутствия (PRESENCE INDICATOR) может помочь объединить онлайн-статус пользователя и желание общаться с ним.


   PRESENCE INDICATOR (ИНДИКАТОР ПРИСУТСТВИЯ)

 //-- Проблема --// 
   В приложениях, которые позволяют пользователям взаимодействовать друг с другом и поддерживать список своих друзей (или контактов), пользователи могут пожелать знать, могут ли они начать общение в режиме реального времени с одним или несколькими друзьями.
 //-- Решение --// 
   Показывайте пользователям отображение, находится ли другой пользователь в онлайне (рис. 9.59). Тем не менее уважайте предпочтения приватности каждого пользователя и отображайте их онлайн-статус соответственно.
   Рис. 9.59. Сайт Meebo, онлайн-агрегатор мгновенного обмена сообщениями, показывает пользователям их контакты и онлайн-статусы. Как и другие настольные агрегаторы мгновенного обмена сообщениями, он группирует офлайн-пользователей отдельно и различает контакты и типы аккаунтов мгновенного обмена сообщениями различными изображениями

 //-- Зачем --// 
   Важной составляющей приложений, основанных на сообществах, является продвижение взаимодействия и общения среди своих участников. Несмотря на то что это может быть достигнуто посредством обмена офлайновыми сообщениями, вроде электронной почты, внедрение общения в режиме реального времени лучше продвигает сущность сообщества. Именно поэтому известие о том, в онлайне ли пользователь, является важным – поскольку оно может подсказать другим, что они могут начать беседу.
 //-- Как --// 
   Как и в программах мгновенного обмена сообщениями (например, ICQ, MSN Messenger, Skype), используйте изображение статуса или какие-то другие маркеры, чтобы отобразить, находится ли пользователь в онлайне.
   Разрешите пользователям отображать их статус активности
   Недавним направлением стало позволение пользователям отображать свой статус активности посредством своего индикатора присутствия (рис. 9.60). Этот подход также известен как распределение статуса (популяризован сайтом Twitter, который позволяет пользователям отправлять короткие сообщения, информируя других о том, что они делают в данный момент). Распределение статуса подобно статусным сообщениям в программах для мгновенного обмена сообщениями, где пользователи отображают свой текущий статус как «Занят», «Недоступен», «Готов поболтать», «Кушаю» и т. д., исключая то, что многие подобные программы предлагают предустановленные настройки такого выбора для пользователей в дополнение к возможности устанавливать свои собственные статусные сообщения пользователями.
   (а)

   (б)

   Рис. 9.60. Сайт Facebook предоставляет пользователям возможность отображать, над чем они работают (а). Как только пользователи отобразят свой статус, он становится видимым другим пользователям (б)

   Разрешите пользователям устанавливать собственные статусы
   По причинам приватности или любым другим некоторые пользователи могут предпочесть не отображать свой индикатор онлайн-присутствия или статус для остальных пользователей. Либо они могут захотеть (или не захотеть) разрешить видеть свой онлайн-статус только определенным пользователям. Чтобы обеспечить такие предпочтения, разрешите пользователям определять тех, кто может (и не может) просматривать их статус.
 //-- Связанные шаблоны проектирования --// 
   Индикаторы онлайн-присутствия полезны не только для того, чтобы информировать о том, находятся ли другие пользователи в онлайне. Также они полезны в принятии решения, стоит ли начать с ними беседу. По этой причине шаблон PRESENCE INDICATOR часто сопровождается внедрением шаблона MESSAGING.


   SHARING (СОВМЕСТНЫЙ ДОСТУП)

 //-- Проблема --// 
   Пользователи могут пожелать поделиться (осуществить совместный доступ) контентом – фотографиями, видео, новыми статьями и т. д. – с другими пользователями. Контент, который становится доступным, может принадлежать или не принадлежать тому человеку, который им делится.
 //-- Решение --// 
   Разрешите пользователям делиться контентом с другими (рис. 9.61).
   Рис. 9.61. Сайт SlideShare предлагает несколько настроек совместного доступа. Когда кто-то загружает слайд-шоу, он автоматически разрешает совместный доступ к нему для других. В дополнение к этому пользователи могут нажать кнопку «Разрешить совместный доступ к этому слайд-шоу» («Share this slideshow»), чтобы пригласить определенных людей просмотреть его. Либо они могут разрешить совместный доступ к нему всем без исключения, разместив ссылку на ресурсах вроде Digg, Reddit и MySpace

 //-- Зачем --// 
   Существует несколько причин, по которым пользователи могут пожелать разрешить совместный доступ к информации (Porter, 2008):
   • поддерживать семью и друзей информированными;
   • делиться уникальным и приятным опытом;
   • отвечать взаимностью;
   • помогать найти ответы на чьи-то вопросы или провести исследование;
   • представить людей друг другу;
   • поделиться информацией.
   Интересным побочным продуктом совместного доступа является то, что он позволяет пользователям увеличить свою репутацию внутри сообщества – посредством узнавания их как экспертов в некоторых областях (см. шаблон REPUTATION, рассмотренный ранее в этой главе). Также совместный доступ является основой социального взаимодействия. Для процветания сообщества (и его поддержания), как в офлайне, так и в онлайне, очевидно, что оно должно поддерживать совместный доступ и улучшать участие и взаимодействие среди своих участников.
 //-- Как --// 
   Портер (Porter, 2008) определил две формы совместного доступа: явную и скрытую. Скрытый совместный доступ происходит тогда, когда доступ к контенту осуществляется силами пользовательского участия в сообществе. Например, когда пользователи помещают страницу в избранное на сайте хранения закладок, загружают фотографии на Flickr или выкладывают видео на YouTube, данные позиции неявно внедряются в остальное сообщество до тех пор, пока они не будут отмечены как приватные. Скрытый совместный доступ даже не требует каких-либо определенных действий от других пользователей. Доступ на позиции распространяется с пользователями сообщества, как только файлы размещены или сделаны доступными в приложении (рис. 9.62). Явный совместный доступ, с другой стороны, предполагает от пользователей отправки прямого сообщения, обычно по электронной почте, на получение доступа к контенту в приложениях вроде Google Docs, Zoho, Delicious и т. д.
   (а)

   (б)

   Рис. 9.62. Фотографии пользователей разрешены к совместному доступу для всех пользователей сайта Flickr (а) до тех пор, пока они не будут помечены как приватные после загрузки (б)

   Разрешите пользователям осуществлять совместный доступ к контенту посредством электронной почты
   Самой базовой функцией совместного доступа является предоставление пользователям возможности отправлять интересный контент (например, новые истории, рецепты, фотографии, видео, планы путешествий и т. д.) через электронную почту. Разрешите пользователям делиться контентом, вводя одно или более имен получателей и их адреса электронной почты (а также свои собственные данные, чтобы получатели узнали, кто отправляет информацию). Находящийся в совместном доступе контент может быть частью сообщения электронной почты или высылаться в виде ссылки, в зависимости от происхождения и размера контента. Например, рецепты могут быть включены в сообщение электронной почты полностью, но фотографии и видео могут потребовать от получателя прохождения по ссылке, предоставленной в электронном сообщении.
   Чтобы убедиться, что пользователь, инициировавший совместный доступ, является человеком, предусмотрите использование публичного теста (CAPTCHA) (см. главу 3). В дополнение к этому, чтобы подавить опасения о намерениях провайдера приложения собрать базу адресов электронной почты, включите ссылку на политику конфиденциальности.
   Разрешите пользователям размещать контент на других сайтах
   По мере увеличения пользовательского участия становится важным упростить процесс осуществления совместного доступа посредством приложений третьих сторон. Многие приложения и сайты контента сейчас разрешают пользователям продвигать контент в своих приложениях через такие сайты, как Digg, Facebook, Delicious и т. д. (рис. 9.63).
   Рис. 9.63. Сайт SlideShare позволяет пользователям разрешать совместный доступ к презентациям во множестве веб-приложений

   Устанавливайте постоянные ссылки
   Постоянные ссылки – это постоянные URL-адреса для веб-контента, которые упрощают переход на определенный блог или сообщение форума. Контент, который может быть смещен со своего текущего местоположения (например, домашняя страница или заглавная страница блога), получает преимущества от использования постоянных ссылок, потому что ссылка не меняется и таким образом упрощается переход по ней для других пользователей.
   На примере с блогами главная страница блога меняется, так как размещаются новые записи. Когда впервые появляется запись в блоге, она может быть наверху страницы, а затем смещается вниз по странице, так как появляется все больше новых записей, постепенно перемещая ее на другую страницу. Чтобы быть уверенными, что пользователи могут получить доступ к записи в любое время в будущем, разрешите пользователям переходить к ней, используя ее постоянную ссылку.
   Постоянные ссылки также полезны, когда контент с высокой степенью вероятности может быть использован в качестве ссылки на источник прежде, чем приложение обеспечит этот контент. Постоянные ссылки обычно спроектированы так, чтобы быть легко прочитанными по сравнению с оригинальными URL.
   Использование формата, показанного в следующем совете, позволяет поисковым системам собирать постоянные ссылки и устанавливать связи между документами прежде, чем расшифруются связи от тега привязки (например ).

   Совет
   Включите постоянную ссылку на страницу при помощи HTML, используя, как показано ниже, rel="bookmark":
   

   Разрешите контенту быть встраиваемым
   Разрешите такому контенту, как видео, музыка, длинные дискуссии и т. д., находиться в совместном доступе посредством его встраивания в другие приложения. Встраивание контента осуществляется простым способом: пользователь может копировать необходимый HTML-код (или JavaScript-сценарий) и вставить его на веб-страницу по своему выбору (рис. 9.64).
   Рис. 9.64. Сайт YouTube не только упрощает пользователям встраивание видео на веб-страницы по их выбору, но также предлагает несколько вариантов настройки

   Предложите печатные версии страницы
   Не весь совместный доступ осуществляется в онлайне. Существуют пользователи, которые предпочитают делиться распечатанными материалами. Предложите им возможность просматривать версию страницы для печати или PDF-вариант (рис. 9.65). Затем они могут распечатать страницу или поделиться ею в офлайне. Если у них есть программа Adobe Acrobat, пользователи могут также оставлять комментарии по материалу.
   Рис. 9.65. Сайт Knowledge@Wharton не только предлагает пользователям онлайн-настройки для чтения статьи, ее прослушивания и предоставления доступа другим пользователям, но также продвигает офлайн-использование, позволяя загрузку аудио и PDF-версии статьи

 //-- Связанные шаблоны проектирования --// 
   Чтобы предотвратить распространение спама или предложений от автоматизированных веб-пауков, часто предлагается использование публичного теста (CAPTCHA), когда пользователи делятся контентом с другими (см. главу 3). Совместный доступ (SHARING) также является первым шагом для сотрудничества (COLLABORATION).


   COLLABORATION (СОТРУДНИЧЕСТВО)

 //-- Проблема --// 
   В процессе осуществления совместного доступа пользователи могут не только желать делиться информацией с другими, но также работать с ними совместно, чтобы они могли обеспечить конечный результат.
 //-- Решение --// 
   Разрешите сотрудничество таким образом, чтобы участники могли работать над одной и той же позицией (например, документами, электронными таблицами и т. д.) в одно и то же время или поочередно (рис. 9.66).
   Рис. 9.66. Приложение Google Docs позволяет нескольким пользователям работать над одной и той же электронной таблицей в одно и то же время. Чтобы установить различия между участниками, они выделяются различными цветами. Также это приложение позволяет пользователям общаться в режиме реального времени в процессе работы над одним и тем же документом, с целью обеспечить совместную работу

 //-- Зачем --// 
   Для своего успешного завершения многие задания предполагают совместную работу между двумя и более людьми.
   По своей природе совместная работа часто осуществляется в режиме реального времени, где все участники работают (т. е. обсуждают, пишут, общаются, разговаривают в чате и т. д.) одновременно.
   Либо совместная работа может выражаться в последовательных действиях, когда один человек работает над позицией в определенный момент времени, а затем отправляет ее другим.
 //-- Как --// 
   Совместная работа предусматривает несколько активностей: осуществление совместного доступа к информации для других пользователей, координация и приглашение пользователей принять участие, совместная работа над документами в совместном доступе, просмотр изменений и обновлений, а также, если необходимо, возвращение к предыдущим версиям.
   Разрешите пользователям определять природу совместного доступа
   В качестве первого шага при совместной работе пользователи должны осуществить совместный доступ к позиции и определить совместный доступ к ней. Владелец позиции может определить, могут ли люди, которым позиция доступна в совместном доступе, просматривать ее, комментировать и/или изменять ее (рис. 9.67).
   Рис. 9.67. Приложение Buzzword (корпорации Adobe) разрешает пользователям отображать роли пользователей, которыми разрешен совместный доступ к документу: «Соавтор» («Co-author»), «Обозреватель» («Reviewer») или «Читатель» («Reader»). Читатель может только просматривать документ, обозреватель может читать и комментировать его, а соавтор может читать, комментировать и изменять документ

   Облегчите планирование
   Координация является важным аспектом совместной работы. Важной задачей при совместной работе является определение взаимно подходящего времени для всех участников. Этого можно достичь несколькими способами. Один подход – разрешить участникам делиться своим расписанием, чтобы, просматривая его, можно было узнать возможные временные интервалы. Многие календарные веб-приложения разрешают пользователям осуществлять совместный доступ к своим календарям, чтобы помочь определить те временные интервалы, которые открыты для планирования (рис. 9.68).
   Рис. 9.68. Этот пример приложения Google Calendar показывает четыре календаря в совместном доступе. Как только осуществят к ним совместный доступ и наложат друг на друга, легко увидеть, что единственное открытое время для всех четырех пользователей приходится на вторник, с 12:00 до 12:30

   В тех случаях когда совместный доступ к календарям невозможен, популярным подходом является предоставление командным лидерам нескольких временных интервалов и позволение всем остальным членам команды проголосовать за удобное им время (рис. 9.69).
   Рис. 9.69. Чтобы найти взаимно удобное время, сайт Doodle.ch предоставляет пользователям возможность создавать опросы и отвечать другим членам команды, выбирая удобные временные интервалы, поддерживая встречу или планируя событие

   Не все встречи можно запланировать. Часто во время чата или беседы пользователи могут пожелать осуществить совместный доступ к документу или начать сессию совместной работы.
   Разрешите пользователям создавать такие импровизированные встречи, чтобы улучшить совместную работу (см. шаблон PRESENCE INDICATOR, рассмотренный ранее в этой главе).
   Разрешите дополнительные режимы взаимодействия
   В процессе работы в режиме реального времени над одним и тем же документом или во время «мозгового штурма», используя белую доску, улучшайте совместную работу, позволяя участникам видеть друг друга, общаться в чате друг с другом, разговаривать друг с другом, писать заметки и т. д. (рис. 9.70).
   Рис. 9.70. Приложение Adobe ConnectNow предоставляет пользователям возможность общаться в чате, оставлять заметки, видеть друг друга через вебкамеру, разговаривать и т. д. в процессе встречи или совместной работы

   Разрешите пользователям управлять изменениями
   В процессе совместной работы над одним и тем же документом очень важно, чтобы пользователи не переписывали обновления друг друга. Приложение должно создать необходимые «блокировки», чтобы сделать взаимодействие относительно гладким, прежде чем пользователи закроют документ, чтобы сделать изменения, и затем войдут заново в обновленные документы (рис. 9.71).
   (а)

   (б)

   Рис. 9.71. Приложение While показывает пользователям, кто редактирует документ (а). Adobe Buzzword не разрешает одновременные изменения. Если пользователь намеревается поступить таким образом, появляется сообщение, отображающее причину того, почему для них заблокирована возможность обновления документа (б)

   Когда несколько участников работают над одним документом, важно знать, какие изменения были сделаны и кто их осуществил. Большинство приложений предоставляет пользователям возможность выбирать версии документа и показывать их в сравнении, выделяя то, что было добавлено, изменено и удалено (рис. 9.72).
   Рис. 9.72. При сравнении версий приложение Google Docs отображает изменения, которые были сделаны и показывает, кто сделал их

   Как только пользователи определили изменения, в том случае если они не согласны с изменениями или предпочитают предыдущую версию документа, они должны иметь возможность вернуться назад к любой из предыдущих версий (рис. 9.73). Это очень распространено в вики-приложениях [15 - Вики-приложение – это веб-приложение, которое предоставляет пользователям возможность совместно создавать, редактировать и связывать веб-страницы, используя очень простой метод разметки. Относительно недавно вики-приложения стали также предоставлять расширенные возможности редактирования текстов.], где страницы может добавлять, редактировать или изменять любой из участников. Большинство вики-приложений, кроме того, разрешают пользователям откатывать страницы к предыдущим версиям.
   Рис. 9.73. Приложение Zoho Writer показывает пользователям версию документа в выпадающем списке Show version (Показать версию). Пользователи могут просматривать любую версию, а затем нажать кнопку Revert (Вернуться), чтобы вернуться к данной версии документа. Обратите внимание, что эта настройка возможна для пользователей независимо от того, работают ли они совместно

 //-- Связанные шаблоны проектирования --// 
   Первым шагом в сотрудничестве (COLLABORATION) является предоставление доступа другим пользователям (SHARING) к документам или другим приложениям. В дополнение к этому, чтобы облегчить совместную работу, необходим обмен сообщениями (MESSAGING) между пользователями.



   Глава 10
   Интернационализация


   Введение

   Когда проектируются веб-приложения, предназначенные для глобальной аудитории, необходимо решить две важные проблемы: интернационализации и локализации (Aykin, 2000) [16 - Близкий ему термин глобализация (иногда сокращается до G11N) обозначает процесс подготовки как приложения, так и бизнеса к международным рынкам (Aykin, 2000).]:
   • Интернационализация (I18N) [17 - Термины «интернационализация» и «локализация» иногда сокращаются как I18N и L10N соответственно. 18 в I18N обозначает количество букв между I и N в слове интернационализация ( internationalization ); аналогичным образом, 10 в L10N обозначает количество букв между L и N в слове локализация (localization).] представляет собой процесс разработки приложения, так чтобы оно было адаптировано к различным языкам и регионам без внесения изменений.
   • Локализация (L10N) представляет собой процесс адаптации приложения к конкретному региону или языку путем добавления местных компонентов и перевода текстов.
   Интернационализация веб-приложений является важным шагом на пути локализации.
   Она не только способна наполовину уменьшить количество общих усилий по локализации (Hurst, 2007), но и может устранить необходимость в разработке отдельных версий приложения для конкретного региона и языка.
   Процесс интернационализации позволяет сочетать необходимую гибкость и приспособляемость в веб-приложениях на начальном этапе проектирования (а не только во время локализации) и требует обратить внимание на культурные нормы и предпочтения, выбор цвета, уместность изображений и т. д. (EXTENSIBLE DESIGN). В дополнение к разработке для расширения конструкторы должны быть уверены, что форматы, используемые для обозначения дат (DATE FORMAT), времени (TIME FORMAT), чисел (NUMBER FORMAT), а также валюты (CURRENCY AND CURRENCY FORMAT) представлены в соответствии с принятыми традициями и не требуют дополнительных усилий по интерпретации (см. врезку Геолокация).
   После локализации приложений важно, чтобы пользователи имели возможность легко перейти к искомому локальному приложению (GLOBAL GATEWAY) и/или сменить используемый язык при взаимодействии с приложением (LANGUAGE SELECTOR).

   ГЕОЛОКАЦИЯ
   Для представления соответствующих форматов дат, времени, чисел и валюты по умолчанию многие приложения используют метод геолокации. Геолокация обозначает определение географического местоположения компьютера в Интернете. Зная географическое положение компьютера, и, следовательно, местонахождение его пользователя, веб-приложения могут направлять пользователей на соответствующую региональную версию приложения. Например, пользователи из Индии, введя www.google.com, могут быть направлены на www.google.co.in, а пользователи из Японии – на www.google.co.jp. Геолокация также может быть использована для построения предположений о предпочтениях пользователей относительно даты, времени, чисел и валюты. Например, пользователям, открывающим приложение в Соединенных Штатах, могут быть показаны цены в долларах США ($), а имеющим доступ к приложению из Японии цены могут быть показаны в йенах (¥).

   Несмотря на то что в данной главе рассматриваются несколько важных шаблонов, интернационализация и локализация – очень обширные темы. Читателям предлагается ознакомиться с ресурсами, перечисленными в разделе справочной литературы в конце книги, особенно полезны будут дель Гальдо и др. (del Galdo et al., 1996), Эйкин (Aykin, 2004, 2006), Юнкерс (Yunkers, 2002) и Ишида (Ishida, 2008).


   EXTENSIBLE DESIGN (РАСШИРЯЕМЫЙ ДИЗАЙН)

 //-- Проблема --// 
   Несмотря на то что веб-приложения предназначены, в первую очередь, для пользователей конкретного региона и языка, проектировщики могут захотеть в будущем сделать их доступными для других регионов.
 //-- Решение --// 
   Следует проектировать веб-приложения так, чтобы при этом не отдавалось предпочтение какому-либо конкретному языку или стране, а после локализации не требовалось капитальной перестройки пользовательского интерфейса или контента за исключением перевода. Для этого необходимо определить и выделить элементы приложения для отдельных стран и языков и их пользовательских интерфейсов и гарантировать, что ни один из локализуемых элементов не будет «жестко запрограммирован» в нем.
 //-- Зачем --// 
   Расширяемый дизайн (EXTENSIBLE DESIGN) является основой интернационализации. Он подготавливает веб-приложения к локализации и устраняет необходимость в создании отдельных версий для каждой конкретной страны или языка. При наличии только одной основной версии становится легче не только поддерживать код, но также и обеспечивать согласованность между вариантами приложения на различных языках в пользовательском интерфейсе. Более того, делая вебприложения независимыми от региона и нейтральными с точки зрения культуры, расширяемый дизайн старается не использовать элементы проекта, которые могут быть неправильно истолкованы или являться оскорбительными для других культур.
   Расширяемый дизайн помогает сделать веб-приложения более доступными для людей с ограниченными возможностями. Например, проектируя приложение таким образом, чтобы оно могло подгонять текст по размеру при переводе его на другие языки, что позволяет пользователям с ослабленным зрением увеличивать текст, не меняя при этом макет страницы (см. главу 11).
 //-- Как --// 
   Расширяемый дизайн охватывает все аспекты проектирования пользовательского интерфейса: разметку, изображения, сообщения, терминологию и т. д. Ниже приведены некоторые из лучших способов разработки расширяемого дизайна.
   Использование кодировки UTF-8 для веб-страниц
   Кодировка символов означает преобразование символов (алфавита, цифр, знаков препинания и т. д.) в уникальный номер (например, А сопоставляется с 65 в формате кодирования ASCII [18 - ASCII означает американский стандартный код для обмена информацией и произносится «Эски».]). Это помогает веббраузерам определить, какие символы необходимо отобразить на странице. Выбор способа кодировки символов, таким образом, определяет языки, которые веб-приложение может быть в состоянии поддерживать. Надлежащий отбор также важен для веб-приложений, предназначенных для поддержки пользователей, которые могут предпочесть вводить данные на других языках, кроме английского.
   Оригинальный метод кодирования, ASCII, основан на английском алфавите и поддерживает 94 символа. ISO 8859-1, расширение метода кодировки ASCII, основано на многонациональном наборе символов и поддерживает 191 символ латинского алфавита. Несмотря на то что оно поддерживает английский и ряд европейских языков, оно не поддерживает наборы символов азиатских языков, таких как китайский, японский, индийский и некоторые другие. Метод кодировки UTF-8 кодирует все символы в стандарт Unicode и таким образом поддерживает символы большинства языков мира, в том числе и русский. Поэтому для максимального охвата с точки зрения поддержки языков следует использовать формат кодировки UTF-8 [19 - UTF-8 относится к 8-битной версии формата преобразования Unicode (Unicode Transformation Format).].
   Указать метод кодирования для веб-страниц очень просто. Вот несколько примеров:
   • XHTML:

   

   • JSP (серверные страницы Java):

   <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>


   Примечание
   Семантическая структура также помогает повысить доступность. Для получения более подробной информации см. шаблон SEMANTIC MARKUP в главе 11.

   Дополнительную информацию о UTF-8 и стандартах Unicode можно найти на сайтах www.utf-8.com/ и www.unicode.org/faq/utf_bom.html.
   Избегайте использования презентационных тегов в разметке
   Вместо использования в разметке тегов, таких как и , применяйте семантически эквивалентные им теги, такие как и . Использование презентационных тегов затрудняет локализацию, так как в разных языках существуют различные способы выделения текста.
   Например, японские авторы стараются не применять выделение полужирным шрифтом или курсивом, потому что их символы слишком сложны для подобной текстовой обработки (Ishida, 2008), вместо этого они используют для выделения wakiten (специальные маркеры) (рис. 10.1).
   Рис. 10.1. Японские авторы предпочитают использовать специальные маркеры для выделения, а не выделять текст полужирным шрифтом или курсивом. Эти местные формы выделения поддерживает модуль шрифтов каскадных таблиц стилей 3 уровня (CSS3) (см. CSS3 и международные тексты на www.w3.org/International/articles/css3-text/#Slide0200)

   Предоставляйте возможности увеличения объема текста
   В среднем тексты на отличных от английского языках занимают на 30–40 % больше места, чем тексты на английском (рис. 10.2).
   Рис. 10.2. Фраза «Добавить примечание» при переводе на некоторые европейские языки удлиняется на 50-100%

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

   (б)

   Рис. 10.3. В регистрационной форме eBay метки расположены над полями для ввода текста формы (а). При переводе страницы на немецкий, макет страницы сохраняется (б)

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

   • Позвольте графическим элементам увеличиваться по вертикали и/или по горизонтали. Разработка визуальных элементов, допускающих разбухание текста, делает возможным их повторное использование независимо от языка, на который локализовано приложение (рис. 10.5).
   (а)

   (б)

   Рис. 10.5. Для блока «учетная запись» на Blogger.com используется рамка со скругленными углами. При переводе с английского (а) на испанский (б) требуется больше места для размещения переведенной информации. Благодаря расширяемой конструкции рамки она может легко предоставить дополнительное пространство по вертикали, не меняя макет

   • Оставьте достаточно пространства для меток иконок. Поскольку иконки отображаются не всегда (см. шаблон ICONS в главе 12), их обычно дополняют текстовыми метками. Размещение меток и проектирование иконок должны выполняться с учетом увеличения текста, чтобы избежать потенциальных проблем с проектом во время локализации (рис. 10.6).
   (а)

   (б)

   Рис. 10.6. Flickr показывает метки иконок, когда страница представлена на английском языке (a), но удаляет их, когда страница отображается на других языках (б). Вместо этого они показаны в виде подсказок. Так может быть потому, что для меток, встроенных в изображения, в каждом языке требуется разный набор картинок. Кроме того, поскольку переведенные метки занимают больше места, разместить все иконки в имеющемся пространстве может быть затруднительно

   Проектируйте сообщения для размещения переменного текста
   Переменный текст, также называемый соединенными строками, представляет собой текст, составленный с использованием как статических, так и переменных фрагментов и, как правило, представленный в форме предложений. Например, на рис. 10.7, а показана страница результатов поиска Google с сообщением: «Результаты 1-10 из примерно 1 620 000 000 для веб-сайта».
   (а)

   (б)

   (в)

   Рис. 10.7. Сообщение о результатах поиска на Google USA (a), Google India (б) и Google Japan (в)

   Переменными текстами в этом сообщении являются количество показываемых результатов (1-10), общее количество результатов поиска (1 620 000 000) и поисковый запрос (веб-сайт). В аналогичном сообщении на Google India на рис. 10.7 представлен иной порядок переменных. Сначала показано общее количество результатов поиска (194 000), количество показываемых результатов (1-10) и поисковый запрос () (б). В Google Japan на рис. 10.7 представлен другой порядок переменных текстов, начинающийся с поискового запроса (website), затем следует общее количество результатов поиска (1 150 000 000) и количество показываемых результатов (1-10) (в).

   Совет
   Предоставление возможности увеличения объема текста важно даже для веб-приложений, которые не будут локализованы. Игнорирование данной проблемы может привести к нарушениям макета страницы или же пользователи, которые предпочитают более крупный текст, будут испытывать затруднения при чтении контента.

   Если сообщения закодированы таким образом, что фрагмент переменного текста просто вставлен в статическое сообщение, такое сообщение будет почти невозможно локализовать. Поэтому для облегчения локализации важно, чтобы код обеспечивал возможность изменения структуры предложения и порядка следования переменных. Возможным решением будет перевод всего сообщения или применение другого способа представления информации, как правило, не в форме предложений, с отделением метки и переменного текста (например, Общее количество результатов поиска: 200) (Hurst, 2007).
   Исключите текст из изображений
   Избегайте размещения текста в изображениях. Когда текст включен в изображения, при локализации необходимо создавать новый файл с переведенным текстом. Вместо этого попробуйте применить наложение текста поверх изображения (рис. 10.8).
   (а)

   (б)

   (в)

   Рис. 10.8. Кнопка Sign Up Now! (Зарегистрироваться сейчас!) на WordPress.com является наложением текста «Зарегистрироваться сейчас!» поверх изображения кнопки (а), что облегчает повторное использование оригинального изображения кнопки в качестве фонового изображения и использование переведенного текста для других языков (б, в)

   Используйте изображения, нейтральные с точки зрения культуры
   При использовании изображений и иконок следует использовать общеизвестные объекты и избегать использования этноцентрических изображений и/или таких, которые могут быть квалифицированы как оскорбительные в других культурах. Например, для представления электронной почты используйте образ конверта, а не сельских почтовых ящиков, который легко понять только жителям Соединенных Штатах. Кроме того, старайтесь не использовать жесты на иконках и изображениях, так как они могут быть восприняты как оскорбление в некоторых культурах. Например, использование знака «ок» (указательный и большой пальцы, образуют круг) считается непристойным в Бразилии [20 - В Турции это знак чего-то гомосексуального. В Китае это может означать «ноль» или номер три, в Японии и Корее он может относиться к форме монет и означать «деньги». Для получения дополнительной информации см. The OK Hand Gesture Around the World– Learn the Meaning of Hand Gestures (2008); www.articlesbase.com/travel-tips-articles/the-ok-hand-gesture-around-the-world-learn-the-meaningof-hand-gestures-624739.html.], в то время как жест большой палец вверх (знак «все хорошо» или «хорошо» в Северной Америке) считается очень оскорбительным в Ираке и других исламских странах (Кернер, 2003).
   Даже символы, обычно считающиеся «нейтральными», могут не оказаться таковыми. Символ проверки (галочка в квадратном поле) означает «правильный» или «хорошо» во многих странах. Но в Японии и Корее вместо галочки используется круг, что означает «да», а галочка тут означает «ничего хорошего» или «неверно». И наконец, старайтесь не использовать карты, которые включают спорные региональные или государственные границы (например, показывая государственные границы на картах Индии и Пакистана).
   Используйте культурно значимые метафоры
   В Северной Америке использование тележки для покупок – верная метафора для приобретения товаров, потому что она легко ассоциируется с реальным опытом пользователей. В Европе и Азии значок тележки для покупок может привести к путанице, поскольку пользователи более знакомы с корзиной для покупок, чем с тележкой.
   Сайтам электронной торговли следует сменить метки и/или изображения при обслуживании клиентов в этих странах (рис. 10.9).
   Рис. 10.9. Amazon использует метку «корзина» на сайте электронной торговли в Соединенном Королевстве (впрочем, значок все еще напоминает тележку для покупок)

   Используйте простой язык
   Старайтесь не запутать людей, не являющихся носителями языка. Для этого следует использовать простой язык и воздерживаться от сленга и разговорных выражений в тексте.
   Кроме того, с осторожностью употребляйте приветствия, такие как «Добро пожаловать, » в приложениях, которые могут использоваться не американскими пользователями.
   По данным культурных измерений Хофстеда (см. www.greet-hofstede.com/hofstede_united_states.shtml) североамериканская культура очень неформальна по сравнению со многими другими культурами, о чем свидетельствует ее низкий индекс степени почитания власти и принятия общественного неравенства. Напротив, в Азии неформальность будет воспринята как неуместная, а к людям, как правило, обращаются по фамилии.
   Приветствия, используемые Amazon или Flickr, больше подходят для веб-приложений с международными аудиториями (рис. 10.10).
   (а)

   (б)

   Рис. 10.10. Приветствие, используемое Flickr (а) и Amazon (б), больше подходит для международной аудитории

   В целом, чтобы облегчить локализацию, избегайте следующего при разработке веб-контента (Hurst, 2007):
   • слов, имеющих несколько значений;
   • сокращений;
   • символики;
   • акронимов;
   • сленга или жаргона;
   • обозначений пола;
   • создания новых слов;
   • сокращения множественного числа или словосочетаний;
   • всего, что описывает образ жизни или культуру, характерную для конкретной страны.
 //-- Связанные шаблоны проектирования --// 
   Шаблоны, описанные в главе 11 – SEMANTIC MARKUP, UNOBTRUSIVE STYLE SHEETS, UNOBTRUSIVE JAVSCRIPT и т. д. – также подходят для интернационализации, так как они помогают сделать веб-приложения легко локализующимися.


   DATE FORMAT (ФОРМАТ ДАТЫ)

 //-- Проблема --// 
   Использование формата даты, распространенного в одном регионе, может ввести в заблуждение пользователей в других регионах. Например, формат даты, используемый в Соединенных Штатах (мм/дд/гг или мм/дд/гггг) будет непривычен европейским пользователям, поскольку они знакомы с форматами дд/мм/гг или дд/мм/гггг, а также японским пользователям, которые используют формат гг/мм/дд.
 //-- Решение --// 
   При отображении даты следует использовать формат гггг-мм-дд, рекомендованный ISO 8601 или формат, который устраняет путаницу между месяцем и годом даты (рис. 10.11 и 10.12).
   Рис. 10.11. Sun использует формат гггг/мм/дд для отображения даты (небольшое изменение рекомендованного ISO гггг-мм-дд)

   Рис. 10.12. PayPal использует формат даты, указывая сокращенно месяц, дд, гггг, чтобы месяц и год были очевидны

 //-- Зачем --// 
   Несмотря на то что веб-приложения, предназначенные для использования исключительно в стране или регионе, могут зависеть от местного стандарта формата даты, пользователи из других регионов, возможно, окажутся сбитыми с толку, если он не будет соответствовать принятым у них условным обозначениям.
   Например, дата «02/04/03» может быть истолкована как:
   • 2 апреля 2003 (Европа);
   • 4 февраля 2003 (США);
   • 3 апреля 2002 (Япония).
   Международный формат, определяемый ISO (ISO 8601), решает эту проблему, определяя численную систему дат в формате гггг-мм-дд. Отображение даты в формате ISO или уточнение месяца и года предотвращает путаницу. Кроме того, данный подход удобен при работе с компьютером, так как облегчает хронологическую сортировку дат (см. www.w3.org/Intemational/questions/qa-date-format).
   Однако ISO-формат даты трудночитаем, поскольку он довольно сильно отличается от родного для большинства пользователей формата даты. Когда пространство и сортировка не являются проблемой, используйте более удобный для чтения формат, разъясняющий месяц и оставляющий год очевидным (например, февраль, 4, 2003 или 4 февраля 2003).
 //-- Как --// 
   У проектировщиков существуют два варианта отображения даты:
   1. Использование нейтрального формата, рекомендованного ISO 8601. Формат гггг-мм-дд, рекомендованный ISO 8601 является решением, наиболее часто применяемым веб-приложениями с разнообразной пользовательской базой, где:
   • гггг – это год (все цифры, например 2008);
   • мм – месяц (с 01 – январь по 12 – декабрь);
   • дд – это день (с 01 по 31).
   2 января 2008 тогда будет показано, как 2008-01-02.
   2. Использование формата, который делает месяц и год очевидными. В данном подходе используется название месяца, а год обозначен четырьмя цифрами. Так дата может быть записана в виде: 2 января 2008 года. Этот подход более естественен для пользователей, поскольку его легче прочитать. Однако он занимает больше места и, так как это может повлиять на производительность сортировки, менее удобен для работы с компьютером.
   Будьте осторожны при сокращении названия месяца
   Сокращения названия месяца в датах до нескольких первых букв (например, 2 янв. 2008) может стать проблемой для пользователей в некоторых странах. Например, на французском языке первые три буквы названий месяцев «июнь» и «июль» одинаковые – juin и juillet соответственно.
   Учитывайте языковые предпочтения пользователей при отображении даты
   В веб-приложениях можно узнать языковые предпочтения пользователей и показывать им родной формат даты с помощью заголовка Accept-Language HTTP. Однако данный метод отображения даты может быть неуместен, если контент не локализован, и поэтому вполне возможно, что формат даты не совпадет с языком страницы. Например, если страница представлена на немецком языке, отображение дат в североамериканском формате дд/мм/гггг может ввести в заблуждение (даже когда пользователи предпочитают английский), так как пользователи могут не суметь определить, используется ли на странице формат мм/дд/гггг или дд/мм/гггг.
   Используйте всплывающий календарь для выбора даты
   Чтобы свести к минимуму ошибки при вводе даты, примите во внимание возможность использования всплывающих календарей. Они помогают несколькими способами. Во-первых, они предотвращают появление при вводе данных ошибок, вызванных различными форматами даты (мм/ дд/гг вместо дд/мм/гг). Во-вторых, поскольку пользователи могут видеть и месяц, и день, они могут быть уверены, что выбрали правильную дату. При использовании всплывающих календарей отображайте календарь сразу, как только будет сфокусировано поле даты, чтобы побудить пользователей выбрать дату из календаря, однако не лишайте их возможности вводить дату с помощью клавиатуры. Кроме того, при использовании всплывающего календаря, убедитесь, что месяц четко указан (рис. 10.13).
   (а)

   (б)

   Рис. 10.13. Несмотря на использование формата дд/мм/гггг (даже для различных языков), всплывающий календарь от Flickr позволяет легко выбрать дату в календаре (а). Месяц во всплывающем календаре локализован для выбранного языка (б)

 //-- Связанные шаблоны проектирования --// 
   Для использования нейтрального языкового формата требуется больше горизонтального пространства, чем для формата США в виде мм/дд/гг или мм/дд/гггг. Поэтому важно, чтобы на страницах был применен расширяемый дизайн (EXTENSIBLE DESIGN) для удовлетворения требований дополнительного пространства. Кроме того, следует рассмотреть вопрос об использовании шаблона GLOBAL GATEWAY для выявления страны и языковых предпочтений пользователей.


   TIME FORMAT (ФОРМАТ ВРЕМЕНИ)

 //-- Проблема --// 
   Как и форматы дат, временные форматы варьируются от одного региона к другому. Хотя каждый временной формат показывает часы, минуты и секунды, их порядок представления и разделители часто различаются с точки зрения 12– или 24-часового формата; символа, используемого для отдельных часов, минут и секунд, нулевых головных цифр; отображения часовых поясов; использования летнего времени.
 //-- Решение --// 
   По возможности показывайте время в соответствии с временными зонами пользователей и используйте местные условные обозначения для отображения времени, т. е. либо в 12-часовой системе, либо в 24-часовой (рис. 10.14).
   Рис. 10.14. Google Calendar локализует время в соответствии с региональным часовым поясом пользователей, даже если встреча запланирована кем-то, находящимся в другом часовом поясе

   Если время не может быть представлено в родном формате пользователей, воспользуйтесь рекомендациями ISO 8601, который использует 24-часовую систему с форматом ччммсс или с расширенным форматом чч:мм:сс, где:
   • чч обозначает часы между 00 и 24;
   • мм обозначает минуты между 00 и 59;
   • сс обозначает секунды между 00 и 59 (или 60 в исключительном случае при добавлении корректировочной секунды).
 //-- Зачем --// 
   Пользователи, вероятно, наиболее знакомы с местными условными обозначениями своего часового пояса и могут быть не уверены при определении времени, представленного с помощью других условных обозначений. Кроме того, когда время представлено в часовом поясе другой страны, пользователи могут не знать, как преобразовать его в свой часовой пояс или могут совершить ошибки при его преобразовании.
 //-- Как --// 
   По возможности следует показывать время с учетом региональных часовых поясов пользователей или их заявленных предпочтений. В случаях когда событие или действие происходят в другом часовом поясе, следует показывать время, используя в качестве точки отсчета часовой пояс события или действия. Например, при отображении статуса полета следует использовать местные часовые пояса пунктов отправления и назначения рейса (рис. 10.15).
   Рис. 10.15. При отображении информации о состоянии полета время отправления и прибытия должно быть показано с использованием местного времени отправления и прибытия, независимо от часового пояса, из которого пользователи просматривают данные (www.flightview.com)

   Предоставьте пользователям возможности указывать свои предпочтения относительно часового пояса
   При регистрации заявления или создании профилей пользователей следует спросить пользователей о предпочитаемом часовом поясе (рис. 10.16).
   Рис. 10.16. При планировании встречи или события в ReadyTalk пользователям предлагается указать как время, так и часовой пояс, в котором будет происходить встреча

   Показывая местное время для таких задач, как планирование встреч или организация мероприятий, следует указать часовой пояс и смещение от GMT (среднее время по Гринвичу) или UTC (универсальное время или универсальное координированное время) (рис. 10.17).
   Рис. 10.17. При редактировании информации учетной записи Twitter позволяет пользователям указывать свой часовой пояс. И хотя он показывает, например, «GMT-08:00», он уточняет часовой пояс с указанием «тихоокеанского времени» и страны, в которых он применяется (США и Канада)

   Поскольку GMT и UTC, как правило, одно и то же [21 - GMT основан на вращении Земли, в то время UTC на атомных часах. Обе системы исчисления времени, как правило, то же самое, или различаются не более, чем на секунду, поскольку к UTC время от времени добавляют корректировочные секунды.], GMT чаще используется, поскольку пользователи с ним знакомы.
 //-- Связанные шаблоны проектирования --// 
   Локализованный шаблон DATE FORMAT обычно применяется в совокупности с шаблоном TIME FORMAT потому, что большинство приложений, которые показывают время и требуют от пользователей выбрать время, обычно показывают даты или требуют, чтобы пользователи выбрали даты.
   Кроме того, отображение часовых поясов и их смещений требует дополнительного места, при этом используется шаблон EXTENSIBLE DESIGN.


   NUMBER FORMAT (ФОРМАТ ЧИСЕЛ)

 //-- Проблема --// 
   Условные обозначения чисел по всему миру различаются с точки зрения групп и чисел после запятой (например, в дробях), требуемой точности, единиц измерения, и т. д.
 //-- Решение --// 
   Соблюдайте условные обозначения, форматы и правила страны, откуда пользователи открывают приложение.
 //-- Зачем --// 
   Не существует общепризнанных условных обозначений чисел. Они различаются в разных странах. Поскольку не следует ожидать, что пользователи будут знакомы с условными обозначениями, принятыми в других странах, полезным будет представить числа в форматах, в которых они больше всего привыкли их видеть.
 //-- Как --// 
   При показе числа все число (или целая его часть), как правило, разделено на группы разделителями. Способы, при помощи которых создаются числовые группы, как и используемый разделитель, различны во всем мире (рис. 10.18). В Соединенных Штатах числа показывают в группах по три, разделенные запятыми (например, 1,000,000); в Индии в одной группе показано три числа, а в остальных – по два через запятую (например, 10,00,000), а в Японии большие числа создаются путем группировки цифр, по 10000, разделенных идеографическими символами, которые представляют степень 1 0000 (например, ).
   Рис. 10.18. Примеры разделителей групп в разных странах

   Как и разделители групп, разделитель между целым и дробной частью числа, известный как десятичная точка, разделитель десятичной дроби и т. д. также меняется в зависимости от страны. Это может быть десятичная точка (т. е. точка), запятая или другой символ (рис. 10.19).
   Рис. 10.19. Примеры разделителей десятичной дроби в разных странах. В многоязычных странах, таких как Швейцария, используются различные разделители десятичной дроби для различных языков. Запятая используется в качестве разделителя десятичной дроби, кроме случаев, когда указывается сумма в швейцарских франках, тогда используется пробел, а в качестве разделителя тысяч используется апостроф или пробел

   Используйте единицы измерения, знакомые пользователям
   Также используйте единицы веса и измерения, соответствующие условным обозначениям целевой страны. Например, использование фунтов, футов и дюймов (английская или британская системы) будет неэффективным в странах, использующих метрическую систему, где надлежащими единицами измерения являются килограммы, метры и сантиметры, соответственно.
   Аналогичным образом отображение температуры по Фаренгейту будет вводить в заблуждение пользователей, которые знакомы только с системой измерения по Цельсию. Поэтому если приложение, скорее всего, будет доступно тем, кто знаком с различными условными обозначениями, представьте единицы измерения и температуры как в метрической, так и в английской системе или позвольте пользователям переключаться с одной единицы измерения на другую (рис. 10.20).
   (а)

   (б)

   Рис. 10.20. В информации о погоде USA Today показывает температуру и в °F, и в °C (а). Weather.com позволяет пользователям переключаться между «английской» и «метрической» системами, поскольку при этом изменяются не только единицы измерения температуры, но и ветра, давления, точки росы, и видимости (б)

   Поскольку пользователи могут быть не знакомы с терминами «английская» и «метрическая» системы, по возможности используйте понятные и знакомые единицы измерения, такие как °F и °C. Кроме того, лучше попросить пользователей выбрать единицы измерения такие, как сантиметры, метры, футы, ярды и т. д., а не просить их выбирать между английской и метрической системами.
   Представьте телефонные номера в знакомых форматах
   Форматы телефонных номеров – общее количество цифр и разделители – также меняются от одной страны к другой (рис. 10.21). Таким образом, по возможности необходимо соблюдать местные условные обозначения для отображения телефонных номеров.
   Рис. 10.21. Форматы местных телефонных номеров

   Альтернативой является использование ITU-T E.123 – международного формата, рекомендующего следующее (см. рис. 10.22 и 10.23):
   § 2.1: Международный номер должен быть напечатан под междугородним номером, соответствующие цифры выстраиваются друг под другом, для облегчения понимания структуры международного номера.
   § 2.5: Если желательно написать только международный номер, то его следует записать в виде: Телефон Международный + 22 607123 4567.
   Рис. 10.22. Рекомендации ITU-T E.123 по форматированию междугородних и международных номеров

   Рис. 10.23. Номера телефона и факса представлены в данном примере в международном формате

 //-- Связанные шаблоны проектирования --// 
   Как и другие шаблоны, использование локализованного формата числа (NUMBER FORMAT) требует дополнительного пространства, и важно, чтобы на страницах был применен расширяемый дизайн (EXTENSIBLE DESIGN) для удовлетворения требований дополнительного пространства. Кроме того, рассмотрите использование шаблона GLOBAL GATEWAY для определения региона пользователей и их языковых предпочтений, и в соответствии с этим представьте числовой формат.


   CURRENCY AND CURRENCY FORMAT (ДЕНЕЖНЫЕ ЕДИНИЦЫ И ФОРМАТ ДЕНЕЖНЫХ ЕДИНИЦ)

 //-- Проблема --// 
   Веб-приложениям (например, приложениям для электронной торговли), которые показывают стоимость продукции и услуг для пользователей в регионах по всему миру, необходимо представлять цены в местной валюте. Однако в мире различаются не только валюты, но также и их форматирование с точки зрения расположения символов.
 //-- Решение --// 
   Необходимо показать пользователям валюты данные в их родных форматах. Если же пользователи захотят пересчитать цены в иной валюте, позвольте им изменить валюту, указав название страны или желаемую валюту (рис. 10.24).
   (а)

   (б)

   (в)

   Рис. 10.24. FontShop показывает цены в долларах США ($) (а), но позволяет пользователю выбрать другую страну в меню выбора страны (б), что меняет валюту, в данном случае, на евро (€) (с)

 //-- Зачем --// 
   Представление пользователям информации о ценах в местной валюте и форматах помогает им, поскольку они точно знают, сколько заплатят за продукты (или услуги) и им не придется полагаться на калькуляторы обмена или другие способы преобразования цены для определения правильной суммы.
 //-- Как --// 
   Веб-приложения, которые поддерживают несколько валют, должны учитывать соответствующие символы валюты, коды и форматы. Это связано с разнообразием валют и числом схем форматирования, используемых в различных странах. Например, символ валюты для британского фунта (ISO код: GBP) – £, а японской иены (ISO код: JPY) – ¥. Кроме того, размещение символа валюты колеблется от одной страны к другой (рис. 10.25).
   Рис. 10.25. Символ валюты и его расположение в разных странах различаются

   Действия пользователя при изменении валюты очень похожи на действия при изменении языка (см. шаблон LANGUAGE SELECTOR далее в этой главе). В зависимости от количества валют, поддерживаемых приложением, пользователи могут выбрать соответствующую валюту из выпадающего списка или набора ссылок (рис. 10.26).
   (а)

   (б)

   Рис. 10.26. Ресурс Silver Coast Property показывает цены на недвижимость как в евро, так и GBP (британский фунт) по умолчанию (а) и позволяет пользователям менять валюту из GBP на доллары США (USD), канадские доллары (CAD) и др. Валютные опции показываются пользователям как всплывающие окна при нажатии на ссылку с ценой (б)

   Когда пользователи меняют валюты, чтобы увидеть цену в местной или иной валюте, необходимо при конвертации валюты показать обменный курс (рис. 10.27).
   Рис. 10.27. Универсальный конвертер валют от XE.com показывает пользователям обменный курс как исходной, так и целевой валюты и наоборот

   Для того чтобы избежать возможной путаницы с валютами, следует представить пользователям соответствующие символы (рис. 10.28), код ISO валюты, или и то и другое, как показано на рисунке ниже. Кроме того, следует отображать соответствующие групповые и десятичные разделители на основании языковых предпочтений пользователей.
   Рис. 10.28. При создании счета-фактуры в PayPal пользователям показывают подходящий (соответствующий) символ валюты. Пользователи могут выбрать другую валюту, тогда, соответственно, символ валюты обновится

   Сохраняйте настройки денежных единиц
   Не нужно заставлять пользователей выбирать желаемую валюту каждый раз при получении ими доступа к приложению и осуществлении навигации по страницам данного приложения. Следует установить постоянный выбор валюты для пользователей с использованием cookie или в виде предпочтения, связанного с их логином не только в рамках одной сессии, но и при последующем их обращении к приложению.

 //-- Связанные шаблоны проектирования --// 
   Цены, как правило, показаны в виде чисел, поэтому важно, чтобы цены были представлены не только в верных валютах и их форматах, но и следовали местным условным обозначениям групповых и десятичных разделителей (NUMBER FORMAT).
   Кроме того, для поддержки различных символов валюты и во избежание использования изображений вместо них примените кодировку UTF-8. Отображение ISO кода валюты, как правило, требует дополнительного пространства, поэтому важно, чтобы на страницах использовался шаблон EXTENSIBLE DESIGN.


   GLOBAL GATEWAY (ГЛОБАЛЬНЫЙ ШЛЮЗ)

 //-- Проблема --// 
   Когда доступны локализованные приложения, пользователей необходимо направить на приложение, предназначенное для их региона и языка. Это особенно важно для приложений (например, приложений для электронной коммерции), где продукты и услуги, предлагаемые компанией, варьируются от одного региона к другому. Даже тогда, когда локализованные приложения доступны с помощью соответствующих кодов стран в их именах доменов высшего уровня (TLD) [22 - Многие веб-приложения используют URL конкретных стран, используя соответствующий код страны и их имена TLD. Коды стран для TLD включают. uk для Соединенного Королевства, jp для Японии, fr для Франции и т. д. Список TLD-кодов стран смотрите на www.iana.org/domains/root/db/.] (например, www.amazon.co.uk для Великобритании), пользователи могут не знать соответствующий код или что локализованная версия существует и поэтому они могут перейти непосредственно к нелокализованной версии приложения.
 //-- Решение --// 
   Для направления пользователей на локализованные версии программы покажите им страницу глобального шлюза, чтобы дать им возможность выбрать свой регион (или страну) и язык (рис. 10.29). Как только пользователи укажут свое предпочтение, запомните их выбор так, чтобы им не пришлось его повторять. Тем не менее не ограничивайте пользователей их выбором, позволяйте им изменять его (Yunkers, 2002).
   Рис. 10.29. Coca-Cola перемещает пользователей на страницу глобального шлюза и позволяет им выбирать страну по желанию. Кроме того, приложение запоминает выбранный вариант, чтобы не просить пользователей повторять выбор в будущем

 //-- Зачем --// 
   Во многих приложениях электронной коммерции продукты и услуги отличаются от страны к стране. Предоставление пользователям возможности выбирать свою страну облегчает им получение информации о том, что они могут купить онлайн и помогает избежать разочарования от заказа товаров, которые могут быть недоступны в их стране. Указание страны также позволяет пользователям видеть локализованные цены, даты, валюты и т. д., продолжать совершенствовать свой опыт взаимодействия с приложением.
 //-- Как --// 
   Покажите пользователям список доступных стран и/или языков, дайте им возможность указать свой выбор и направьте их на локализованные версии приложения для данного региона (рис. 10.30).
   (а)

   (б)

   Рис. 10.30. Nike просит пользователей сначала выбрать язык (а), а затем желаемую страну (б)

   Предоставьте пользователям возможность изменять свой выбор страны на каждой странице
   Во многих приложениях, особенно в приложениях для электронной коммерции или приложениях, не требующих от пользователей войти в систему, пока они не начинают совершать сделки, пользователи могут получить доступ к приложению не только через главную страницу, но и через другие. Чтобы облегчить им переход к предпочитаемой стране, дайте им возможность выбрать страну или предоставьте доступ к странице открытого мира со всех страниц в приложении. Наиболее распространенными местами размещения опции Select Country (Выберите страну) – верхний правый угол или нижняя часть колонтитула (рис. 10.31).
   (а)

   (б)

   Рис. 10.31. Sun размещает ссылку Worldwide (По всему миру) в правом верхнем углу, а при нажатии на ссылку показывает пользователям страницу Global Gateway (Открытый мир), чтобы пользователи могли выбрать свою страну (а). Apple размещает выпадающий список Apple.com Worldwide (Apple.com по всему миру) в нижней части и позволяет пользователям выбирать страны напрямую (б)

 //-- Связанные шаблоны проектирования --// 
   Уделите внимание использованию шаблона LANGUAGE SELECTOR для пользователей из многоязычных стран, которые могут захотеть изменить язык приложения.


   LANGUAGE SELECTOR (ВЫБОР ЯЗЫКА)

 //-- Проблема --// 
   Пользователи могут предпочесть просматривать контент вебприложения на другом языке, помимо того, который пользуется по умолчанию. Такое часто случается, когда пользователи просматривают нелокализованную версию приложения или оказываются направлены на локализованное веб-приложение на иностранном языке, поскольку они получают к нему доступ из другой страны. Это происходит потому, что веб-приложение использует метод геолокации для определения языка пользователей.
 //-- Решение --// 
   Покажите пользователям доступные варианты языка и дайте им возможность изменить язык контента страницы. Чтобы упростить пользователям процесс выяснения, входит ли предпочитаемый ими язык в число доступных, покажите выбор языков в их родном написании, т. е. при просмотре приложения на испанском языке следует предложить выбор английского языка как «English», а не «Ingles» (рис. 10.32).
   Рис. 10.32. Google India предлагает пользователям несколько вариантов языков и отображает каждый язык в его собственном написании

 //-- Зачем --// 
   В таких странах, как Канада и Индия, где приложение могут использовать люди с разными языковыми предпочтениями и являющиеся представителями разных этнических групп, выгодно позволить пользователям переходить на другой язык, поскольку они могут чувствовать себя более комфортно, просматривая контент на родном языке. Кроме того, предоставление языков на выбор в их собственном написании позволяет пользователям легко понять доступные варианты. Это сродни многим интерактивным приложениям с голосовым управлением в Соединенных Штатах, где для выбора испанского языка предупреждают пользователей на испанском языке (например, «para continuar en espanol, oprima el nueve»), а не на английском («To continue in Spanish, press nine»).
 //-- Как --// 
   Чтобы упростить процесс узнавания пользователями языка, покажите им языки на выбор в их собственном написании и на их языке, а не перевод названий языков. Это облегчает навигацию пользователей к желаемому языку, если они неверно выбрали язык или если они путешествуют и подключили локализованную версию данной страницы, а теперь им необходимо изменить язык (рис. 10.33 и 10.34).
   Рис. 10.33. WordPress предоставляет выбор языков, как будто бы пункты меню написаны носителями этих языков

   Рис. 10.34. Blogger показывает варианты в их собственном написании и на их языке, также как и выбранный в настоящее время язык

   Откажитесь от использования флагов для обозначения языков
   Несмотря на то что использование флагов для обозначения стран приемлемо, при использовании их для обозначения языков возникает несколько проблем. Прежде всего флаги представляют страны, а не языки. На определенных языках говорят во многих странах, а в некоторых странах говорят на нескольких языках. Например, использование флага США для английского языка было бы неуместно, поскольку на английском говорят в Соединенных Штатах, Канаде, Великобритании, Австралии, Новой Зеландии и ряде других стран.
   Использование канадского флага будет двусмысленным выбором, так как многие канадцы говорят на английском и/или французском языках. Аналогично использование индийского флага не позволяет определить языковые предпочтения пользователей потому, что в Индии говорят на нескольких языках, таких как бенгальский, гуджарати, хинди, каннада, малаялам, маратхи, ория, панджаби, тамильский, телугу и многих других.
   Предоставьте пользователям возможности изменять первоначально выбранный язык
   Независимо от первоначального выбора языка пользователями, предоставьте им возможность изменить его позже.
   Пользователи могут изменить выбранный язык в случае, если они способны понимать несколько языков и предпочитают просматривать содержимое страницы на другом языке. Выбор языка может быть произведен с использованием набора ссылок или выпадающего меню в зависимости от количества свободного места на экране (рис. 10.34 и рис. 10.35).
   Рис. 10.35. Языки предложены на выбор в виде набора ссылок в нижней части колонтитула

   Сохраняйте местонахождения пользователей на той же странице
   После того как пользователь изменит язык, проектировщики могут либо показать пользователям страницу, на которой они находятся в настоящее время на выбранном языке, либо перенести их на «домашнюю» страницу приложения. Перенос пользователей на домашнюю страницу подходит для приложений, где страницы могут быть недоступны на другом языке (например, Wikipedia) или если приложение для обслуживания пользователя должно перейти на другой сервер, а перемещение данных сессии может оказаться проблематичным. Однако предпочтительно показать пользователям ту же страницу после выбора ими другого языка, поскольку пользователи смогут легко переключать язык на любой странице приложения и им не нужно будет беспокоиться о потере своей страницы (рис. 10.36).
   Рис. 10.36. При изменении языка Blogger оставляет пользователей на той же странице, но отображенной на вновь выбранном языке

   Запоминайте выбранный пользователем язык
   Сделайте так, чтобы выбор языка, сделанный пользователями, сохранялся, т. е. чтобы им не требовалось снова выбирать язык при переходе на другую страницу в приложении в течение одного посещения или при повторном посещении приложения в будущем.
 //-- Связанные шаблоны проектирования --// 
   Поддержка нескольких языков, как правило, требует приспособиться к расширению текста, повышая важность и актуальность лучших методов, предложенных в шаблоне EXTENSIBLE DESIGN. Кроме того, выбор языка часто предоставляется при первом посещении пользователем приложения и может быть представлен как часть шаблона GLOBAL GATEWAY.



   Глава 11
   Доступность


   Введение

   В контексте веб-приложений термин доступность относится к проектированию веб-страниц таким образом, что бы они были пригодны для максимально широкого круга пользователей, включая пользователей со зрительными, физическими, слуховыми, когнитивными и другими видами ограничений.
   При разработке доступных веб-приложений важно следовать принципу прогрессивного улучшения (PROGRESSIVE ENHANCEMENT). Он состоит в проектировании веб-страницы послойно так, чтобы основной контент и функциональность были доступны для всех, а более интерактивные (т. е. улучшенные) опции – в зависимости от поддержки браузеров и/или устройств, способных взаимодействовать с более совершенной версией приложения. Для осуществления «прогрессивного улучшения» важно, что бы на прикладных страницах использовались семантическая разметка (SEMANTIC MARKUP,), ненавязчивые таблицы стилей (UNOBTRUSIVE STYLE SHEETS) и «ненавязчивый» JavaScript (UNOBTRUSIVE JAVASCRIPT). Поскольку взаимодействие пользователя с веб-приложениями происходит через формы, важно, чтобы и они были доступными (ACCESSIBLE FORMS). Кроме того, остальной контент, представленный на страницах, также должен иметь максимальную доступность (ACCESSIBLE IMAGES, ACCESSIBLE TABLES, ACCESSIBLE NAVIGATION).
   Несмотря на то что данный вариант не является преимущественным, существуют ситуации, когда веб-приложения не могут быть полностью доступными в их текущей форме – в этом случае может появиться необходимость встраивания альтернативного дизайна, чтобы гарантировать наибольшую доступность (ACCESSIBLE ALTERNATIVE). Это наиболее актуально для богатых веб-приложений (RIA), имеющих существенные требования к доступности. Обращаясь к этой проблеме, Инициатива по доступности Сети (Web Accessibility Initiative, W3C-WAI) Консорциума W3C (World Wide Web Consortium) предложила перспективный план и рабочие черновые версии Доступных богатых веб-приложений (Accessible Rich Internet Applications, WAI-ARIA). В то время как вспомогательные технологии будут нагонять рекомендации W3C-WAI, разработчики, возможно, захотят включать предложенную разметку в свои проекты.
   Шаблоны в этой главе помогут создать веб-приложения с расширенным доступом и поддержкой стандартов и правил расширенного доступа в Интернет (см. врезку «Стандарты и правила доступности Интернета»).

   СТАНДАРТЫ И ПРАВИЛА ДОСТУПНОСТИ ИНТЕРНЕТА
   Некоторые страны приняли различные законы и стандарты, что бы обеспечить доступность Интернета. В Соединенных Штатах принятые стандарты и правила включают: Акт о правах американских граждан-инвалидов (Americans with Disabilities Act, ADA), Акт об образовании лиц с ограниченными возможностями (Individuals with Disabilities Education Act, IDEA), а так же статью 508 Закона о реабилитации от 1973 г. Пожалуй, самыми важными и всеобъемлющими рекомендациями были признаны Указания по обеспечению доступности Веб-контента
   1.(Web Content Accessibility Guidelines 1.0, WCAG 0.1) и WCAG 0.2 от W3C-WAI [23 - WAI – это организация внутри Консорциума W3C, создающего стандарты для сети Интернет. Более подробную информацию ищите на www.w3.org/WAI.] на конференции по вопросам потребности в доступности и исполнения только что созданных правил. Эти рекомендации детализируют, как интернет-разработчики могут сделать свои веб-сайты и веб-приложения пригодными для использования инвалидами. В основе данных рекомендаций лежат следующие четыре принципа:
   Воспринимаемость. Информация и компоненты интерфейса должны быть представлены пользователю в тех формах, которые он способен воспринять.
   Осуществимость. Пользователь должен иметь возможность воспользоваться компонентами интерфейса и навигацией.
   Ясность. Информация и работа пользовательского интерфейса должны быть понятными.
   Совместимость. Содержимое должно быть доступно через разные пользовательские агенты, в том числе через вспомогательные программы для людей с ограниченными возможностями.
   Дополнительную информацию по стандартам и правилам можно найти на сайте «Правительственные законы, правила, политика, стандарты и поддержка»: www.uiaccess.com/access_links.html#government_laws_regs_policies.

   Эта глава посвящена увеличению доступности при помощи вебтехнологий (т. е. HTML, CSS и JavaScript) и не имеет отношения к проблемам доступности, связанным с Flash и PDF. Читатели, желающие узнать больше об увеличении доступности при помощи Flash и PDF, могут посетить следующие ресурсы:
   • рекомендации по увеличению доступности Adobe Flash проектирования: www.adobe.com/accessibility/products/flash/best_practices.html;
   • увеличение доступности Adobe Acrobat: www.adobe.com/products/acrobat/solutionsacc.html.

   Примечание
   Поскольку процесс увеличения доступности веб-страниц требует адаптации HTML, CSS и JavaScript, то, чтобы изучить данную главу, необходимо как минимум ознакомиться с основными концепциями и синтаксисом данных технологий.



   PROGRESSIVE ENHANCEMENT (ПРОГРЕССИВНОЕ УЛУЧШЕНИЕ)

 //-- Проблема --// 
   Не зная браузер и его версию, платформу и вспомогательную программу пользователя, трудно предсказать, как будет работать веб-приложение. В итоге если полагаться только на определенные подходы выполнения – даже если это рекомендуемые таблицы стилей и JavaScript – можно сделать веб-приложение непригодным для использования или недоступным определенным группам пользователей.
 //-- Решение --// 
   Проектируйте веб-приложения по принципу «прогрессивного улучшения». Другими словами, помогите пользователям, у которых установлены устаревшие браузеры или вспомогательные программы, получить доступ к контенту и функциональным возможностям веб-приложения, в то же время предлагая обладателям новых браузеров и более передовых технологий испытать улучшенные (так назывемые более интерактивные) возможности веб-приложения (Champeon, 2003a, 2003b).
 //-- Зачем --// 
   Использование «прогрессивного улучшения» открывает для вебприложений широкую возможность использования различных элементов устройств, браузеров и вспомогательных технологий. Кроме того, в послойном улучшении, где слои не зависят друг от друга, дизайнеры могут избежать создания отдельной версии с расширенным доступом (см. шаблон ACCESSIBLE ALTERNATIVE далее в этой главе), так как пользователи смогут достичь своих целей независимо от технологии, поддерживаемой браузером и/или вспомогательной программой.
 //-- Как --// 
   Прежде всего сделайте контент веб-приложения доступным при использовании веб-стандартов разметки и структуры содержимого страницы, а так же функциональности, не требующей со стороны клиента знания таких технологий, как JavaScript (см. шаблоны SEMANTIC MARKUP и ACCESSIBLE FORMS далее в этой главе). Как только контент и функциональность веб-приложения станут доступными максимально возможной аудитории, следующим шагом станет повышение качества отображения при помощи таблиц стилей. Однако приложите все усилия, чтобы гарантировать, что введение таблиц стилей не поставит под угрозу удобство и доступность для пользователей, чьи браузеры не поддерживают таблицы стилей (см. шаблон UNOBTRUSIVE STYLE SHEETS далее в этой главе). Последний слой будет являть собой комплексное сочетание методов выполнения сценариев с клиентской стороны (например, JavaScript), которое сможет сделать приложение более чувствительным и эффективным при помощи поддержки функции перетаскивания, сортировки информационного наполнения таблицы, проверки на валидность основных форм без необходимости отправления данных на сервер и т. д. Как в случае с таблицами стилей, добавленная интерактивность не должна помешать пользователю получить доступ к контенту веб-приложения или его функциональности (см. шаблон UNOBTRUSIVE JAVASCRIPT далее в этой главе). Наконец, обеспечьте работу веб-приложений, использующих Ajax [24 - Ajax, или Asynchronous JavaScript and XML (Асинхронный JavaScript и XML), представляет собой комбинацию таких технологий, как JavaScript, каскадные таблицы стилей (CSS), объектная модель документа (DOM) и XMLHttpRequest, позволяющих создать у пользователя самые яркие впечатления, которые можно сопоставить разве что с использованием настольных приложений (см. главу 8).], даже если JavaScript не доступен. Это можно сделать, применив метод HIJAX следующим образом (Keith, 2007):
   • Начните с проектирования обычного веб-приложения, в котором пользователь может запрашивать информацию или отправлять ее на сервер, используя ссылки и формы. Сервер отвечает обновлением страницы. Каждый раз, когда пользователь нажимает на ссылку или использует форму, страница обновляется.
   • Используйте метод создания сценариев DOM (см. шаблон UNOBTRUSIVE JAVASCRIPT далее в этой главе), чтобы прервать (т. е. «hijack», как образно называют метод HIJAX) выполнение ссылок и форм, запрашивающих и отправляющих информацию на сервер. Направьте эти запросы через Ajax, и сервер будет посылать только обновленную часть страницы, вместо того чтобы посылать ее всю.
 //-- Связанные шаблоны проектирования --// 
   Введение «прогрессивного улучшения» (PROGRESSIVE ENHANCEMENT) требует, чтобы веб-страницы были размечены семантически (SEMANTIC MARKUP), а затем улучшены применением шаблонов UNOBTRUSIVE STYLE SHEETS и UNOBTRUSIVE JAVASCRIPT.


   SEMANTIC MARKUP (СЕМАНТИЧЕСКАЯ РАЗМЕТКА)

 //-- Проблема --// 
   Трудно гарантировать одинаковое отображение веб-страниц у всех пользователей, не зная браузер, платформу или вспомогательную технологию, которую они используют, чтобы работать с веб-приложением. Кроме того, информационная иерархия страницы, установленная с использованием изображений, таблиц стилей и определенного размещения текста, может быть визуально разобщена, если браузеры пользователей и вспомогательные средства отобразят ее некорректно.
 //-- Решение --// 
   Внедрите значение документа в структурную разметку таким образом, чтобы она четко передавала связи между элементами страницы и соблюдала порядок чтения контента независимо от возможности браузера использовать CSS и/или передачу изображений. Кроме того, передайте функции аспектов отображения страницы таблицам стилей так, чтобы структура страницы сохраняла свой смысл независимо от типа браузера, платформы или вспомогательного средства.
   Это значит, что веб-дизайнеры должны обеспечить связь элементов страницы посредством заголовков и списков (т. е.

,

,

,

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

       

      , и она не включает теги
        или
        , чтобы выделить абзац отступами.
         //-- Зачем --// 
           С семантической разметкой пользователи, работающие в веб-приложении и использующие экранные дикторы, а также браузеры с ограничениями, отсутствием поддержки таблиц стилей или языков сценариев, смогут понять структуру контента, связи между элементами страницы, а также характер контента внутри элемента. Это чрезвычайно важно для пользователей с экранными дикторами, игнорирующими таблицы стилей и использующими навигацию через структурную разметку – например, программа JAWS для Windows, позволяющая перемещаться по заголовкам страницы нажатием клавиши H. При отсутствии разметки навигация по элементам страницы и доступ к соответствующим разделам в ее пределах могут стать чрезвычайно трудными. Использование семантической разметки наряду с ненавязчивыми таблицами стилей (UNOBTRUSIVE STYLE SHEETS) облегчает четкое разграничение структуры и отображения, а так же предоставляет наибольшую совместимость, поддерживая широкий ряд браузеров и устройств. Кроме того, работа со структурой страницы без ее отображения упрощает дизайн и позволяет легко адаптировать и оптимизировать отображение для различных устройств и технологий.
         //-- Как --// 

           В разметке семантика связана со значением элемента и с тем, как этот элемент описывает содержащийся в нем контент.
         Молли E. Хольцхалг (2005)

           На начальном уровне, используя семантическую разметку, требуется выбрать и применить HTML-теги, соответствующие заданному структурному значению элементов страницы, не надеясь на то, как будет интерпретироваться браузерами отображение результата. Например, тег
        предназначен, чтобы цитировать текст из внешнего источника, а не для того, чтобы сделать отступ текста, содержащегося в пределах данного тега. Аналогично, чтобы подчеркнуть текст, должен использоваться тег , вместо , а тег – вместо . Хоть теги и нежелательны даже в последних версиях HTML и XHTML, все же использование тегов и является наиболее подходящим для акцентирования слов и фраз. Экранные дикторы, встречаясь с таким выделением текста, могут использовать другую интонацию или акцент.
           Точно так же заголовки, абзацы и списки в пределах страницы должны быть выделены доступными тегами разметки HTML, такими как

        ,

        ,

        ,

          ,
            и т. д., а не тегами вроде
            и , не имеющими значений по умолчанию.
               Структурные документы, использующие заголовки и списки
               Озаглавьте веб-страницы тегами

            ,

            ,

            и т. п. Теги заголовков устанавливают информационную структуру страницы и помогают пользователям распознать ее иерархию. Пользователи с экранными дикторами и другими вспомогательными технологиями могут так же использовать структуру страницы для навигации (см. шаблон ACCESSIBLE NAVIGATION далее в этой главе). Они могут перепрыгивать с заголовков первого уровня (т. е.

            ) на заголовки второго, третьего и далее уровней (

            ,

            и т. д.).
               Они могут также использовать вспомогательные устройства, чтобы «слушать» схему страницы и понять ее структуру. Для зрячих пользователей использование HTML-заголовков помогает определить визуальную иерархию страницы, потому что браузеры отображают заголовки в больших и более жирных шрифтах, чем остальную часть текста, даже когда таблицы стилей недоступны.
               Аналогично меню навигации, подменю и списки в пределах страниц должны быть размечены при помощи тегов (
              ,
                ,
                и т. д.). Необходимо взять за правило использовать упорядоченные списки (
                  ) для списков, предлагающих какую-либо форму порядка или приоритета, базируемого на систематизации неупорядоченных списков (
                    ), элементы которых не имеют организации; списков определений (
                    ), элементы которых состоят из терминов (обозначаемых тегом
                    ), и определений этих терминов (тег
                    ).
                       Используйте таблицы стилей для разметки и отображения
                       Используйте CSS, чтобы контролировать отображение и разметку веб-страницы. Поместите все описания стилей в отдельный файл, что бы их было легко исправлять (см. шаблон UNOBTRUSIVE STYLE SHEETS далее в этой главе). Не внедряйте связанную со стилем разметку, используя теги , , и т. п. Кроме того, не используйте нежелательные HTML-теги, более не являющиеся частью спецификации HTML. Справочник Ultimate HTML Reference (Lloyd 2008) перечисляет следующие нерекомендуемые элементы: , ,
                    , , , , ,