Модульные объекты
Никогда в прошлом мы не обладали такой возможностью программировать окружающие нас материальные объекты, как сегодня. Двое недавних выпускников медиалаборатории сумели придать волшебные свойства непримечательному с виду пластиковому прямоугольнику под названием Twine. Хотя наружность Twine завораживает не больше, чем картонная подставка для бокала с пивом, внутри у него спрятаны датчики температуры, акселерометр, микропроцессор и передатчик Wi-Fi. В него также можно встроить влагомер и сенсоры, считывающие вибрацию и изменение пространственной ориентации. Когда условия окружающей среды меняются, вызывая реакцию датчиков, Twine отправляет уведомление на телефон или почту вам или вашему мастеру-ремонтнику.
Twine предлагает отличный сервис («Ого! — извещает вас SMS. — Да у тебя под отопительным котлом весь пол мокрый!») и является предвестником будущего, в котором объекты будут все чаще конструироваться как модульные. Их можно будет разобрать и перенастроить, но не подобно тому, как хакер взламывает системы, а для усовершенствования, тонкой подстройки, пересборки и адаптации под индивидуальные потребности.
В Twine можно встроить множество самых разных сенсоров, и потому этот гаджет представляет собой как бы белый лист, заполняя который вы программируете свою жизнь. Хотите, чтобы домработница вовремя меняла наполнитель в кошачьем лотке? Сделайте так, чтобы ваша настольная лампа напоминала об этом мурлыканьем. Хотите знать, когда птицы прилетают на вашу кормушку? Сделайте так, чтобы ваш телефон чирикал уведомлениями. Модульность открывает людям новый тип волшебства, который можно подогнать персонально под себя.
Это подводит нас к возможности воплотить еще одну мечту — создание волшебства своими руками. Компании вроде Google, Microsoft, Apple и многие другие сознательно подталкивают разработчиков софта к использованию открытого кода для развития существующих платформ и расширения возможностей их эксплуатации. Работать в этой области им помогают так называемые интерфейсы прикладного программирования (API). Программисты, которые стремятся к совместимости своего продукта с продуктом другой компании, используют для своих целей API этой компании, чтобы потребитель мог воспользоваться преимуществами обоих.
В каком-то смысле все приложения представляют собой компиляции и гибриды. Если, к примеру, отель хочет создать свою карту для клиентов с указанием рекомендуемых мест в городе, он использует API для Google Maps, чтобы задействовать информацию из других источников в Интернете. Клиент оказывается в выигрыше, так как к нему в руки попадает превосходно построенный продукт, без особых усилий заимствующий лучшее из обоих миров программирования. На выходе может получиться не просто карта, указывающая верные направления, но и способная сообщить полезную информацию об интересующих вас местах: заправках, ресторанах и чистых уборных по пути вашего следования. API дает хакерам возможность «играть по правилам», эксплуатируя чужое ПО лишь с незначительными ограничениями. Обе стороны в выигрыше, равно как и потребитель.
Эпоха, когда такими вещами могли заниматься только люди из мира высоких технологий, подходит к концу. Пользоваться модульными технологиями станет так же просто, как собирать домики из LEGO. Не только технари будут заниматься компиляцией и комбинированием кода различных приложений. Создание простых программ-гибридов уже доступно и людям, не имеющим специальных знаний в области программирования. Хотите получать уведомление на электронную почту всякий раз, когда температура в Хьюстоне достигает 37°? Хотите сохранить все фотографии с вашим участием из Facebook в отдельную папку в Dropbox? Зайдите на сайт ifttt.com («если это, тогда то») и напишите правило в одну строчку. Буквально сотни сервисов разных компаний могут взаимодействовать друг с другом, и запрограммировать такие взаимодействия даже проще, чем написать это предложение.
Когда использование API станет доступно для любого объекта и приложения, люди станут находить такие пути их эксплуатации, которые раньше никому и в голову не приходили. Возможность компилирования и пересборки, которую предлагает API, изменит наше взаимодействие с осязаемыми объектами. Регулярные ярмарки мастеров-самодельщиков стали местом, где собираются профессиональные изобретатели и любители, практикующие компиляционный подход к технологиям. В 2013 г. на ярмарке прошла презентация программируемого светящегося жилета. Оборудованный 324 диодами жилет можно запрограммировать таким образом, чтобы на нем высвечивались разные цвета, узоры, текст и даже видео. Другим удачным примером стала роботизированная рука, которая позволяет учителю воспроизвести на классной доске любое изображение, будь то рисунок, картина или график.
Модульные технологии уже находят себе место на кухнях и столах в разных уголках планеты. Технология 3D-принтеров предлагает нам возможность создать любой объект самостоятельно, просто «напечатав» его. Хотите особенную подставку для того сувенира с пляжа или новую деталь для робота из комплекта LEGO Mindstorms? Распечатайте его сами. Вам даже не придется придумывать дизайн — вы можете скачать все чертежи и схемы из Интернета.
Даже носимые технологии можно сделать модульными, к чему инженеры уже прикладывают значительные усилия. В 2013 г. были выпущены наручные часы Pebble, использующие технологию электронных чернил для своего дисплея. Разработчики оборудовали часы интерфейсом API, который позволяет вам самостоятельно писать приложения для Pebble. Эти часы напоминают смартфон, за исключением того, что экран у них маленький и монохромный. Задумка сама по себе обладает большим потенциалом, так как предлагает пользователю самому разработать необходимую ему услугу. Контроль над домашним освещением. Управление замком Lockitron. Дистанционная настройка домашнего отопления в загородном доме. Такие часы, как и смартфоны, — это чистый лист для людей, склонных к изобретательству.
Подобно профессиональным поварам с их шкафчиками для специй, мы сможем изготавливать объекты под свои нужды. Мы станем как волшебники, потому что все вокруг (от форм до функций) можно будет изменить и перепробовать. В мире Интернета вещей объекты смогут использовать API, чтобы связываться друг с другом. Концепция проста: превратить покупателя в производителя. Со временем все вокруг станет программируемым, и все станут программистами.