Архив недели
Понедельник
Всем привет! На это недели аккаунт буду вести я, Дмитрий Шлюгаев Head of iOS из SberMarket.
Так получилось, что в мобильную разработку я пришел из фронтенда, когда там были популярны jQuery/ExtJS/BackboneJS и еще куча фреймворков, которыми перестали активно пользоваться. И первыми проектами под iOS были нативные и гибридные приложения, спасибо аутсорсингу за это.
На этой недели я хотел бы поговорить:
• Декларативный стиль написания UI: abode air/flex, phonegap/cordova, reactnative, flutter.
• Чем хорош и плох Swift UI.
• Как черпают идеи из других сфер (про переиспользование подходов в разработке iOS из других направлений IT).
• Remote first, удаленочка. Как работают процессы на удаленке и почему это хорошо.
Тред (Дмитрий Шлюгаев)
Краткий экскурс в историю гибридной/кросcплатформеной разработки под iOS, пройдемся только по тем у кого есть декларативный UI
Первым врывается конечно же Apache Cordova (PhoneGap) в далеком 2010 году, кажется это было еще недавно
Большая поддержка от гигантов Abode/Google/IBM/Microsoft/Mozzila.
Светлые надежда на будущее, где все будут разрабатывать приложения при помощи HTML/CSS
На текущий момент он все еще жив, имеет ряд инструментов в виде доп фремверков для UI/логики, с полным доступом к железу.
Все еще тормозит из-за подхода все делать через WebView
Но даже на этом примере неудачной попытки облегчить жизнь в написание приложений всем разработчикам мы видим тот самый шаг в сторону декларативного UI. HTML/CSS выживают из-за своей лаконичности и простоты входа
На данный момент крупные вендоры ушли и проект почти загнулся.
Вторым участником стал Adobe AIR. Ребята не стали городить надстройки над WebView, а сумели создать свой райнтайм.
Рендерилка переводила flash/web в рантайм со свои собственным UI движком (флаттер взял похожий подход). Без доступа к нативным компонентам.
MXML выступал для описания GUI и все это дело работало именно в декларативном стиле вместе с ActionScript (разница с JS очень небольшая).
MXML довольно громоздкий, но связка биндингов с ActionScript работала очень хорошо. Подобное в нативе мы увидим только с эпохой FRP фреймверков в iOS.
Вся эта красивая история работала начиная с iOS 4.3 (2011 год). Сейчас еще живет. На мой взгляд умерло до прихода свифта на iOS, так как там были серьезные проблемы сс сапортом платформы. Ну и даты: Adobe 2008-2020 и теперь у HARMAN с 2019.
Итого, на дворе 2015 год, есть две кросплатформы, которые сильно потеряли свою популярность. Стартанул Swift, порог входа стал еще ниже. Apple активно продает идею верстать мышкой в сториборде (правда что-то пошло не так).
Март 2015 и мы увидели "убийцу нативной разработки" React Native. Ребята из Фейсбука активно продают идею, что любой фронтендер теперь может создать быстрое приложение, у которого будут нативные компоненты под капотом
Для верстки используем HTML+CSS с компонентным подходом от React. На мой взгляд эталон декларативного подхода в разработке UI
Ребятки из фейсбука хорошо разобрали проблемы phonegap и главное достижение: интерпретация компонент в натив, закрыло главную проблему phonegap (производительность).
Крупное сообщество принесло хорошую поддержку и больших вендоров. Конечно, технология не вечна и уперлась в свои проблемы повлекшие отказ, крупных вендоров в сторону натива. До сих пор альтернативы создать быстро приложение у фронтенд разработчиков нет.
Минусы технологии прекрасно описаны в известном ряде статей medium.com/airbnb-enginee…
Итого RN напомнил о замечательном декларативном UI, который повлияли в дальнейшем сильно на наш любимый натив.
Последний гость Flutter. Стартанул в конце 2018. Сходу врывается в дверь со своим движком для рендера и языком программирования Dart. Декларативный стиль UI из переиспользуемых виджетов.
Замечательная графическая библиотека Skia + скафолдинг, выглядит как работа над ошибками RN.
Конечно же биндинги и все прочие плюшки из web компонент.
Можно провести параллель с Adobe AIR, мы не имеем нативные компонент, только стили виджетов, которые мимикрируют, под нативные UI элементы.
Если к синтаксису Dart привыкнуть можно, то отсутствие нативных компонент усложняет жизнь и бриджинг, приведет к тому же результату, что и в RN
Все 4 гибридные/кросплатформенные фреймверки. Только улучшали декларативный стиль разработки UI, который активно перетаскивают из web разработки в мобильную. Хорошая конкуренция заставляет таких гигантов, как Apple пересматривать текущий метод в разработке UI.
Тред (Дмитрий Шлюгаев)
А теперь представьте, вам нужно накатать свой пет проект допустим это простенькое CRUD приложение, чтобы вы выбрали и почему?
🤔
25.8%
Flutter🤔
16.4%
React Native🤔
1.7%
Xamarin🤔
56.2%
Native (iOS/Android)Вторник
Сегодня будем продолжать наш поход по миру декларативного UI в iOS. Пришло время SwiftUI 🌈
В 2019 году Apple презентует декларативный UI.
Думаю всем понятно, что Apple запрыгивает на поезд декларативщины поздно. Все проводят параллель с Swift, когда вышла первая версия, т.е. все сыро и многое не работает.
Сразу переехать Apple не может, многое из UIKit сложно мигрировать или закрывать обертками на SUI. В начале 2020 новые фиксы и доработки, затем летом анонс SUI 2 поколения.
И вот тут мне кажется можно проследить динамику и сколько средств вкладывает Apple в новые инструменты. Во второй версии закрыли основные проблемы и уже можно стало выпускать легко маленькие приложения и с со своими доп обертками большие.
Анонс SUI 3 поколения закрывает большой пулл проблем с респондерами (вся работа с textfields/keyboard). Для меня остается только открытый вопрос по сложной навигации.
Конечно саппорт старых проектов с UIKit будет еще жить 2-3 года, некоторые не переедут никогда (не забываем кейс с objc, от которого в гигантах не отказались)
Если заглянуть под капот одних и тех же компонент в SUI разных поколений, можно увидеть, как Apple постепенно уходит от оберток над UIKit в сторону внутренних компонент. Хороший пример со списками.
Тред (Дмитрий Шлюгаев)
Что же ожидать дальше от SwiftUI 🤩 ?
Если вернутся к заимствованию из web компонент и RN/Flutter, как наследников phonegap/AdobeAIR. То список будет выглядеть следующим образом:
Полноценный HOT reload, сейчас существую preview, но он слабо дотягивает до всех функций симулятора.
Scaffolding. Сейчас для в SUI нет генерации доменых моделей для UI / темплейтов. Частично можно решить на данный момент через XCode templates.
Apple стоит посмотреть в сторону реализации в Flutter.
Среда
Продвинутая сложная навигация с учетом работы диплинков.
Тред (Дмитрий Шлюгаев)
Суббота
Пробовали Jetpack Compose / SwiftUI?
🤔
19.9%
Да, пишем продакшен код🤔
32.5%
Да, только в пет проектах🤔
30.4%
Нет, но хочу попробовать🤔
17.3%
Нет, не интересноТак как времени в обрез, а неделя вся забита работой, предлагаю следующее:
Небольшой тред про удаленку, делитесь вашими лайфхаками, как работать вне офиса и не лежать на диване весь день :)
У большинства удаленшиков, есть ритуалы. У меня это заварить кофан, перед дейликом/ревью. Кто-то надевает «рабочую одежду». Были примеры, что можно выйти погулять и вернутся домой или просто пойти в коворкинг :)