Як GlobalLogic створювала EcoHike — додаток для туристів, які хочуть очистити Карпати від сміття

У рубриці DOU Labs ми запрошуємо IT-компанії ділитися досвідом власних цікавих розробок і внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на [email protected] .

Привіт! Мене звуть Юрій Голованов, я відповідаю за розвиток мобільного практики у львівському офісі GlobalLogic. Разом зі своєю командою ми займаємося створенням рішень для мобільних пристроїв на iOS і Android. У липні ми запустили додаток EcoHike , некомерційний соціальний проект компанії, мета якого зробити Карпати чистішими. Тепер мандрівники можуть відзначати на карті забруднені ділянки. Відповідно, інші користувачі можуть прокласти маршрут свого відпочинку так, щоб прибрати зазначену місцевість. У цьому матеріалі я розповім докладніше про технічної реалізації проекту.

Як виникла ідея і з чого починалося додаток

Серед наших колег, особливо у Львові, багато любителів активного способу життя, походів в гори, є навіть екологічні активісти. Один з інженерів GlobalLogic, який часто буває в Карпатах, звернув увагу, що останнім часом збільшилася кількість сміття, яке залишають після себе туристи і місцеві жителі. Масштаб проблеми настільки великий, що періодичні вилазки колег на прибирання гірських схилів навряд чи були здатні системно вирішити питання стихійних звалищ на популярних туристичних маршрутах. І ми стали думати над платформою, здатною оперативно фіксувати проблеми екології та об'єднувати зусилля небайдужих людей для їх вирішення.




Подібні проекти і команда розробників

Зрозуміло, не ми першими взялися вирішувати подібну задачу. Додатки з схожим функціоналом для систематизації та організації процесу прибирання сміття на різній місцевості вже були реалізовані. Подібний проект — додаток TrashOut , створене у Словаччині. За сценарієм інформацію про теги отримують екологічні організації, активісти та влади по e-mail. В Україні на карті цього додатка, за останніми даними, відзначені понад 600 місць, трохи менше 20 з них були в результаті прибрані. Інші програми зосереджені на горах або окремих містах . Ще до нашого проекту в Україні була створена Ecomapa , інтерактивна карта Міністерства екології та природних ресурсів України. Її метою в першу чергу було звернення громадян та контроль влади для вирішення проблеми забруднення навколишнього середовища.

Аналізуючи досвід існуючих додатків і сервісів, а також активно консультуючись з нашими друзями-туристами, ми виділили для себе робочу модель, здатну допомогти вирішити деякі екологічні проблеми Карпат без залучення влади і екологічних організацій. Так, багато учасників походів готові прибирати сміття, залишене іншими туристами. Нашим завданням стало допомогти їм у цьому за допомогою простої у використанні програми, здатного фіксувати проблеми тут і зараз. Таким чином, якщо учасники походу знайшли звалище, яке не в змозі прибрати, вони можуть відзначити її на карті, щоб інші групи туристів допомогли закінчити розпочате.

У нас ніколи не було мети зробити EcoHike комерційним, тому ми не залучали інвестиції і не вимірювали грошовий еквівалент програми. Проектом займалися у вільний від основних завдань час, а модерація здійснюється на добровільних засадах. На різних етапах в проекті EcoHike було задіяно 7-8 чоловік. Хтось приходив, хтось ішов, але в основній команді завжди було 5 чоловік: техлид, iOS, Android, веб-розробники.

Технічна реалізація проекту

Зараз існує багато рішень для написання коду одночасно для двох основних мобільних операційних систем (таких, як Xamarin, React Native, Flutter і т. д). Ми свідомо відмовилися від використання цих інструментів на користь «нативної розробки, що дозволило поліпшити продуктивність і швидкість відгуку програми. Використовували Swift для iOS, Kotlin і Java для Android, а також бібліотеку Mapbox для роботи з картами. Це дозволяє зберігати карти в офлайні без дублювання секторів, завдяки чому можна заощадити місце в пам'яті пристрою.

Для бекенду ми зупинилися на Firebase , як найбільш просунутому сервісі, який повністю відповідав вимогам додатка, серед яких підтримка онлайн-режиму і кешування даних в офлайн-режимі. Через Cloud Firestore — хмарну NoSQL-базу даних — додаток може отримати доступ до інформації, коли пристрій знаходиться поза зоною дії мережі. А коли з'являється доступ до інтернету, Cloud Firestore синхронізує будь-які локальні зміни з бекендом.

Також для того, щоб вивантажувати дані при появі мережі, ми використовували новий інструмент на Android — WorkManager. Він дозволяє запускати фонові завдання послідовно або паралельно, передавати в них дані, отримувати з них результат, відстежувати статус виконання і запускати тільки при дотриманні визначених умов. Це якраз те, що нам було необхідно. Ми встановили такі умови для запуску:

  1. Наявність інтернету.
  2. Інтервал перезапуску (тобто, якщо відбулася невдала спроба, умовно через десять хвилин запит повториться, але час повтору буде збільшуватися в геометричній прогресії).

Під час вивантаження фото ми створюємо повідомлення для користувача, щоб дозволити йому стежити за статусом виконаної роботи. Після отримання фото на сервері автоматично спрацьовує тригер, який робить мініатюри зображень і оновлює інформацію про мітці, додаючи посилання на фото і посилання на превью (thumbnail).

