реклама
Бургер менюБургер меню

Ярослав Мудрый – Проект «Зелёное Колесо» (страница 2)

18

Они распределили роли. Лео, как самый сильный в логике и основном коде, взял на себя «движок» – ту часть, которая будет заниматься расчётами маршрутов и прогнозированием. Майлз погрузился в изучение API (Application Programming Interface – программный интерфейс приложения) городской системы проката и размышлял, как получать данные о свободных велосипедах в реальном времени. Ава рисовала эскизы экранов будущего приложения на своём графическом планшете: где будет большая карта, как будет выглядеть кнопка «Построить маршрут», как анимировать процесс аренды.

Однажды в субботу, после утренней велопрогулки и созвона с командой, Лео столкнулся с проблемой. Его алгоритм построения «идеального» маршрута упорно предлагал велосипедистам кратчайший путь, который, однако, вел по оживлённой магистрали с грузовиками. Это было не просто неэкологично из-за выхлопных газов, но и опасно.

– Он не понимает контекста, – вслух размышлял Лео, глядя на карту на экране. – Для машины – это просто линия на карте. Для человека – это стресс и грязный воздух. Как научить программу думать о комфорте?

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

– Каждой улице – оценка. Шкала от 1 до 10: уровень шума, загруженность транспортом, наличие велодорожки, зелёные насаждения». Но где взять эти данные?

Позвонил телефон. Это был Итан, один из немногих школьных приятелей Лео, который разделял его любовь к технологиям, но больше увлекался дронами и видеосъёмкой.

– Лео, привет! Ты где? Мы в старом скейт-парке за библиотекой. Тут нечто эпическое происходит, нужно запечатлеть с воздуха. Мой новый дрон с камерой 4K! Приезжай, поболтаем!

Лео колебался. Код не писался. «Перезагрузка нужна», – подумал он. – Да и Итан может невзначай подкинуть интересную идею, он всегда видит мир под другим углом. – Хорошо, буду через двадцать минут.

Старый скейт-парк, заброшенный муниципалитетом, был местом паломничества местной молодежи. Скейтеры, BMX-еры, роллеры – все облюбовали его потрескавшиеся рампы и граффити-стены. Когда Лео подъехал, пристегнув свой шлем, Итан уже запускал свой дрон. Аппарат с тихим жужжанием взмыл в небо, а на планшете в руках Итана открылся потрясающий вид на парк с высоты птичьего полёта.

– Смотри, какая перспектива! – восторженно говорил Итан, управляя джойстиками. – Видишь, как люди двигаются? Вот эта группа вот-вот столкнется на пересечении, если они не сбавят скорость. А вот тут – «слепая зона» за той половинкой трубы, её все избегают.

Лео смотрел на экран планшета, и в его голове что-то щелкнуло. Он видел не просто скейт-парк. Он видел живую, динамичную систему. Данные о движении в реальном времени. Точки скопления людей. Неиспользуемые зоны. Это была идеальная метафора для городского трафика!

– Итан, ты гений! – выпалил Лео. – Я-то что? – удивился приятель. – Твой дрон! Он собирает данные о движении! Если бы мы могли анализировать такие потоки в масштабах города… Мы бы видели не просто улицы, а живые артерии. Где пробки, где свободно, где люди любят ехать, а где нет… Мы могли бы строить маршруты не по кратчайшему расстоянию, а по наименьшему сопротивлению и наибольшему комфорту!

Итан, привыкший к внезапным озарениям друга, усмехнулся:

– Опять твои алгоритмы. Ладно, объясни на пальцах, что тебе надо.

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

– Представь, что каждый велосипедист – это твой дрон. Его телефон отправляет анонимные данные: координаты, скорость, направление. Мы собираем эту информацию и видим «тепловую карту» популярных маршрутов. Плюс, можно добавить краудсорсинг: пользователи сами отмечают, где плохая дорога, где красиво, где страшно. Как Waze, но для велосипедов!

– Звучит круто, – сказал Итан, уже представляя себе эпичные видео-презентации с эриал-съемкой. – Но это же гигабайты данных. Где ты всё это хранить будешь? Не на своём же стареньком ноуте?

Лео задумался. Это был серьёзный технический вызов. Персональный компьютер для таких задач не годился. Нужен был сервер. Или…

– Облако! – произнёс он.

