Привет! На связи IceRock Development, команда из Новосибирска.
Хотим поделиться полезным опытом. Вот уже 2 года мы занимаемся разработкой на Kotlin Multiplatform. В 2018 году начали реализовывать свои проекты и сразу сделали несколько открытий. В том числе выяснили, что мультиплатформенная технология значительно экономит силы и время.
![](https://habrastorage.org/webt/vl/ri/ol/vlriolmwdr9qphnwt1jnq9wzt3c.png)
Мы еще раз убедились в ее эффективности на KotlinConf 2019, которая проходила в Копенгагене. Это самое масштабное событие в мире программистов на Kotlin. Они собираются, чтобы провести воркшопы, обменяться опытом и просто приятно провести время в кругу единомышленников.
![](https://habrastorage.org/webt/al/_i/bn/al_ibn0zxubufoei1pcpyys3a10.jpeg)
Да, многолюдненько. Потому что и сообщество программистов объединяет несколько десятков стран. Фото с официального сайта JetBrains
JetBrains, организаторы конференции и создатели языка Kotlin, предложили нам проект. На конференции представляли новую версию языка. Она позволяет писать код в том числе под смарт-часы Apple. Чтобы продемонстрировать эту возможность, мы должны были создать приложение под три платформы: iOS, Android и WatchOS.
Квест во имя Kotlin: что получилось сделать для конференции
Во время подготовки к KotlinConf мы вместе с JetBrains работали над Kotlin Locator/Finder. Это игра-квест, где нужно было побегать по Bella Center. К слову, это второй по величине конференц-центр в Скандинавии, который специально арендовали для KotlinConf 2019 в Копенгагене! Здесь собрались 1700 разработчиков со всего мира.
Суть такая: скачиваешь приложение и с помощью подсказок начинаешь искать «волшебные точки», которые помечены iBeacon-метками. В этих точках можно узнать интересные подробности про Kotlin: историю языка, новые инструменты. Точку обнаружить не так-то просто: она появляется, только если приближаешься к ней на определенное расстояние.
Чтобы пройти игру, нужно найти 6 маячков в разных местах.
![](https://habrastorage.org/webt/ze/5b/7h/ze5b7hicq1gpg2a9eotcyqugu3m.png)
Таким получился интерфейс Kotlin Locator/Finder на iOS для смартфона
JetBrains создали сервер-приложение с несколькими запросами на базе Kotlin Spinner Game. Нам позвонили, рассказали про идею. Арт-лид стал колдовать над дизайном, а технический директор со специалистом занялись «начинкой» приложения.
Мы согласовали с сервером протокол, нарисовали карту и создали архитектуру приложения. Начали разработку на iOS-платформе под смартфон. Первым пунктом в техзадании были смарт-часы. Но версия Kotlin, позволяющая кодить для них, вышла позже. Поэтому приложение для часов сделали после смартфона.
![](https://habrastorage.org/webt/zg/jw/4q/zgjw4qm82ogkg7z3pzcl2zuuxko.png)
Так выглядит интерфейс Kotlin Locator/Finder приложения для смарт-часов
Все протестировали. В самом конце подключился Android-программист, реализовал только UI для Android. И — вуаля! — приложение готово.
Делимся наработками:
В процессе у нас получилось:
- первый раз использовать Kotlin/Native на WatchOS с версией компилятора 1.3.60 — всё прошло отлично!
- отладить взаимодействие из общего kotlin кода с iBeacon-метками. Мы работали с библиотекой Reedyuk/blue-falcon. Библиотеку в итоге форкнули себе и доработали.
Часть изменений зареквестили автору оригинала: поиск устройств, отображение устройств. Он принял обратную связь и поблагодарил.
![](https://habrastorage.org/webt/h8/iw/5l/h8iw5l0hkvdwsdm_gsrk01vkpu0.png)
Итог: можно сказать, удалось все, что запланировали. Заодно потестили новую версию Kotlin Multiplatform и убедились, что на ней действительно можно писать приложение под часы.
Само приложение скачали несколько сотен раз в Play Market и в App Store. Для локального мероприятия очень даже себе показатель. До финала квеста дошли 20 человек. Победителей JetBrains отметили призами.
![](https://habrastorage.org/webt/ns/4k/7u/ns4k7ukzxzyaatxnsab_jvhjuac.jpeg)
Только посмотрите на эти лица! Да, слегка смущенно выглядят ребята
![](https://habrastorage.org/webt/8d/yu/h5/8dyuh5x2pnowsv1onlxa7w_bolc.jpeg)
Еще бы! Потому что на них смотрят самые крутые Kotlin-разработчики мира!
Сэкономили время и затраты на команду: что нам дала мультиплатформенная технология
Над приложением фулл-тайм работал — барабанная дробь! — только iOS-разработчик. Остальные: дизайнер, Android-программист и тестировщик — трудились на неполную ставку. И сделали полностью нативное приложение!
Нативные приложения сложнее, поэтому и стоят дороже. При стандартной разработке приложения для двух платформ мы бы наняли одного разработчика для iOS, другого — для Android. Потом платили бы фулл-тайм двум разработчикам. То есть делали бы двойную работу и тратили в полтора раза больше ресурсов.
С Kotlin и скорость разработки стала значительно выше. Мы использовали moko-network и по openapi-спецификации сгенерировали весь код по работе сервером для двух платформ. Также весь код логики: логику самой игры, работу с данными, локальное хранение и пр. — написали один раз на Kotlin. Ничего не пришлось дублировать.
Основную часть багов нашли при разработке и отладке iOS-приложения. Поэтому создавали приложения для часов и Android практически без них.
Код Kotlin Multiplatform очень похож на Swift. У приложения Kotlin Locator/Finder на iOS и Android общая бизнес-логика: за поведение на обеих платформах отвечает один кусок кода. Это дает одинаковую детализацию и стабильность работы. Соответственно, и комфорт для пользователя.
![](https://habrastorage.org/webt/bh/7t/x-/bh7tx-tcojk30xe76ewcuk6hvyu.jpeg)
Приложение на iOS
![](https://habrastorage.org/webt/kv/oc/ad/kvocadjmklzusnkjoxyy43idyrm.png)
Приложение на 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-сообщества. Подскажем пару полезностей:
- наши опенсорс библиотеки для быстрого старта при использовании Kotlin Multiplatform;
- сайт с библиотеками для Kotlin Multiplatform;
- сайт с библиотеками и ссылками на проекты;
- телеграм-канал, где 800+ программистов обсуждают нюансы использования технологии.
Если есть вопросы, напишите нам на mpp@icerock.dev. Рады любой обратной связи!