Непосредственное манипулирование

В 1974 году Бен Шнейдерман (Ben Shneiderman) предложил термин непосредственное манипулирование для описания стратегии проекти' рования интерфейсов, состоящей из трех важных частей:

• визуальное представление объектов, с которыми работает приложе' ние;

• видимые жестикуляционные механизмы для манипулирования этими объектами (как противоположность текстовым командам);

• моментальное отображение результатов действий.

Менее строгое определение могло бы выглядеть так: непосредственное манипулирование есть щелчок по объекту и его перетаскивание. И хо' тя такое определение справедливо, с ним легко упустить из виду клю' чевой момент, тонко подмеченный Шнейдерманом. Обратите внима' ние, что два из трех пунктов его определения относятся к визуальной обратной связи, которую программа предоставляет пользователю.

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

Непосредственное манипулирование - student2.ru Полноценная визуальная обратная связь – ключ к успешно- му непосредственному манипулированию.

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

Непосредственное манипулирование – простой, прямолинейный, удоб' ный в применении и легко запоминающийся способ взаимодействия. Однако сказанное вовсе не означает, что, столкнувшись впервые с той или иной идиомой манипулирования, пользователи сразу интуитивно постигают ее суть и понимают, как ее применять. Часто пользователей приходится обучать идиомам непосредственного манипулирования. Од' нако сильная сторона этих идиом в том, что их легко освоить и трудно забыть. Это классический пример идиоматического проектирования. Благодаря своей наглядности и непосредственности это взаимодейст' вие очень похоже на взаимодействие с объектами реального мира, по' этому приобретение соответствующих навыков дается нам просто.

Вот что сказано в отношении непосредственного манипулирования в руководстве Human Interface Style Guide (Руководство по стилю ин' терфейса для человека) компании Apple: «Пользователи хотят чувст' вовать, что управляют действиями компьютера». Сам пользователь' ский интерфейс Macintosh ясно демонстрирует, что Apple считает не' посредственное манипулирование фундаментальным принципом про' ектирования хорошего пользовательского интерфейса. Однако Дон Норман, авторитет в области дизайна, ориентированного на пользова' теля, говорит: «Непосредственное манипулирование и системы, где инициатива принадлежит человеку, имеют свои недостатки. Хотя они обычно просты в использовании, приносят удовольствие и развлекают человека, для настоящей работы они часто малопригодны. Они требу' ют, чтобы пользователь непосредственно выполнял требуемое дейст' вие, а он может оказаться недостаточно компетентным для этого». Ко' му же мы должны верить?

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

К примеру, перемещение файлов между папками в Проводнике (Win' dows Explorer) может быть сложной задачей, требующей ловкости и предусмотрительности. Помните о подобных барьерах, когда проек' тируете идиомы непосредственного манипулирования. Некоторый объ' ем непосредственного манипулирования, как правило, полезен, однако можно и перестараться – здесь многое зависит от контекстов использо' вания продукта персонажами. Следует задаваться вопросами о том, манипуляция какими объектами пользователям действительно необ' ходима, а для каких объектов лучше реализовать косвенное манипу' лирование.

Большинство идиом непосредственного манипулирования можно от' нести к одной из семи категорий:

• указание;

• выделение;

• перетаскивание;

• манипулирование элементами управления;

• палитры инструментов;

• манипулирование объектами (например, перемещение, изменение формы и размера);

• создание связей между объектами.

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

Устройства указания

Непосредственное манипулирование объектами на экране становится возможным благодаря использованию устройства указания. Очевид' но, лучший способ указать на что'либо – использовать пальцы. Они очень удобные, у любого читателя они наверняка под рукой. Единст' венный недостаток пальцев – слишком тупые кончики для того, чтобы точно осуществлять целеуказание на экранах высокого разрешения; к тому же, большинство экранов высокого разрешения не способны распознать, что на них указывают. Вследствие этого ограничения нам приходится использовать разнообразные устройства указания, наибо' лее популярным из которых является мышь.

Передвигая мышь по столу, вы видите, как на экране соответствующим образом перемещается символ – курсор. Передвиньте мышь влево – и курсор переместится влево; отодвиньте мышь от себя – и курсор пере' местится вверх по экрану. Когда вы впервые взяли мышь в руки, у вас сразу возникло ощущение, что мышь и курсор как'то связаны. Это ощущение крайне легко запомнить и трудно забыть. В фильме «Звезд' ный путь IV. Путешествие домой» («Star Trek IV: The Voyage Home») Скотти (один из лучших инженеров XXIV века) попадает на Землю XX века и пытается работать на компьютере. Он берет мышь рукой, подносит ко рту и пытается говорить в нее, как в микрофон. Сцена за' бавна и вместе с тем правдоподобна: мышь не имеет никаких визуаль' ных подсказок о назначении, помогающих понять, что она является устройством указания. Но как только нам продемонстрируют, что дви' жения курсора на экране соответствуют движениям мыши, понимание приходит моментально. Как мы уже сказали, все идиомы приходится изучать – но хорошую идиому достаточно изучить всего один раз. С этой точки зрения мышь определенно является хорошей идиомой.

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

Работа с мышью

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

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

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

 
  Непосредственное манипулирование - student2.ru

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

Колесико прокрутки на устройстве ввода также является замечательным решением этой проблемы. Более подробная информация о полосах прокрутки содержится в главе 21

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

Мышь вызывает проблемы не только у менее ловких людей, но време' нами и у многих опытных пользователей, в особенности у тех, кто мно' го печатает слепым методом. В решении широкого круга задач, связан' ных с интенсивной обработкой данных, клавиатура превосходит мышь. Очень неприятно, когда требуется снять руки с клавиатуры лишь для того, чтобы переместить курсор посредством мыши и тут же снова вер' нуться к клавиатуре. На заре персональных компьютеров не было ни' каких устройств ввода кроме клавиатуры, сегодня же единственным применимым устройством ввода часто оказывается мышь. Программы должны обеспечивать полную поддержку как мыши, так и клавиату' ры в качестве средств управления навигацией и выделением.

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

Значительный процент пользователей испытывает определенные сложности при работе с мышью, так что для проектирования успеш' ных продуктов нам требуется учитывать интересы этой группы поль' зователей наравне с интересами тех, кто владеет мышью виртуозно. Это означает, что для каждой идиомы, связанной с мышью, должна быть хотя бы одна альтернатива, не требующая использования мыши. Конечно, это возможно не всегда. Было бы глупо пытаться реализо' вать рисование без мыши. Однако в большинстве приложений для корпоративного использования и для бизнеса клавиатурные команды вполне уместны.

Кнопки мыши

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

В конечном итоге фирма Apple создала однокнопочную мышь для Mac' intosh, корпорация Microsoft – двухкнопочную, а UNIX'сообщество (в частности, Sun Microsystems) предпочло трехкнопочную. Обширное пользовательское тестирование Apple выявило, что для новичка опти'

мальное число кнопок – одна, и так однокнопочная мышь была увеко' вечена в пантеоне истории Apple. Это прискорбно, потому что правая кнопка мыши обычно выходит на арену, как только человек покидает ряды новичков и становится вечным середняком. Мышь с одной кноп' кой жертвует удобством большинства пользователей ради простоты для начинающих. Не так давно компания Apple признала важность контекстных меню, вызываемых по правой кнопке мыши, и теперь ее компьютеры поставляются с двухкнопочной мышью.

Левая кнопка мыши

Говоря в общем, левая кнопка используется для всех основных функ' ций непосредственного манипулирования, таких как активизация эле' ментов управления, выделение, рисование и т. п. Основное предназна' чение левой кнопки – активизация или выделение. Для стандартных элементов управления, таких как кнопки или флажки, щелчок левой кнопкой мыши означает нажатие на кнопку или установку/сброс флажка. Щелчок левой кнопкой в области данных обычно подразуме' вает выделение. Идиомы выделения мы обсудим позже в этой главе.

Правая кнопка мыши

Долгое время Microsoft и другие компании просто игнорировали суще' ствование правой кнопки. Лишь некоторые отважные программисты привязывали к ней какие'либо функции, но эти функции были допол' нительными, необязательными или предназначались для более опыт' ных пользователей. Когда компания Borland International сделала пра' вую кнопку инструментом доступа к диалоговому окну свойств объек' та, реакция отрасли была двойственной, хотя само решение встретило, как говорится, хороший прием. Положение дел изменилось с появле' нием Windows 95, в которой Microsoft наконец последовала примеру Borland. Сегодня правая кнопка мыши играет важную и крайне полез' ную роль, обеспечивая непосредственный доступ к свойствам и другие контекстно'зависимые функции и действия над объектами.

Средняя кнопка мыши

Вообще говоря, нельзя полагаться на наличие у мыши пользователя средней кнопки, если только речь не идет о специализированном при' ложении, для которого будут куплены все требуемые аппаратные средства. Как следствие, в большинстве приложений средняя кнопка используется лишь для быстрого доступа к определенным функциям. В своем руководстве по стилю Microsoft утверждает, что среднюю кнопку следует «назначать операциям или функциям, уже представ' ленным в интерфейсе», то есть повторяет сказанное некогда о правой кнопке. У нас есть знакомые, активно использующие среднюю кнопку и готовые присягнуть, что это очень удобно. Пользуясь настройками драйвера мыши, они определяют среднюю кнопку как эквивалент двойного щелчка левой кнопкой.

Колесо прокрутки

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

Служебные клавиши

Использование служебных клавишв сочетании с мышью позволяет расширить идиомы непосредственного манипулирования. К служеб' ным относятся клавиши <Ctrl>, <Alt>, <Command> (на компьютерах App' le) и <Shift>.

Как правило, эти клавиши изменяют функцию взаимодействий, свя' занных с выделением и перетаскиванием. Так, в Проводнике (Win' dows Explorer) удержание клавиши <Ctrl> при перетаскивании файла изменяет функцию с перемещения на копирование. Эти клавиши так' же повсеместно применяются для подстройки поведения мыши – удержание клавиши <Shift> при перетаскивании часто ограничивает движение курсора одним направлением (вертикалью или горизонта' лью). О подобных соглашениях мы поговорим далее в этой главе.

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

Хорошая идея – использование курсорных подсказок для динамиче' ского отображения смысла служебных клавиш. Когда нажата служеб' ная клавиша, следует изменить курсор, отразив таким образом новую функцию идиомы.

Непосредственное манипулирование - student2.ru Используйте курсорные подсказки для отражения смысла служебных клавиш.

Указание и щелчок мышью

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

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

• Указание (указание).

• Указание, щелчок левой кнопкой, отпускание (щелчок).

• Указание, щелчок правой кнопкой, отпускание (щелчок правой кнопкой).

• Указание, щелчок левой кнопкой, перетаскивание, отпускание (щелчок и перетаскивание).

• Указание, щелчок левой кнопкой, отпускание, щелчок левой, от' пускание (двойной щелчок).

• Указание, щелчок левой кнопкой, щелчок правой кнопкой, отпус' кание, отпускание (аккордный щелчок).

• Указание, щелчок левой кнопкой, отпускание, щелчок, перетаски' вание, отпускание (двойной щелчок и перетаскивание).

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

Указание

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

Щелчок

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

Непосредственное манипулирование - student2.ru Одиночный щелчок выбирает информационный объект либо изменяет состояние элемента управления.

Если же пользователь, продолжая удерживать кнопку мыши в нажатом положении, уберет указатель с элемента управления, экранная кнопка вернется в исходное состояние (при этом фокус ввода будет оставаться на ней, пока пользователь не отпустит кнопку мыши). Когда пользова' тель отпускает кнопку мыши, фокус ввода снимается и ничего не проис' ходит. Это удобный путь отступления для пользователя, если он изме' нил свое решение или же понял, что ошибся кнопкой. Механика собы' тий «кнопка мыши нажата» и «кнопка мыши отпущена», возникаю' щих в процессе щелчка, подробно обсуждается далее в этой главе.

Щелчок и перетаскивание

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

Как и в случае со щелчком, часто важно оставить путь отступления для пользователей, которые запутались или ошиблись. Хороший при' мер на эту тему – полоса прокрутки в Windows. Она позволяет осуще' ствлять прокрутку, даже если курсор не расположен непосредственно над полосой (представьте себе, как сложно было бы пользоваться этим элементом управления, если бы он вел себя подобно кнопке). Однако, если увести курсор слишком далеко от полосы прокрутки, она вернет' ся в положение, в котором была до щелчка. Такое поведение имеет смысл, поскольку прокрутка на большое расстояние требует использо' вания грубой моторики, что затрудняет удержание указателя мыши на узкой полосе прокрутки. Если указатель отходит слишком далеко, полоса прокрутки делает разумное предположение, что пользователь не собирался выполнять прокрутку, а имел в виду что'то другое. В не' которых приложениях границы влияния указателя мыши установле' ны очень близко к полосе прокрутки, в результате чего она ведет себя слишком темпераментно, срывая планы пользователей.

Двойной щелчок

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

Непосредственное манипулирование - student2.ru Двойной щелчок означает одинарный щелчок с последую- щим действием.

Эта базовая интерпретация пришла к нам от Xerox Alto/Star через Macintosh и остается стандартом для современных графических поль'

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

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

Аккордный щелчок

Аккордный щелчок– это щелчок сразу двумя кнопками, хотя в реаль' ности пользователю необязательно нажимать и отпускать их строго одновременно. Чтобы щелчок распознавался как аккордный, вторая кнопка должна быть нажата до того, как будет отпущена первая.

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

<Shift> в процессе выделения.

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

Наши рекомендации