– Какое ещё облако? – Итан посмотрел на небо, где не было ни облачка.

– Не то облако, – засмеялся Лео. – Облачные вычисления. Это когда данные хранятся и обрабатываются не на твоём компьютере, а на мощных удалённых серверах, через интернет. Ты как бы арендуешь вычислительную мощь. У Amazon есть AWS, у Google – Cloud Platform, у Microsoft – Azure… Это как виртуальный суперкомпьютер, который доступен из любой точки мира. Нам нужна как раз такая штука, чтобы обрабатывать данные со всего города.

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

Вечером на созвоне с командой он выложил свои идеи.

– Итак, новый план, – начал Лео, делясь экраном с открытыми вкладками. – Наше приложение будет состоять из трёх основных частей, или «слоёв». Первый – мобильное приложение (это твоя зона, Ава, интерфейс). Второй – наш мозг, серверное приложение на Python (это мы с Майлзом), которое будет жить не у меня под столом, а в облаке, например, на Google Cloud. И третий слой – данные. Данные от пользователей (анонимные треки), данные от города (доступность велосипедов) и наши собственные картографические слои с «коэффициентом комфорта» улиц.

– А как мы получим эти «коэффициенты комфорта»? – спросила Ава. – Мы же не можем объехать все улицы в городе.

– Краудсорсинг, – уверенно сказал Лео. – Пользователи сами смогут ставить оценку маршруту после поездки: от одной до пяти звёзд. Плюс, мы можем подключить открытые муниципальные данные: где официально обозначенные велодорожки, где парки, где школы (значит, нужно снижать скорость и быть осторожным). А в перспективе… – он сделал драматическую паузу, – можно попробовать подключить даже данные о качестве воздуха с городских метеостанций, чтобы предлагать самые экологичные маршруты.

В трубке воцарилось молчание.

– Вау, – наконец произнёс Майлз. – Это уже не игрушка. Это серьёзный социально-технологический проект. Мне нравится.

– И мне, – согласилась Ава. – Но это огромный объём работы. Нам нужен план и, возможно, помощь.

– Помощь будет, – сказал Лео. – Первый помощник – это документация. Давайте начнём с подробного технического задания. И… я думаю, нам стоит поговорить с муниципалитетом. Если мы хотим получить их данные и сделать что-то действительно полезное для города, лучше действовать открыто и легально с самого начала.

Они договорились, что Лео и Ава (как самые презентабельные и коммуникабельные) на следующей неделе попробуют записаться на приём в городской отдел транспорта и экологии. Майлз тем временем углубился в изучение Google Cloud Platform.

Перед сном Лео снова вышел на балкон. Город тихо шумел внизу, огни фонарей выхватывали из темноты улицы, которые скоро, как он надеялся, станут понятнее и дружелюбнее для таких же, как он, велосипедистов. Он чувствовал лёгкий трепет. Его детское увлечение компьютерами выводило его в большой, реальный мир. Мир, где строки кода могли влиять на то, как люди перемещаются, дышат и чувствуют себя в своём городе. Это было страшно и невероятно интересно. Он сделал глубокий вдох ночного воздуха и улыбнулся. Завтра будет новый день, новые строки кода и новые открытия.

Полезная информация из главы 2:

API (Application Programming Interface) – это набор правил и инструментов, который позволяет одним программам взаимодействовать с другими. Проще говоря, это «посредник». Когда приложение «GreenWheel» хочет узнать, сколько велосипедов свободно на станции, оно не лезет в базу данных города напрямую (ему не позволят), а вежливо спрашивает через специальное «окошко» (API): «Эй, дай, пожалуйста, данные по станции №5». Городское API возвращает ответ в понятном для программы формате (чаще всего JSON).

Краудсорсинг – решение задач или сбор информации силами большого количества добровольцев, обычно координируемых через интернет. Пример: Википедия (создаётся пользователями), Waze (данные о пробках поступают от самих водителей).

Облачные вычисления (Cloud Computing) – модель предоставления вычислительных услуг (серверы, хранилища, базы данных, сети, программное обеспечение) через интернет. Пользователь не покупает и не обслуживает железо, а арендует нужные мощности у провайдера (Amazon AWS, Google Cloud, Microsoft Azure) и платит только за то, что использует. Это как вода из водопровода: вы не копаете колодец, а платите за кубометры.

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