В апреле состоялась конференция для разработчиков мобильных приложений Mobius. На мероприятии Программу «Единая фронтальная система» представляли лидеры команды мобильной разработки Дмитрий Евстратов и Даниил Калинцев (Отдел развития платформы ЕФС АО СберТех) с рассказом о масштабируемом VIP архитектурном дизайне для компонентов с использованием React Native.
Для тех, кому интересна мобильная разработка Программы ЕФС, кто не присутствовал или не успел пообщаться с ребятами на конференции, мы подготовили короткое интервью. В комментариях к нему вы можете задать вопрос спикерам напрямую.
 

 
— Расскажите о мобильной разработке в Программе, над чем вы работаете?

— Отметим, что мобильная разработка в Программе появилась относительно недавно, около года. Преимущественно мы занимаемся созданием приложений для внутреннего клиента, т.е. сотрудников банка. В настоящий момент наша команда поддерживает одно мобильное приложение, разработанное полностью на нативных технологиях, но в ближайшем будущем мы планируем полностью перейти от создания нативных приложений с нуля к быстрой разработке приложений на Мобильной Платформе ЕФС, использующей технологию React Native. React Native позволяет нам решить задачу с обеспечением омниканального вывода продуктов банка в mobile и desktop клиенты, т.к. прикладной код теперь использует один и тот же технологический стек – TypeScript (мы за типизированный JavaScript), React и Redux. Мобильная платформа – это комбинация из набора back-end сервисов и front-end библиотеки компонентов для построения мобильных интерфейсов и удобной связи с back-end сервисами Мобильной Платформы. На Мобильной платформе уже разрабатывается ряд мобильных пользовательских сервисов и около десятка крупнофункциональных блоков, которые возможно переиспользовать для других функциональностей.
 
— Интересно, расскажите подробнее про мобильную библиотеку.

— Мобильная библиотека ЕФС – это два крупных направления: визуальные компоненты (кнопки, переключатели, стилизованные таблицы, выпадающие меню и т.д.) и невизуальные сервисы (логирование, аутентификация, удалённое конфигурирование работа с сетью и т.д.)
В задачи нашей команды входит весь жизненный цикл продукта: проектирование, разработка, тестирование, поддержка, а также планирование стратегического развития для поддержки динамически меняющегося бизнеса.
Мы стараемся подходить к разработке библиотеки с максимальной строгостью и щепетильностью. Стараемся довести компоненты и сервисы до совершенства. В процессе разработки у нас, конечно же, появляются трудности и проблемы, указывающие на несовершенство выбранной архитектуры. Но мы не отчаиваемся и итерационно её улучшаем.

Библиотека дала нам возможность плотно познакомиться с миром JavaScript и TypeScript в частности. Мы открываем для себя новые подходы, архитектурные паттерны (такие, как Flux) и нам это нравится, потому что расширяет наш кругозор и дает нам идеи для новых уникальных решений.

Стоит отметить, что в настоящий момент мы планируем использовать мобильную библиотеку только для внутренних проектов. Две ближайшие задачи помимо разработки и расширения возможностей компонентов – это разработка мобильных рабочих мест сотрудников (МРМ), динамически обновляющих свой контент с использованием возможности интерпретации JS налету, и переход к унифицированной с desktop версией библиотеки, позволяющей разрабатывать кросс-платформенные фронтальные сценарии. Эти задачи помогает нам решить React Native.

— Сколько времени может уйти на разработку компонента библиотеки?

— На компоненты уходит от недели до месяца. Простые можно сделать за неделю, не считая времени на тестирование. Для сложных компонентов потребуется около месяца активной разработки, чтобы обеспечить стабильность работы компонента и его полное покрытие тестами.
Внутри мы не перестаем дискутировать о стабильности технологии: сейчас React Native сам по себе 0.46, и финальная версия 1.0 еще будет не скоро, отметим, что и выпуск новых версий существенно замедлился.

С другой стороны, в каждой новой версии становится меньше исправлений. Сейчас версия стала выходить раз в месяц и по release notes можно сделать вывод, что количество исправлений не увеличилось в сравнении с 2-х недельными итерациями выпуска. Мы склоняемся к тому, что Facebook не откажется от технологии React Native, — уж слишком много сил ушло на него и многие продукты Facebook крутятся именно на нем.