Особливу увагу приділили інтерфейсу програми. Ми хотіли зробити дуже лаконічний, простий дизайн, де нічого не відволікає користувача від основного завдання — ставити мітки на карті і шукати мітки, які були створені іншими. Власне, це і є два основні сценарії використання EcoHike. І тут є кілька важливих моментів.






По-перше, програма дозволяє поставити мітку тільки в тому місці, де ви знаходитесь прямо зараз (на основі GPS-координат). Ми свідомо виключили можливість вручну задавати координати проблемних місць, щоб уникнути помилок користувачів і не вводити в оману туристів, які підуть шукати ці мітки.

По-друге, щоб додати мітку на карту, потрібно не тільки підготувати короткий опис проблеми (наприклад, розповісти суть проблеми або залишити підказки, як краще знайти цю точку на місцевості), але і зробити мінімум три фотографії проблемного місця. Так що інші користувачі зможуть краще зрозуміти, що сталося і яка допомога потрібна. Крім стихійних звалищ, на картку також можна додати місця незаконної вирубки лісу та інші проблеми (наприклад, якщо бурелом перегородив туристичну стежку і потрібна допомога, щоб розчистити прохід).

По-третє, перед тим як мітка буде опублікована на карті, вона потрапляє на затвердження до модераторів системи. Це екологічні активісти і мандрівники, не з чуток знайомі з Карпатами (саме з цього регіону ми і вирішили почати запуск своєї системи). Завдання модераторів — стежити за якістю міток, які залишають інші користувачі. Наприклад, видаляти повторювані позначки або блокувати неправомірний контент. Можливо, робота програми покаже, що можна відмовитися від премодерації і зупинитися на постмодерації.

Для модерування використовується спеціальний веб-інтерфейс, система управління і адміністрування міток і користувачів, доступні тільки модераторів і адміністратора. Адміністратор бачить перелік міток і всю наявну в них інформацію, може стверджувати, відхиляти і редагувати існуючі мітки.

Складнощі під час створення програми

Головною складністю було створити так званий офлайн-режим, в першу чергу синхронізувати дані в офлайні. Ви завантажуєте офлайн-карту місця, куди ви прямуєте, яка буде синхронізована з вашим GPS. Коли ви будете на місці і зробити фото, дані зберігаються на телефоні. Додаток автоматично відправить всі необхідні дані на сервер для подальшого підтвердження адміністратором, як тільки у вас з'явиться інтернет.

Крім того, ми зіткнулися з проблемою збереження і вивантаження фотографій. Поки пристрій поза мережі, вони тимчасово перебувають в локальному сховищі. Але головне, щоб, навіть якщо фото було видалено з галереї, ми все одно відправили все на сервер. Це також потрібно у зв'язку з виходом Android Q, де змінюються правила роботи з файлами. Так, було прийнято рішення не запитувати у користувача додаткові дозволи, а обходитися викликом тих програм, які вже встановлені. Отримавши URI файл, ми створюємо його повну копію через дескриптор файлу, а в базі зберігаємо дані про зв'язки — відповідність фото створеної в мітці. Після вдалої вивантаження копія файлу видаляється з локального сховища.

Додаток в дії і плани з розвитку

Офіційний реліз програми відбувся 26 липня 2019 року на території заповідника «Сколівські Бескиди», а з 1 серпня EcoHike запрацював по всій Україні. Зараз ми продовжуємо активно вивчати зворотний зв'язок від користувачів та плануємо наступні кроки щодо його розвитку. Наприклад, хочемо додати можливість прокладати власні туристичні маршрути на карті з урахуванням міток, які залишили інші користувачі.






Також ми хочемо розширити географію використання програми не тільки Карпатами та Західною Україною, але й іншими регіонами країни. Для цього нам дуже важлива допомога небайдужих людей (екологічних активістів, мандрівників, організаторів туристичних походів), готових використовувати додаток в своїй діяльності, ставати модераторами EcoHike, розповідати про програму своїм друзям та знайомим.

EcoHike —це інструмент, який ми створили, щоб допомогти всім небайдужим і соціально відповідальним громадянам нашої країни. Це не якась окрема нова екологічна ініціатива, а наш внесок і наша допомога в розвиток існуючих ініціатив допомогою сучасних технологій. Ми сподіваємося, що ця допомога буде корисною.

Якщо тема екології та захисту навколишнього середовища вам близька і цікава, запрошуємо вас приєднатися до нашого проекту. Що можна зробити прямо зараз?

По-перше, встановіть собі додаток EcoHike для iOS або Android . Спробуйте його в дії і дайте нам зворотний зв'язок.

По-друге, розкажіть про EcoHike вашим друзям і знайомим, яким наше додаток може бути цікавим. Чим більше людей буде використовувати EcoHike у своїх ініціативах, тим більше користі додаток зможе принести.

По-третє, дайте нам знати, якщо ви хочете не просто використовувати EcoHike, але і стати модератором системи. З ростом числа користувачів нам необхідно більше модераторів, здатних підтримувати розвиток платформи і підвищувати якість опублікованого в ній вмісту.

Для зв'язку з командою EcoHike пишіть на пошту [email protected] . Більше про програму в нашому відео.

Опубліковано: 19/09/19 @ 10:00
Розділ Різне

Рекомендуємо:

Подорож на планету Java. Мій досвід проходження сертифікації Java Developer 11
Кейс: Збільшення трафіку для сайту в напрямку «Зовнішня реклама»
Навіщо розвивати українську мову в ІТ-секторі
Front-end дайджест #36: New React Dev Tools і поліпшення продуктивності Instagram
NPX, або Прощайте, глобальні залежності