Hello SwiftUI!

12. 1. 2021

SwiftUI jako moderní framework nabývá na své oblíbenosti! Stále více a více programátorů přichází na chuť tomuto novému „konceptu“ či způsobu, jak implementovat iOS aplikace. Jeho užití vede také jednoznačně k jednoduššímu vývoji multiplatformních aplikací v rámci Apple ekosystému. Pokud jste se však se SwiftUI doposud nesetkali nebo neměli možnost jej aplikovat ve vývoji, napadá Vás zajisté pár základních otázek.

Například:
Je tento framework připraven pro produkční prostředí?
Lze pomocí něj vytvořit komplexní aplikaci?
Lze ho vhodně zapojit do aktuálního procesu vývoje s UIKit frameworkem?

Vyhledat odpovědi na internetu by Vám nezabralo nejspíše více jak 10 minut. Odpovědi na ně jsou však povětšinou skeptické a neurčité. Abych Vám těch zmíněných 10 minut hledání ušetřil, odpovím Vám na tyto otázky jasně a stručně:

"Až na drobné detaily ano."
"Lze ho využít spíše za účelem jednoduchého zobrazení dat, např. ve formulářových aplikacích."
"Vhodný způsob určitě existuje. S trochou snahy a trpělivosti."

Pojďme se nyní ale podívat na všechny tyto rádoby nedostatky z trochu jiné strany, a podpořme je neoddiskutovatelnými plusy, kterými SwitUI bezpochyby disponuje. Protože, jak už jedno známé přísloví říká: „Kdo chce, hledá způsoby. Kdo nechce, hledá důvody.“ A my budeme společně hledat právě ty "způsoby".

Seznam "problémů" či nedostatků, a jejich (někdy možná úsměvné) odůvodnění, příčinu a řešení uvádím v následujícím výčtu: 

1. Zpětná kompatibilita pro zařízení s operačním systémem starším než iOS 13

  • K 17. červnu 2020 více než 92% apple zařízení, zakoupených v posledních 4 letech, mají již nainstalovaný iOS 13, u iPadů pak až 93%.
  • Apple se na každé WWDC chlubí touto statistikou. Vývojáři této platformy pak nemusí podporovat verze systému starší více než 2 roky.
  • Pravděpodobnost, že by aplikace neměla úspěch z důvodu nepodporující verze systému, je tedy velmi malá až mizivá.

2. Občasné problémy s live preview - hlavním lákadlem SwiftUI

  • V dnešní uspěchané době, kdy se počítá každá minuta, jsme možná až moc zhýčkaní nástroji jako je Xcode. Porovnejme však jeho chybovost s ostatními nástroji. Jistě mu pak odpustíme nějaký jeho pád či dlouhou indexaci. Sáhněme si každý do svého svědomí a přiznejme si, že ne vždy a ne každý náš kód funguje napoprvé a bez chyby. Proto dovolme i nástroji a jeho vývojářům udělat chybu, nenabídnout automatické doplnění metody nebo prodlení u live preview.
  • Zmiňované problémy se objevovali ve větší míře v prvních beta verzích Xcode. U současné verze jsem nezaznamenal výraznější problém, pouze snad při špatné syntaxi kódu. 

3. Obtížnější implementace vlastního vzhledu komponent

  • Tato komplikace se nevyskytuje pouze u SwiftUI, ale také u standardních komponent v UIKit. Každý chce mít grafiku aplikace na první pohled všeříkající o jeho firmě či brandu. Někdy to však může razantně uškodit elegantnosti uživatelského rozhraní. Je to možná příležitost zamyslet se nad změnou? Co myslíte?
  • Z vlastní zkušenosti je ve SwiftUI implementace některých nestandardních UI komponent o hodně jednodušší než v UIKitu. Příkladem může být třeba implementace obrazovky pro přihlášení uživatele.

4. Nejednoznačný přístup k architektuře aplikace

  • Zde záleží na pohledu každého vývojáře a architekta systému či aplikace. Na světě již existují určité vzory architektury, které vrstvu UI oddělují od bussiness logiky. Stačí tak vybrat ty správné a uplatnit je. Avšak, kdybychom pořád jen používali již vymyšlené vzory a nepřidali trochu vlastní tvorby, existovaly by vlastně všechny ty návrhové vzory, knihovny a další nástroje? Myslím, že ne. Určitě je zde tedy i možnost seberealizace, a záleží pak na přístupu řešitele k tomuto "problému". 

