Как Kotlin Multiplatform экономит время на разработку. Личный опыт создания игрового приложения для KotlinConf 2019

Привет! На связи IceRock Development, команда из Новосибирска.

Хотим поделиться полезным опытом. Вот уже 2 года мы занимаемся разработкой на Kotlin Multiplatform. В 2018 году начали реализовывать свои проекты и сразу сделали несколько открытий. В том числе выяснили, что мультиплатформенная технология значительно экономит силы и время.

Мы еще раз убедились в ее эффективности на KotlinConf 2019, которая проходила в Копенгагене. Это самое масштабное событие в мире программистов на Kotlin. Они собираются, чтобы провести воркшопы, обменяться опытом и просто приятно провести время в кругу единомышленников.

JetBrains, организаторы конференции и создатели языка Kotlin, предложили нам проект. На конференции представляли новую версию языка. Она позволяет писать код в том числе под смарт-часы Apple. Чтобы продемонстрировать эту возможность, мы должны были создать приложение под три платформы: iOS, Android и WatchOS.

Квест во имя Kotlin: что получилось сделать для конференции

Во время подготовки к KotlinConf мы вместе с JetBrains работали над Kotlin Locator/Finder. Это игра-квест, где нужно было побегать по Bella Center. К слову, это второй по величине конференц-центр в Скандинавии, который специально арендовали для KotlinConf 2019 в Копенгагене! Здесь собрались 1700 разработчиков со всего мира.

Суть такая: скачиваешь приложение и с помощью подсказок начинаешь искать «волшебные точки», которые помечены iBeacon-метками. В этих точках можно узнать интересные подробности про Kotlin: историю языка, новые инструменты. Точку обнаружить не так-то просто: она появляется, только если приближаешься к ней на определенное расстояние.

Чтобы пройти игру, нужно найти 6 маячков в разных местах.

JetBrains создали сервер-приложение с несколькими запросами на базе Kotlin Spinner Game. Нам позвонили, рассказали про идею. Арт-лид стал колдовать над дизайном, а технический директор со специалистом занялись «начинкой» приложения.

Мы согласовали с сервером протокол, нарисовали карту и создали архитектуру приложения. Начали разработку на iOS-платформе под смартфон. Первым пунктом в техзадании были смарт-часы. Но версия Kotlin, позволяющая кодить для них, вышла позже. Поэтому приложение для часов сделали после смартфона.

Все протестировали. В самом конце подключился Android-программист, реализовал только UI для Android. И — вуаля! — приложение готово.

Делимся наработками:

В процессе у нас получилось:

  • первый раз использовать Kotlin/Native на WatchOS с версией компилятора 1.3.60 — всё прошло отлично!

Итог: можно сказать, удалось все, что запланировали. Заодно потестили новую верисю Kotlin Multiplatform и убедились, что на ней действительно можно писать приложение под часы.

Само приложение скачали несколько сотен раз в Play Market и в App Store. Для локального мероприятия очень даже себе показатель. До финала квеста дошли 20 человек. Победителей JetBrains отметили призами.

Сэкономили время и затраты на команду: что нам дала мультиплатформенная технология

Над приложением фулл-тайм работал — барабанная дробь! — только iOS-разработчик. Остальные: дизайнер, Android-программист и тестировщик — трудились на неполную ставку. И сделали полностью нативное приложение!

Нативные приложения сложнее, поэтому и стоят дороже. При стандартной разработке приложения для двух платформ мы бы наняли одного разработчика для iOS, другого — для Android. Потом платили бы фулл-тайм двум разработчикам. То есть делали бы двойную работу и тратили в полтора раза больше ресурсов.

С Kotlin и скорость разработки стала значительно выше. Мы использовали moko-network и по openapi-спецификации сгенерировали весь код по работе сервером для двух платформ. Также весь код логики: логику самой игры, работу с данными, локальное хранение и пр. — написали один раз на Kotlin. Ничего не пришлось дублировать.

Основную часть багов нашли при разработке и отладке iOS-приложения. Поэтому создавали приложения для часов и Android практически без них.

Код Kotlin Multiplatform очень похож на Swift. У приложения Kotlin Locator/Finder на iOS и Android общая бизнес-логика: за поведение на обеих платформах отвечает один кусок кода. Это дает одинаковую детализацию и стабильность работы. Соответственно, и комфорт для пользователя.

При работе на Kotlin Multiplatform мы сэкономили ресурсы, значит, в конечном итоге смогли бы сделать приложение дешевле для клиентов. И гораздо быстрее вывести его на рынок.

Что может дать Kotlin Multiplatform любому бизнесу

Совместное с JetBrains приложение мы делали скорее как имиджевый проект. Но разработка — тоже бизнес. Мы побывали в роли своих же клиентов: точно так же тратили ресурсы и ждали результата, как обычно делают при заказе приложения для коммерческих целей. Поэтому в том, как эффективно Kotlin Multiplatform помогает решить бизнес-задачи, убедились на личном опыте.

Резюмируем кратко:

Быстрый выход на рынок. Все этапы разработки, проверки и тестирования проходят почти в 1,5 раза быстрее, чем при создании нативных приложений отдельно на iOS и Android. Хотя все зависит от сложности UI. Так что ускорить разработку в среднем можно на 20–50%.

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

Если проект сложнее, одному спецу нужно написать общий код и бизнес-логику. Разработчику другой платформы не придется делать двойную работу. Останется подключить приложение к общей библиотеке и добавить UI.

Полностью нативное приложение. То есть адаптированное под конкретную платформу. Удобное как для разработчика, так и для пользователя.

Совместимость с другими языками программирования. Если у вас есть приложение, в которое вы хотите интегрировать Kotlin Multiplatform, его не придется полностью переписывать. Язык похож на Swift и совместим с Java.

Сейчас мы в IceRock Development ведем большинство проектов с помощью этой технологии. 2019 год мы в компании объявили годом Kotlin Multiplatform.

Стараемся внести свой вклад и в развитие международного Kotlin-сообщества. Подскажем пару полезностей:

  • https://moko.icerock.dev — наши опенсорс библиотеки для быстрого старта при использовании Kotlin Multiplatform;
  • https://libs.kmp.icerock.dev — сайт с библиотеками для Kotlin Multiplatform;
  • https://kmp.icerock.dev — сайт с библиотеками и ссылками на проекты;
  • https://t.me/kotlinmpp — телеграм-канал, где 800+ программистов обсуждают нюансы использования технологии.

Если есть вопросы, напишите нам на mpp@icerock.dev. Рады любой обратной связи!

 

Источник

Читайте также