Здравствуйте, меня зовут Брор. Я только что заключил контракт с компанией EcoOnline (в Тёнсберге, Норвегия) в качестве младшего разработчика. EcoOnline - это ИТ-компания, занимающаяся разработкой программного обеспечения для повышения и упрощения химической безопасности.

Eco Archive - это мобильная версия веб-приложения, предназначенная для обеспечения легкого доступа к информации о различных химических веществах для сотрудников разных компаний.

Это история о том, как это приложение появилось на свет, и о моем пути его разработки.

Как это началось

Прошлым летом и осенью я работал стажером в EcoOnline. Я бы порекомендовал всем начинающим разработчикам пройти стажировку, пока вы получаете степень (YMMV), что я и сделал. Но вернемся к истории. Осенью мы начали новый проект по обновлению пользовательского опыта нашей платформы (среди прочего), который включал обновление нашего старого мобильного приложения для наших существующих клиентов.

Я взял на себя ответственность за мобильное приложение, и это стало моей степенью бакалавра на последнем курсе университета. Задача заключалась в том, чтобы обновить старое приложение так, как я хотел. Сделайте его удобным для пользователя, исследуйте новые технологии, изучите и сделайте это к концу первого квартала 2018 года.

Старое приложение

Достаточно сказано…

История нового приложения

Когда я начинал разработку нового приложения, мне не нужны были какие-либо связи со старым приложением, кроме названия. (Я не мог выбрать название, иначе я бы придумал какое-нибудь умное хипстерское название: что-то вроде… Ecotron!)

Когда я поступил в университет, я хотел быть мобильным разработчиком. Это была моя мотивация и моя цель. До универа у меня не было опыта, и мои лучшие навыки были связаны с веб-разработкой. За последний год я приобрел некоторые навыки работы с React и Vue.

Гибридные усилия

Поскольку мой последний проект включал Vue.js, я начал создавать макеты и прототипы приложения с помощью Cordova и Vue. Примерно через месяц я осознал недостатки этих гибридных приложений. Я просто не мог почувствовать нативность приложения, но теперь, в конце января, у меня не было времени изучать такие чистые нативные вещи, как Swift и Java / Kotlin. У меня определенно не было времени на создание двух кодовых баз.

React Native вместо Hybrid

Я слышал о React Native, и у меня были некоторые навыки и знания React. Я начал изучать это, и за выходные я сделал небольшое пробное доказательство концепции, используя React Native и Expo.

В понедельник утром я взял свой прототип, созданный с помощью Vue и Cordova, загрузил его на симуляторе, открыл Hyper и набрал exp init EcotronNative (да, я использовал это дрянное имя 🐝).

Я начал перестраивать приложение Cordova в приложение React Native с помощью Expo. Это было в последние дни января, и мне оставалось закончить только март 😰.

Работа с Expo

У меня было около двух месяцев, чтобы закончить это приложение (читай: реализовать функции и подготовить его к тестированию, хотя из-за некоторых внешних откликов выпуск был отложен до конца апреля). Я хотел, чтобы приложение было готово к выпуску к концу марта, чтобы последние недели можно было посвятить контролю качества.

Хочу поблагодарить Expo за проделанную работу! Не думаю, что смог бы сделать это без Expo.

Все мои данные поступали из наших собственных API-интерфейсов, поэтому моя задача заключалась в том, чтобы представить их в разумной форме. Я понял, что мне не понадобятся какие-либо другие внешние пакеты или API, которые Expo еще не предоставляет.

Документация Expo великолепна и намного опережает документацию React Native, которая может быть устаревшей или просто отсутствовать. В документации Expo есть хорошие примеры с большой ценностью. Это хороший способ увидеть реальные примеры того, чего вы хотите достичь, и того, как их реализовать.

За пару недель я выполнил критически важные функции, и приложение стало намного лучше, чем гибрид!

Как я выпускал производственные сборки и бета-версии

В период разработки я получил плохие новости: из-за новых ограничений на iOS-клиент Expo мне пришлось прибегнуть к TestFlight. Но, учитывая характер того, как Expo обслуживает build.js, мне нужно было различать бета-версию и производственную сборку. И именно тогда я понял, что Expo имеет функциональность канала выпуска, так что теперь все мои производственные сборки построены с использованием:

  • exp build:android --release-channel prod && exp build:ios --release-channel prod

И все мои бета-сборки используют:

  • exp build:ios --release-channel beta && exp build:android --release-channel beta

Управление версиями выполняется GitHub, поэтому, когда я хочу создать сборку, я выхожу из мастера, чтобы заморозить состояние проекта и запустить бета-сборку. Это распространяется среди моих тестировщиков, и потенциальные исправления применяются к ветке и распространяются путем запуска exp publish --release-channel beta.

Когда тестировщики дают мне добро, я запускаю производственные команды и публикую эту сборку.

Изменения, внесенные в ветку, теперь возвращаются в основную ветку, и я могу продолжить работу над следующей версией.

Резюме

Работать с React Native и Expo было весело. Я многому научился, и на моем рабочем месте теперь есть новое приложение в App Store и Google Play. А теперь мне просто нужно написать отчет о моей ученой степени. Я с нетерпением жду лета, когда я закончу учебу и смогу работать полный рабочий день в качестве младшего в EcoOnline и быть их «разработчиком приложений». Я буду продолжать использовать Expo и с нетерпением жду их выступления на React Native EU 2018 в Польше. Я буду там, и я надеюсь, что люди, читающие это, тоже будут!

Также спасибо команде вокруг меня, предоставляющей потрясающие API, и спасибо моему наставнику за то, что научил меня всему, что я знаю!

Любопытный? Следите за нашим гостевым блогером Брором Брурбергом в Твиттере!