5. Nedostatečná dokumentace

  • Dalo by se částečně i souhlasit, ale nemůžeme pořád jen přijímat informace jako na zlatém podnose. To, že řešení nenajdeme na prvním odkazu StackOverflow, nemůžeme brát jako nedostatek či problém. Občas je nutné věnovat trochu více svého času i třeba banální věci, jako je stylování labelu. Kompenzací Vám může poté být dobrý pocit z toho, že jste daný problém vyřešili sami, bez potřeby kopírovat již hotové, navržené řešení.

6. Chybějící komponenty

  • Určitě není každá komponenta z UIKit převedena do SwiftUI (možná to ani nebylo záměrem). Způsob tvorby UI komponent je trochu jiný a ve značné míře i o dost jednodušší. Není tedy problém ukázat své vývojářské kvality, potřebnou komponentu naimplementovat a ještě ji nabídnout ostatním.

7. Nemožná či obtížná migrace UIKit <-> SwiftUI

  • Nemusíme být tolik kritičtí v otázce migrace z UIKit na SwiftUI nebo naopak při použití SwiftUI v kódu složeného primárně z UIKit komponent. Jelikož Apple rozhodně nezapomněl na možnosti migrace a přechodu na novější technologii. Použití aktuálního kódu v kombinaci se SwiftUI je určitě možné např. pomocí  UIHostingController, v ideálním případě s minimálním zásahem do již existujícího kódu. Navíc použitím knihovny SwiftUI - Introspect lze přistoupit k SwiftUI View jako UIKit/Appkit elementu.

8. UI chyby nebo špatně čitelné složení view

  • Těžko hledat na světě framework, který neobsahuje žádnou chybu. A výjimkou není ani SwiftUI. Apple využívá optimalizaci hierarchie view. Efektivnější výsledná skladba view si však bere svou daň nejednoznačností v hierarchii view.
  • Správnou vlastností každého vývojáře je řešení problémů a proto nečekejme, až přijde někdo jiný a daný problém vyřeší.

A konečně také slíbené přednosti SwiftUI!
Po všech těch zdánlivě neřešitelných problémech zakončeme dnešní zamyšlení optimisticky - neodmyslitelnou výhodou či předností SwiftUI je jeho přehlednost, jednoduchost a strmá učební křivka. Pro konzervativní vývojáře ale nejspíš dosti slabý argument. Tak dále...

V porovnání s použitím storyboardu je vývojáři určitě blíže nový způsob definice layoutu (minimálně jazykem jeho definice - swift namísto XML). Někdy těžce dosažitelný autolayout najednou není potřeba. Základem SwiftUI je Stack podobající se známému UIStackViewSwiftUI přidává třetí typ mezi stacky, a to ZStack.  Dále již zmiňované live preview. S ním není nutné zdlouhavé testování každé jednotlivé úpravy. Odpadá tak opakované buildování a testování aplikace na nekonečném množství simulátorů.

Závěr

Berme dnešní shrnutí nedostatků a jejich řešení především s nadhledem. Problematika využití SwiftUI určitě zaslouží zamyšlení, není však nutné se jej obávat. Co SwiftUI nemůžeme jednoznačně upřít je však to, že přináší zlom v možnosti definovat UI.

Apple, jak už tomu někdy bývá, podmínil jeho použitím implementaci nových widgetů. Nedává nám tak jinou možnost, než pro tyto účely použít SwiftUI dokonce i v produkčním řešení. A tak určitě sami sebe nebo svého konzervativního šéfa přesvědčíte, že SwiftUI určitě stojí za to! 

Věřme, že v následujících letech budou všechny aktuálně "nepřekonatelné překážky" v použití SwiftUI odstraněny. A za pár let si snad ani nevzpomeneme, jaké je to definovat UI ve storyboardu nebo mergovat xml soubor!

A rada na závěr: zkuste naimplementovat jednoduchou přihlašovací obrazovku pomocí SwiftUI a UIKit. Ale pozor, ať se nezamilujete, pak už není cesty zpět!

< Zpět na VÝPIS AKTUALIT

Další články z kategorie

23. 12. 2021
Úspěšný vstup do nového roku a svátky plné pohody, klidu a odpočinku přeje celý tým B2A!

Přejeme všem obchodním partnerům i dalším příznivcům vánoční svátky přesně takové, jaké máte nejraději. Plné pohody, odpočinku, dobrého jídla a společnosti těch nejbližších. Děkujeme za perfektní spolupráci v roce 2021 a přejeme šťastný a úspěšný vstup do roku 2022!