Хотя риски есть, но мы не сильно переживаем, так как используем самую малую часть React Native, для нас это низкоуровневый движок, который является мостом между JS и Objective-C, а также строителем интерфейса приложения по DOM дереву, сгенерированному React JS. 80% функциональности наших компонентов никак не контактирует с особенностями React Native, поэтому если вдруг от него откажется Facebook, мы сможем сами написать подобную штуку. Опыт и понимание технологии у людей уже есть.

— В мобильной разработке вы цените «доступность низкоуровневых возможностей ПО», а как это сочетается с работой с React Native? Со стороны кажется, что она неизбежно должна быть менее низкоуровневой, чем традиционная мобильная разработка.

— Наверное, это сочетание в том, как мы это используем. Все низкоуровневые вещи мы пишем на Objective-C, на языке разработки мобильных приложений. Мы используем все нативные возможности платформы iOS, нам ничто не мешает использовать все что угодно, например, любые дополнительные фреймворки, которые используются только в IOS сообществе. React Native нисколько нас не ограничивает и позволяет использовать наш опыт мобильной разработки в полную силу. Мы экспериментируем и пробуем новые технологии в процессе создания библиотеки.
Что интересного можно отметить в технологическом стеке в общем: использование фреймворков Kiwi, Realm и Typhoon, Generamba для создания шаблонов наших модулей. React Native с Typhoon — это уникальная в своем роде штука. В целом, многое, что мы делаем в Программе ЕФС, уникально, аналогов на рынке нет по причине специфики задач и масштабов.

Нас часто спрашивают, когда стоит использовать React Native и зачем это нужно. Конкретно в нашем случае, React Native нужен для того, чтобы унифицировать стек разработки прикладных разработчиков, создать возможность для кросс-платформенных решений, а также динамических мобильных рабочих мест. React Native позволяет людям, не имеющим опыта в Objective-C, Swift, Java, Kotlin, создавать мобильные приложения на том же технологическом стеке, что и web-приложения.

— У части разработчиков существует предубеждение не против JavaScript в целом, а против его выхода за пределы фронтенда (вроде Node.js) — особенно. React Native тоже является таким выходом за пределы фронтенда?

— Можно сказать, что и так. React Native позволяет работать и с базами данных, и с внутренними механизмами самого устройства, например, геолокацией. Он позволяет использовать возможности мобильного устройства по максимуму.

— Большинство новых разработчиков сейчас учат сразу Swift. Что вы думаете о Swift? И что лучше изучать Objective-C или Swift?

— Идеально знать оба языка невозможно, но для новых разработчиков, нужно знать хотя бы в малой мере Objective-C и хорошо Swift: Objective-C все равно в какой-то мере нужен разработчикам, некоторые фишки лучше понять именно на нем. А так Swift – очень приятный язык, который сейчас стабилизируется. У него были сложности, когда они выпускали новые версии. У всех была головная боль, связанная с переходом на новую версию, т.к. очень часто менялся именно синтаксис. Но сейчас он стал только лучше. Есть уже много библиотек и статей по Swift. Objective-C за последний год стал сильно уходить на задний план.

— Какие результаты достигнуты?

— Завершен первый виток развития с React Native, пока нет массового запуска мобильных приложений, использующих нашу библиотеку. Сейчас у нас идет уже следующий виток, когда мы знаем многие фишки, которые предоставляет JavaScript и React Native. Теперь мы опираемся на наш опыт и идем дальше: есть динамическая подгрузка частей приложения, команда прикладных разработчиков будет делать не отдельные приложения, а сами бизнес-процессы.
Полноценного фидбэка на нашу библиотеку пока еще нет, только от одной команды разработчиков, им все нравится, они достаточно быстро делают свои приложения, используя библиотеку. Когда делаешь мобильное приложение на нативном коде, самое больное – когда надо сделать сложный UI, это всегда отнимает много времени. Они этим не занимаются и просто конструируют процесс. У них получается такое прототипирование, но более продвинутое. В целом, они довольны, а если они довольны, то и мы рады, а когда действительно пойдет прирост в скорости и будет реально ощутимая польза, будет настоящий прорыв.

В команде мобильной разработки Программы ЕФС сейчас 11 человек — 9 разработчиков, product owner и scrum master. В команде всего две девушки, одна из которых разработчик. Они очень толковые!

Перспектива есть, работы много. Это не даёт нам времени скучать и подталкивает к постоянному совершенствованию!
 
В ближайшее время мы планируем провести митап по темам мобильной разработки.
Поделитесь, пожалуйста, какие темы вам интересно было услышать и обсудить на митапе. Варианты ниже могут показаться общими, пожалуйста, конкретизируйте свои предложения в комментариях.
Чему быть на митапе?

Проголосовал 31 человек. Воздержалось 35 человек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Поделиться с друзьями
-->

Комментарии (6)


  1. AlexRoch
    12.07.2017 12:54
    +5

    Библиотека дала нам возможность плотно познакомиться с миром JavaScript и TypeScript в частности. Мы открываем для себя новые подходы ...
    — т.е., если я правильно понял, Вы выбрали технологию не изучив ее, а потом решили поверх пилить свой велосипед и при этом убеждены, что
    Идеально знать оба языка невозможно…

    Звучит так, словно команда отчаянных новичков в судоходном деле, дает интервью перед своим первым выходом в море, ну и так получилось что этот выход и есть начало кругосветного путешествия!
    «Будет трудно, но Мы уверены в своих силах, потому что Мы — Команда!»
    P.S. Где получать от Вас новости? Спасибо!


    1. jasesuperhero
      12.07.2017 13:47

      Библиотека дала нам возможность плотно познакомиться с миром JavaScript и TypeScript в частности. Мы открываем для себя новые подходы ...

      AlexRoch, не совсем. Мы изучили технологию и ее возможности перед запуском процесса разработки мобильной библиотеки, сделали пару R&D прототипов. Мы провели глубокое исследование с нашими коллегами из web отдела платформы. Тут скорее имелось в виду то, что среди iOS разработчиков мало специалистов в JS/TS, да и вообще это немного другой мир для нас :)
      Погружаясь в мир возможностей JavaScript, React, низкоуровневые возможности React Native — у нас появляются новые идеи как для архитектурных особенностей выстраиваемой библиотеки, так и функциональных (прим. динамическая подгрузка JS Bundle).
      Идеально знать оба языка невозможно…

      Это фраза относилась к нашему мнению про выбор языка разработки для iOS (Swift/Objective-C). На данный момент в нашей команде используется Objective-C, т.к. большого выигрыша в использовании Swift нет из-за того, что React Native написан на Objective-C и чистом C.

      Новости можно получать в блоге ЕФС. Тут публикуются наши статьи и анонсы предстоящих мероприятий, в которых мы будем участвовать.


  1. jankovsky
    12.07.2017 13:39

    Поздравляю с изобретением bootstrap на typescript! Только вот зачем…


    1. jasesuperhero
      12.07.2017 14:11

      Да, вы правы, но отчасти. Мы создали свою библиотеку нативных компонентов, а также TS интерфейсы для них. Это позволяет отгородить себя от особенностей реализации компонентов React Native (View, ScrollView и.т.д.), а также от изменений от версии к версии, которые частенько ломают проекты.
      Мобильная библиотека обеспечивает единый визуальный стиль для внутренних разработок банка, а также предоставляет сервисы по работе с внутренними системами, т.е. прикладному разработчику не нужно задумываться о том, как ему авторизоваться или получить файлы с ECM банка. Это позволяет увеличить показатель time to market продукта и повысить его стабильность.
      В итоге можно сделать вывод, что мобильная библиотека — это не Bootstrap.


    1. oldschoolgeek
      13.07.2017 13:06

      На всякий случай дополню, что React Native — это совсем НЕ то же самое, что PhoneGap и ему подобные решения. По сути, React Native всего лишь:

      • позволяет использовать JavaScript как язык программирования вашего мобильного приложения
      • даёт удобные биндинги к API мобильной платформы
      • позволяет описывать пользовательский интерфейс с помощью похожей (но только похожей) на HTML разметки

      Никаких web view и HTML/CSS по умолчанию в React Native приложении нет.

      С другой стороны, идея сделать что-то в духе angular-material для мобильной платформы, чтобы интерфейс всех экранов и внешний вид элементов управления соответствовали «фирменному стилю» — совершенно здравая идея, позволяющая ещё и экономить на решении прикладных задач путём многократного переиспользования конструктора.


  1. WizardryIB
    14.07.2017 12:13
    +1

    Приветствую! Скажите, когда и какое будет первое приложение на базе данной библиотеке?