Опубликовано 25 декабря 2012 года
Что человеку нужно? Чего он хочет, и чем можно ему помочь? Какие настройки наиболее полезны именно сейчас? Наши гаджеты до сих пор ждут подсказки, хотя зачастую вполне способны угадать ответы на эти вопросы самостоятельно.
В 1994 году Билл Шилит, исследователь из легендарной лаборатории Xerox PARC, опубликовал работу под названием "Контекстозависимые компьютерные приложения". В ней описывались программы, автоматически меняющие своё поведение в зависимости от внешних условий. Спустя два десятка лет идеи Шилита, наконец, перестают быть чистой теорией. Над контекстозависимыми решениями уже работают в Google, Apple и Microsoft.
"Действия людей часто можно предсказать, исходя из ситуации. В библиотеке, на кухне и в офисе мы делаем разные вещи. Контекстозависимые системы должны извлекать пользу из этой закономерности, — писал Шилит. — Одна из задач распределённых компьютерных систем сводится к возможности учитывать изменяющееся окружение при помощи нового класса приложений, которые были бы в курсе своего контекста. Контекстозависимые приложения приспосабливаются к местоположению, присутствию людей, других компьютеров и устройств, а также к изменениям этих вещей со временем".
Контекстом может служить практически что угодно: место, время, наличие доступа к определённым ресурсам или присутствие нужных людей. Профессор Цзяньхуа Ма из Хосейского Университета выделяет восемь типов контекстов, которые могут быть учтены компьютерами.
Личностные контексты: личные черты пользователя и его нужды
Пространственные контексты: температура, свет, шум
Социальные контексты: люди рядом, деятельность, календарь
Контексты, связанные с ресурсами: близость, доступность
Вычислительные контексты: процессорное время, операционная система, память, интерфейсы
Сетевые контексты: проводные/беспроводные сети, скорость и надёжность соединения
Физиологические контексты: давление крови, пульс, тон голоса
Психологические контексты: эмоции, усталость
В работе Шилита тоже была предпринята попытка категоризации. Он предложил различать два типа контекстов: автоматические и переключаемые вручную. К автоматическим контекстам относятся контекстная смена настроек программ и завязанные на контекст действия. К контекстам, переключаемым вручную, — выбор на основании расстояния (к примеру, вывод изображения на ближайший экран) и предоставление контекстной информации. Так, сделанный для примера интерфейс отображал список принтеров, сортируя их по степени удалённости от пользователя.
Идеи Шилита, как это порой случается, несколько опередили время. В 1994 году подходящих устройств просто не было, и приходилось мастерить импровизированные прототипы. Сотрудникам Xerox PARC раздали портативные устройства под названием ParcTab, напоминающее карманный компьютер.
ParcTab был намного миниатюрнее портативных устройств того времени. Он умещался на ладони и весил втрое меньше, чем, к примеру, Apple Newton MessagePad 120. Интерфейс устройства (разработанный, кстати, Биллом Бакстоном, который приложил руку к первым тач-интерфейсам) включал в себя три физические кнопки, способные заменить и дополнить использование стилуса. Благодаря им устройством можно было управлять одной рукой. Примечательно, что в устройстве использовалась система рукописного ввода, напоминавшая Graffiti из Palm OS. Но больше всего разработчики гордились адаптером беспроводной сети. Внутри ParcTab скрывался инфракрасный передатчик, связывавшийся с расположенными в комнате маршрутизаторами. Скорость связи составляла 9 600 или 19 200 бод.
Приложения ParcTab учитывали не только непосредственные команды пользователя, но и контекст, то есть то, что происходит вокруг. Например, почтовый клиент ParcTab знал, когда пользователь находится на совещании, и менял своё поведение. Во время совещаний он доставлял лишь важные письма, оставляя прочее на потом. Одна программа помогала находить прочих обладателей ParcTab, видеть, чем они заняты в данный момент, и обмениваться сообщениями. Другая предоставляла доступ к различным данным в зависимости от местоположения пользователя.
Почти все проблемы, стоявшие перед разработчиками ParcTab двадцать лет назад, легко решаются при современном уровне развития техники. Карманными компьютерами и вездесущими беспроводными сетями давно никого не удивишь. Возникает резонный вопрос: где же теперь всё то, что группа Шилита придумала ещё в начале девяностых? Где же контекстозависимые системы?
Зачатки контекстозависимости изредка встречаются в современных гаджетах и приложениях. Узнать, где находятся друзья, позволяют сервисы Google Latitude или Foursquare, причём оба умеют оповещать о приближении знакомых. Контекстозависимость частично реализована и в Siri — автоматическом ассистенте, имеющемся в последних моделях iPhone. Siri можно сказать, например: «Напомни починить ручку двери, когда приду домой,» — и она сделает это. Тем не менее Siri далеко до идеала. Ей не под силу догадаться о том, чем в действительности занят пользователь и когда и о каких делах есть смысл напоминать.
Современные поисковые системы пришли к контекстозависимости другим путём. Двусмысленность естественного языка не позволяет интерпретировать запросы однозначно. В результате поисковикам не остаётся ничего, кроме как пытаться уловить истинные желания пользователя по косвенным признакам — иными словами, по контексту.
Бывший генеральный директор Google Эрик Шмидт ещё в 2007 году предсказывал, что в будущем поисковым системам придётся научиться угадывать намерения пользователей. "Наша цель — сделать так, чтобы пользователи Google могли задавать такие вопросы как «Чем мне заняться завтра?» и «Какую работу мне выбрать?», — говорил Шмидт. Ближе всего к реализации этой полуфантастической идеи разработчики Google подошли в системе Google Now, встроенной в последние версии Android.
Google Now внимательно следит за пользователем, а затем использует полученные знания, чтобы самостоятельно подбирать полезную ему информацию. Когда пользователь отправляется в путь, система заранее предупреждает о пробках на маршруте, который он часто использует в такое время, сама отыскивает результаты спортивных матчей, если замечает интерес к тому или иному виду спорта или команде, и сама напоминает о событиях ещё нескольких типов. Пока что функциональность Google Now оставляет желать лучшего, но в Google планируют значительно расширить её. Чуть ли не каждое подразделение компании готовит собственный модуль, и остается лишь разобраться с ранжированием результатов. Это, впрочем, в Google тоже отлично умеют делать.
Всё это созвучно изначальной идее Шилита «предсказывать действия людей на основании ситуации». Google Now уже умеет извлекать данные из истории запросов к поисковой системе, а в будущем начнёт анализировать и письма из Gmail, календарь, данные о социальных связях из Google+ и так далее.
Миниатюризация электроники, распространение GPS и беспроводной связи устранили большинство препятствий, мешавших разработке контекстозависимых устройств и приложений. Но главное, чего не было во времена ParcTab, — это обширные базы данных, которые существуют сегодня. Google, Yelp или Foursquare могут без труда сказать, где находится ближайшая, например, аптека, а в будущем, вероятно, такие сервисы будут знать и о том, какие в этой аптеке есть лекарства.
Важное подспорье для электронных помощников — социальные сети. Они хранят бесценные архивы наших личных данных, знают всё о наших социальных связях и даже о наших предпочтениях. Представим простую жизненную ситуацию: один пользователь хочет пригласить в кино другого, но нужно определиться с деталями: когда и куда идти? Какой фильм смотреть? Не проблема: система, которой известны вкусы обоих пользователей, расположение кинотеатров и их программа, легко может выдать рекомендации, отсортированные в порядке потенциальной полезности.
Всё это не значит, что проблем не осталось. Некоторых ключевых технологий по-прежнему не хватает. Например, до сих пор нет стандартного средства определения местоположения внутри зданий (инфракрасная сеть ParcTab, кстати, давала эту возможность, но в реальных офисах или магазинах, вероятнее всего, шанс есть у аналогов технологии, разрабатываемой в Nokia). Не помешал бы и протокол, по которому телефоны могли бы опознавать присутствие друг друга, чтобы, к примеру, напомнить хозяевам обсудить какое-то дело или передать вещь.
Есть и более фундаментальные препятствия. Зачастую очень трудно понять, что именно делает и хочет сделать человек. И неудивительно — люди и сами не всегда ясно осознают это. Предположим, что пользователь зашёл в комнату, где находится предмет, о котором система должна напомнить. С одной стороны, её долг — напомнить пользователю об этом. Но с другой, если в этот момент человек занят чем-то совсем другим, то напоминание лишь отвлечёт его.
Идеальная контекстозависимая система должна понимать, чем в действительности занят пользователь. Для полного решения этой задачи необходим искусственный интеллект, которого пока, увы, нет. Впрочем, справились же, пусть и неидеально, с автоматическим переводом или распознаванием речи. Контексты никак не труднее. Тем не менее эта проблема существенно усложняет разработку контекстозависимых систем. Если даже такие простые вещи, как напоминания, срабатывающие при смене местоположения, сложны в реализации, то что говорить о более изощрённых случаях?
Если ограничить сферу применения контекстозависимой системы, сократив тем самым количество факторов, которые необходимо учитывать, то она будет способна худо-бедно обойтись и без настоящего понимания происходящего. Кирпичики для таких персональных систем уже доступны. Среди них — программы, автоматически меняющие настройки компьютера в зависимости от локации. В пример можно привести приложения Sidekick и MarcoPolo для Mac OS X, способные автоматически сменить множество настроек компьютера при изменении тех или иных условий.
Ещё одна программа для той же системы — Airlock позволяет выполнять разные действия в зависимости от приближения или удаления мобильного телефона, использующего Bluetooth. Кроме программ есть и устройства — например, Twine. Эти универсальные датчики можно разложить по дому и самостоятельно запрограммировать реакцию на срабатывание.
Другая трудность, связанная с контекстозависимыми системами, не имеет технического решения. Она сводится к тому, что всезнающие программы и устройства по определению знают о человеке всё. Даже если мы доверяем им, остаётся множество вопросов, связанных с приватностью. Всегда ли мы хотим, чтобы друзья и знакомые видели, где мы находимся и что делаем? Хотим ли мы, чтобы офисное здание всегда знало, в какой мы комнате? Безусловно, это будет полезно для многих приложений, но заодно работодатель сумеет без труда подсчитать, сколько времени было проведено за рабочим столом, а сколько — в курилке. Для кого-то это может прозвучать как лишний довод в пользу тотального контроля и учёта, но не всем нравится лишний раз ощущать себя винтиками большого механизма, а уж об опасениях по поводу возможных утечек и неправомерного использования информации и говорить нечего. С учётом приватности и разграничения доступа к личным данным разработка контекстозависимых систем усложняется ещё сильнее.
Однако выигрыш от применения контекстов велик и по большей части очевиден. Устройства могут напомнить нам о сотнях дел или просто повышать комфорт — к примеру, автоматически регулировать громкость музыки, управлять освещением и обогревом. Примеров можно придумать множество. Любое из этих приложений стоит усилий, а также проб и ошибок, которые предстоит совершить первопроходцам.