PŘEČÍST
6. 12. 2021
První krůčky k digitalizaci zdravotnictví probíhají i u nás v ČR

Dříve trávili novorozenci na oddělení týdny, někdy i měsíce. A rodiče v permanentním stresu pendlovali mezi nemocnicí, domovem a prací. A dnes. Dnes jsme pokročili tak daleko, že pokud to zdravotní stav alespoň trochu dovolí, miminko můžou rodiče po pár dnech vzít domů. Sžívat se a užívat si společné chvíle. A hlavně – být v […]

PŘEČÍST
6. 11. 2021
Proč cílíme na User Centric Approach

Zastáváme názor, že spokojení zaměstnanci jsou těmi největšími tahouny firemního rozvoje. Při vylaďování našich aplikací hrál proto „user centric approach„ vždy zásadní roli… Správně pojmenovat nám jej ale pomohla až společnost Apple. Místo zaměření na procesy, které ještě nefungují, se zaměřujeme právě na přání a priority konkrétních lidí na konkrétních pozicích a stavíme softwarové vrstvy, které přesně odpovídají […]

PŘEČÍST
30. 10. 2021
Petr Kubíček jako host v novém díle podcastu #salesbooster

O tom, proč je metoda „user centric approach“ základním stavebním kamenem úspěšné digitalizace nebo jak se za posledních sedm let změnit náš mindset v B2A, hovořil Petr Kubíček (CEO v B2A) s Petrem Sobotkou v novém díle podcastu SalesBooster. „S Petrem Sobotkou se znám už od dob vysokoškolského studia… a tak jsem jeho nabídku zúčastnit se jako […]

PŘEČÍST
30. 9. 2021
Tři fáze designování komponent – 3.díl

V této závěrečné fázi designování komponent se zaměříme na použitelnost CSS, zamyslíme se nad možným rozšířením o tabulkové direktivy a uvedeme si jejich hlavní výhody. Pro ty z vás, které předchozí dva díly minuly, uvádím níže odkazy k přiblížení tématu: Tři fáze designování komponent – 1.díl Tři fáze designování komponent – 2.díl CSS Vstup do […]

PŘEČÍST
1. 7. 2021
RabbitMQ - implementace message brokera

Message broker Message broker je software, který dovoluje, jak už název vypovídá, různým aplikacím či službám komunikovat a vyměňovat si mezi sebou informace. Tyto brokery využívají ke komunikaci různých protokolů (např. AMQP), což dovoluje aplikacím být na sobě nezávislé a komunikovat mezi sebou i přes to, že jsou napsány v různých jazycích či běží na rozdílných […]

PŘEČÍST
19. 5. 2021
Fastlane z trochu jiného úhlu pohledu

Zřejmě všichni iOS vývojáři již slyšeli o nástroji Fastlane, který se využívá k automatizaci činností v průběhu celého vývoje nejen iOS aplikací. Jako první nás nejspíše napadne jejich generování, testování a vydávání. My se dnes ale podíváme na jiné - možná ne tolik rozšířené - využití, které tento nástroj rovněž poskytuje. Fastlane Fastlane umí podat […]

PŘEČÍST
29. 4. 2021
Tři fáze designování komponent – 2.díl

V předchozím díle jsme si názorně ukázali design tabulkové komponenty tzv. “from scratch” jen za pomocí HTML a CSS. Markup jsme rozčlenili do komponent za pomocí BEM konvence pojmenování CSS tříd, a tímto jsme si předchystali půdu pro pokračování, které je uvedeno v tomto 2.dílu. Celá tato třídílná série je do jisté míry na sobě nezávislá […]

PŘEČÍST
17. 3. 2021
Přínosy digitalizace výroby pro oblast kvality

Společnost Intemac Solutions, s.r.o. - zabývající se poradenstvím českým firmám v oblasti implementace digitálních technologií - nás pozvala, abychom se zúčastnili prvního studiového webináře, který se konal 3.března 2021 v Kuřimi.  Webinář byl zaměřený na téma „Zlepšování kontroly kvality díky digitálním nástrojům“, a to konkrétně na přínosy digitalizace ve výrobních firmách. V rámci webináře jsme […]

PŘEČÍST
16. 3. 2021
Přínosy digitalizace výroby pro oblast kvality
PŘEČÍST

Hledáme lidi s talentem a zapálením pro věc.

Zobrazit pracovní nabídky
menu-circlecross-circle
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram