Блог

Sustainable tech. Як створювати мобільні застосунки з турботою про довкілля

Спираючись на екологічно дружні практики, розробники мобільних застосунків створюють довгострокову цінність для бізнесу, суспільства та довкілля. Застосунки на основі цих практик продукують менше викидів CO2. Такий підхід дозволяє запропонувати більш ефективне та конкурентоспроможне ІТ-рішення для клієнта, водночас поліпшити користувацький досвід. Є багато способів, як це зробити. Пропоную ознайомитись із кількома поширеними sustainable підходами в розробці мобільних застосунків.

Sustainable технології: що це

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

Sustainable-підхід — достатньо новий тренд, на який протягом багатьох років не звертали увагу. Вважалося, що зі споживанням енергії пов’язані фізичні пристрої, а не програмне забезпечення. Але нічого не відбувається окремо: попит на програмне забезпечення здебільшого диктує розробку обладнання. До того ж неоптимізований код призводить до марної роботи пристроїв і, як наслідок, невиправданих викидів вуглецю. Програмне забезпечення, розроблене без урахування вимог до збереження енергії, може стати справжньою проблемою для екології.

За даними Green Software Foundation, є три способи зменшити викиди вуглецю від роботи програмного забезпечення:

  • споживати мінімально можливу кількість електроенергії;
  • використовувати ефективне обладнання (наприклад, енергоефективні сервери, обладнання з низьким електроспоживанням);
  • робити більше, коли електрика «чиста» (виробляється з обмеженим викидами парникових газів або без забруднення довкілля), і менше, коли «брудна».

Ці принципи не залежать від стеку технологій. На ресурсі Green Software Foundation можна більше дізнатись, завдяки чого вони працюють та дозволяють розробляти більш екологічний софт.

Sustainable підходи в розробці мобільних застосунків

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

У цій статті розглянемо деякі найпоширеніші екологічно дружні практики в mobile-розробці.

Оптимізація відстеження місцезнаходження

Кожен розробник мобільних застосунків знає, що однією з функцій, яка найбільше витрачає заряд батареї, є відстеження місцезнаходження. У такому разі смартфон постійно шукає та приймає сигнали від супутників, точок доступу Wi-Fi і стільникових веж, а потім обробляє ці дані. Йдеться не лише про батарею пристрою, а і про велику кількість трафіку та даних, які зберігаються і обробляються в хмарі. Існує багато бізнес-кейсів, коли потрібно відстежувати місцезнаходження користувача, але кожен має свої потреби в частоті оновлення та точності локації. Вкрай важливо використовувати їх як потенціал для оптимізації таких ресурсозатратних операцій.

Часто власники продукту звертаються до команди розробників із запитом постійно відстежувати локацію користувача. Єдина правильна відповідь у таких випадках: «А навіщо вам потрібен цей функціонал?». Часто відповідь може бути на кшталт такої: «Щоб дізнатися, чи не підійшов користувач до конкретного магазину». Або хочуть знати, коли користувач покидає офіс. Для таких випадків не потрібне постійне відстеження. Мобільні платформи мають спеціальну функцію geofencing, оптимізовану на апаратному рівні, і запускають програму лише тоді, коли користувач потрапляє/виходить в/із певного регіону.

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

Оптимізація нетворкінгу

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

Особливості енергоспоживання, на які потрібно зважати для екологічно дружньої розробки:

  • Стільникові мережі споживають більше енергії, ніж Wi-Fi.
  • Слабкі сигнали можуть призвести до повторної передачі даних.
  • Обмежена пропускна здатність призводить до тривалої активності приймачів.
  • Місцезнаходження та постачальник послуг користувача можуть впливати на споживання енергії.

Ефективний нетворкінг у застосунках може продовжити час роботи батареї.

Для оптимізації нетворкінгу існує кілька стратегій. Перша — мінімізація — допомагає позбутися марного трафіку, переглянувши бізнес-вимоги та дизайн системи. Наприклад, кешування, стиснення переданих даних, зменшення якості медіа та розміру файлу. Прикладом цієї концепції є програмне забезпечення для відеоконференцій, яке динамічно адаптує якість стримінгу.

Варто також узяти до уваги групування транзакцій. Поступове завантаження контенту постійно утримує радіомодулі в активному стані, що призводить до витрати енергії. Тому коли це можливо, ваша програма має об’єднувати мережеві операції. Наприклад, якщо застосунок показує рекламу, завантажуйте кілька оголошень за один раз.

Ще одна стратегія оптимізації нетворкінгу — відкладення виконання операцій. Тут стануть у пригоді deferrable background sessions — спеціальний функціонал в iOS. Такі операції виконуються поза процесом, що робить ваш застосунок більш відгуковим і не вимагає його постійної роботи. До того ж система може автоматично оптимізувати виклик такої операції (наприклад, запустити її пізніше, дочекавшись гарного зв’язку). Це може бути корисним для функцій резервного копіювання або синхронізації.

Й останнє, але не менш важливе: бажано обмежити мережеву активність, коли використовується мобільний інтернет. Особливо для об’ємних за трафіком транзакцій. Наприклад, не завантажуйте цілу бібліотеку повнорозмірних зображень через стільниковий зв’язок, принаймні якщо користувач не запросив цього в явному вигляді. Це не тільки неоптимально з точки зору енергії, а й може фруструвати користувача марно витраченими тарифними мегабайтами.

Неправильне використання таймерів

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

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

Можливо, вам потрібно змінити підхід: замість зосередження на фіксованих часових інтервалах, варто розглядати можливість спиратися на події-тригери, як це було в прикладі з geofencing в розділі про відстеження локації.

Дизайн

Якщо у вашому застосунку здебільшого використовуються стандартні дизайн-елементи, вам можна менше перейматися через, наприклад, непотрібні оновлення контенту. Адже системні API спеціально розроблені для оптимізації енергоефективності. Однак більшість реальних проєктів хочуть виділятися і використовують привабливий кастомний дизайн. Щоб забезпечити енергоефективність, бажано:

  1. Переконайтесь, що ви відмальовуєте контент лише тоді, коли його дійсно видно (він не закритий іншими views та не знаходиться поза межами екрана).
  2. Зменшіть використання прозорості, особливо blur-ефекту. Або хоча б використовуйте тоді, коли «підложка» view з прозорістю не буде надто динамічно змінюватись.
  3. Додайте dark mode. Впровадження dark mode в застосунки можна розглядати як данину трендам або просто гарне дизайн-рішення. Насправді це має глибше значення для економії ресурсів смартфона, оскільки зменшує яскравість екрана.

Нативка чи кросплатформа?

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

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


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