Как дружат Java и Kotlin, для чего нужен API и как кодируется цвет — об этом нам рассказал Петр Божко, мобильный разработчик Геоскана. Он работает в компании 1,5 года и отвечает за наше приложение Geoscan Jump.
С вами рубрика «10 вопросов» — истории наших специалистов, о которых невозможно молчать!
Чем ты занимаешься в Геоскане?
Я разрабатываю Android-приложение Geoscan Jump для управления Пионером Мини. Это наш образовательный квадрокоптер, который используется для знакомства с пилотированием, программированием и конструированием.
Почему именно Android?
На данный момент Android — одна из самых популярных операционных систем, у которой огромный круг пользователей. Практически все смартфоны в мире сейчас работают либо на Android, либо iOS, и у первой системы, на мой взгляд, больше преимуществ: она открытая, обладает обширной документацией и бесплатным входом, на ней легко разрабатывать. Также Google, разработчик Android, постоянно добавляет новые функции. Мне это очень нравится, ведь так можно следовать мировым трендам.
На какие этапы можно разделить процесс создания приложения?
Сначала нужно придумать идею. Проходит мозговой штурм, во время которого мы с ребятами обсуждаем функции, которые можно было бы внедрить в ПО. Затем я делаю прототип — небольшой рабочий макет приложения. Если он нас устраивает, мы его дорабатываем и продумываем приятный пользователю дизайн. После этого приложение тестируется, отлаживается и выходит на рынок.
На каком языке программирования пишешь?
В основном для Android-разработки используются Java и Kotlin. Они спокойно дружат друг с другом, и что-то удобнее делать на одном языке, что-то — на втором. Например, в Kotlin есть корутины (Coroutine), которые упрощают выполнение сложных задач, не нагружая систему так, как это делает Java. В свою очередь, Java намного старше своего «друга», поэтому для него существует куда больше библиотек и документации. Поэтому некоторые вещи намного проще реализовать на Java. А для дизайна макетов используется язык развертки XML.
Наше приложение Geoscan Jump написано на Java и Kotlin в соотношении примерно 50 на 50 %.
Цвет кнопок зашит в код?
Да, так и есть. В идеальном мире все необходимые цвета зашиваются в одном файле, а уже на этапе дизайна оттуда берутся переменные. Поэтому, если необходимо поменять цвет текста во всем приложении, это можно сделать всего лишь одним кликом.
В принципе всё то, что видит пользователь, зашито в код: отступы, размеры текстов и картинок. Также существует адаптивная верстка, когда экран приложения подстраивается под размер физического экрана. Если планшет с большой диагональю, элементы будут больше, и наоборот. При этом идеология в обоих случаях будет примерно одинаковая, и пользователю и там, и там будет удобно работать.
Что такое баг?
Баг — это какая-либо ошибка в коде, которая приводит к определенным последствиям. Есть баги критичные (из-за них, например, приложение полностью перестает функционировать или функционирует с большими ошибками), а есть некритичные (среди таких — баг с отступом, когда текст прилипает к какой-либо стороне или переносится некрасиво).
Как быстро можно исправить ошибку?
Баги обычно отлавливаются на этапе тестирования или разработки и тут же исправляются. Если же они обнаруживаются в момент релиза, приходится достаточно быстро искать ошибки, править их и затем выпускать фактически новую версию приложения.
Приведу пример. В смартфонах Xiaomi своя оболочка, и, когда я реализовал функцию автоподключения к квадрокоптеру, оказалось, что на некоторых устройствах она работала некорректно и полностью выводила приложение из строя. Так, нам написал один преподаватель и сказал, что на его стареньком Xiaomi Geoscan Jump перестал работать. Мы специально для него в кратчайшие сроки выпустили версию без этой функции. В дальнейшем я добавил в приложение переключатель автоподключения: то есть, если пользователь заметит сбои, он может отключить его.
Нужно ли знать устройство дрона, чтобы создать для него приложение?
Сложный вопрос. В целом это необязательно, так как дрон и любое другое устройство предоставляют API (application programming interface). И мы, разработчики, используем функции из этого интерфейса, для того чтобы управлять квадрокоптером.
Однако лучше все-таки понимать строение устройства, чтобы избежать багов из-за некорректной интерпретации функции. Например, в предыдущей версии нашего ПО разработчик сделал большую задержку между командами, и квадрокоптер мог зависнуть в воздухе на две секунды. Пользователь, столкнувшись с этим, начинал паниковать и думать, что что-то сломалось. Позже мы убрали эту задержку.
Кто ты по образованию?
Я учился в физико-математическом лицее, где практически всю старшую школу была информатика. Мне очень нравился этот предмет, и уже тогда я понял, что хочу заниматься программированием. Поэтому после школы я поступил в ИТМО на специальность «Информационные системы». Я разбираюсь в базах данных, системах оплаты, управления квадрокоптерами, но вышел на более узкое направление, как мобильная разработка.
Насчет создания Android-приложений: в школе у меня был курс от школы Samsung (я его, правда, не окончил 😀), который тем не менее подтолкнул меня заняться разработкой. Затем я создавал Android-приложения в университете в рамках проектной деятельности: сначала маленькое, которое практически ничего не умело, затем игру, а после этого и Geoscan Jump. Наше ПО стало частью моей дипломной работы, так как на тот момент я уже работал в компании «Геоскан».
Чем ты еще занимаешься помимо разработки Android-приложений?
Квадрокоптеры основательно вошли в мою жизнь, и помимо разработки Android-приложений я увлекаюсь моделированием и конструированием. У меня уже есть два дрона, которые я модернизирую. И, так как я технарь, мне нравится в принципе любая техника: автомобили, мотоциклы и компьютеры.
В каком направлении можно двигаться дальше?
Разработка приложения — это не узкая специальность: можно развиваться в создании помощников, карт, игр или специализированных ПО для компаний. Все, что придумаете, можно реализовать. Если мобильная разработка вам не понравилась, то, зная языки Java и Kotlin, вы можете переметнуться в разработку баз данных, сервисов или бэкенда (многие сервера, которые стоят в крупных компаниях, работают отчасти на Java).
Если вы хотите подробнее узнать о нашем квадрокоптере «Пионер Мини», можете перейти на наш сайт. А здесь Петр подробно рассказывает о новинках дрона.
#беспилотники #дроны #программирование #мобильноеприложение #мобильнаяразработка #Android #геоскан #Java #Kotlin