Хакатон MAPS.ME
В середине июня команда MAPS.ME почти в полном составе ездила на хакатон. Не чей-то чужой, вроде хакатонов по открытым данным или по дата-журналистике, а внутренний. Как два и три года назад, мы на несколько дней покинули офис и семьи, чтобы сконцентрироваться на экспериментах в развитии приложения. День подготовки, три дня работы и выступление в конце.
Самая большая команда разработчиков, включая программистов под iOS и Android, набросилась на задачу UGC: добавить отзывы в карточки объектов. Кажется тривиальной задачей: мы видели отзывы и в специализированных приложениях, типа Foursquare, и в популярных онлайн-картах. Но приложение MAPS.ME хорошо не только дизайном, но и работой в отсутствие интернета. Как вы сделаете отзывы, когда нет сети?
В конце хакатона группа UGC показала звёздочки и смайлики для оценки заведений, но картинки не отразили масштаба работы. Разумеется, должны быть отзывы, и их нужно не только собирать в офлайне, но и показывать, то есть, хранить в файлах карт. Это требует лучших алгоритмов сжатия. Для ресторанов полезно спросить, понравилась ли еда, и какая именно, а для автомойки — качественно ли протёрли кузов и вежливо ли обошлись. Команда вручную просмотрела около 250 категорий объектов, выбрав для каждой признаки, которые могут быть интересны пользователям.
Поскольку внутренние идентификаторы объектов меняются с каждой сборкой карт, мы привяжем отзывы к идентификаторам OpenStreetMap. То есть, по сути, мы проектируем систему отзывов на объекты OSM — как давно мечтали некоторые наши участники. Прошлые попытки не вышли из статуса демонстраций для своих, а тут сразу будет аудитория из десятков миллионов пользователей. Наконец-то они будут писать «неплохая пицца» не в название ресторана, а в отзывы. Может быть, удастся договориться с руководством MAPS.ME об общей базе с другими приложениями на OSM.
Соседний домик в гольф-отеле, больше похожем на коттеджный посёлок, заняла команда метро. К сожалению, лопат не выдали и команда не создала ни метра новых линий. Но нарисовать в приложении MAPS.ME то, что уже выкопано, — почему бы и нет. Нас часто спрашивали, когда появится навигация с использованием общественного транспорта. Начать решили с простого, как казалось: схемы линий метрополитена.
OpenStreetMap — глобальный проект с единой системой тегирования. Если получилось нарисовать московское метро — получится и нью-йоркское. Так мы думали. Хорошая попытка, но нет: русские рисуют линии не так, как немцы, англичане — не так, как корейцы. Как вы знаете, схема метро состоит из трёх элементов:
- Станции — на самом деле, это комплекс из платформы, точек, где останавливаются поезда, и станции как сущности. Нередко это четыре разных объекта, а то и больше. Схема общественного транспорта 2.0, при этом, забывает про точки railway=station в случае метро: это же не платформа и не остановка, дублировать нельзя. Это вообще не физические объекты! Мапперы иногда тоже о них забывают. А с отношением stop_area вообще получается тушите свет.
- Линии — опять две сущности в одной. Это и пути, по которым движется поезд. Картографы очень любят их рисовать, потому что получается красиво, и считают их главной частью отношения маршрута. Увы, пользы от них ноль: важна линия как последовательность остановок, от первой до последней. И тут бардак. Причём, в России ещё нормально, пришлось править только московский МЦК, а в Лондоне многие линии почти не имеют станций.
- Пересадки — их в OSM нет. Не в смысле, не нарисовали, а вообще: для пересадок нет схемы тегирования, никто даже не пытается их картировать. Иногда встречаются попытки смоделировать пересадки отношением stop_area, но лучше бы не пытались. Приходится определять пересадки по близости и затем удалять лишние рёбра.
В общем, за три дня и не такие данные удавалось выпрямить: мы не только автоматически обработали, пусть и с ручной доводкой, системы метро Минска, Москвы, Петербурга, Вены, Барселоны и Сеула, но и сделали полноценный интерфейс! Команда удивлённо наблюдала знакомые схемы в городской геометрии на затенённом фоне карт, а докладчик выбирал станции и прокладывал маршруты с пересадками. Видео его демонстрации опубликовано на ютубе, выглядит примерно так:
Вы нескоро увидите эти технические наработки: за два дня не пишут тесты и проверяют код менее тщательно. Это были эксперименты, но они станут основой для будущих улучшений MAPS.ME. Мы сделаем и навигацию по общественному транспорту, и отзывы, но точно не в том виде, как за эти три дня. Это только часть наших больших планов: приложение через полгода будет несравнимо с нынешним.
В перерывах между работой мы купались, жарили шашлык и бургеры, катались на велосипедах (не всем удалось миновать охрану и поехать изучать окрестности реки Яхромы) и сегвеях. Когда садилось солнце, кто-то увлечённо пел караоке, кто-то, уединившись, смотрел фильмы ужасов. Удивлялись безальтернативному меню ресторана и в панике тушили угли, пока ураган не швырнул их в деревянный дом. По пути домой с трудом не выезжали на автобусные полосы: несмотря на дни работы среди коллег, сложно было поверить, что за окном не воскресенье, а середина рабочей недели.