Letošní WWDC byla opět po delší době nabitá novinkami. Od nových zamykacích obrazovek na iOS, statistik týkajících se pohybu a spánku ve WatchOS přes možnost navrhnout si ideální přístrojovou desku ve svém autě pomocí CarPlay až po zlatý hřeb večera, ve který snad už nikdo ani nedoufal: iPadOS a jeho podpory oken a externích monitorů. Došlo i na hardwarové novinky v podobě nového čipu M2 a nového Macbooku Air. Ty ocení hlavně běžní uživatelé, ale WWDC je primárně zaměřená na vývojáře. Co si teda firma z Cupertina připravila pro nás?
SwiftUI 4.0
SwiftUI je tu s námi již nějakou chvíli a čím dál více se z něj stává framework, kterému dáváme přednost před UIKitem. A není se čemu divit – tento framework způsobil menší revoluci v psaní UI a umožnil tisícům začínajících vývojářů naskočit poměrně rychle do kolotoče vývoje, i proto se stal tak oblíbeným. Každý rok přišel vývojový tým stojící za SwiftUI s řadou větších či menších novinek, které posunuly používání SwiftUI zase o krůček blíže tomu, aby v něm vývojáři byli opravdu schopni napsat jakoukoliv aplikaci, která je napadne. I letos SwiftUI přichází s velkým množství novinek, přesto se čtvrtá verze od svých předchůdců zásadně liší. Nově se již nezaměřuje jen na základní komponenty a funkce, ale primárně se věnuje tvorbě komplexnějších layoutů. Jednou z těch větší novinek v tomto směru je například nové Custom Layout API, které by nám mělo umožnit jednodušeji vytvořit pokročilejší layouty, na které jsme dříve potřebovali UICollectionViewLayout případně UICollectionViewCompositionalLayout.
Swift Charts
Potom se slovo přesunulo k vizualizaci dat. Nová vícesloupcová tabulka v dnešní době už asi příliš neoslní, ale buďme za ni rádi, protože se vždycky může hodit. Ale zobrazit v aplikaci nějaký hezký graf není vždy tak jednoduché, jak se může na první pohled zdát. Apple si je toho plně vědom, a proto letos představil tzv. Swift Charts, které nám umožní velmi jednoduše tvořit vlastní grafy. Swift Charts podporuje snad všechny typy grafů, co existují. Sloupcový a liniový graf asi nikoho nepřekvapí, ale zobrazit v aplikaci třeba takovou heatmapu, to už je trochu jiná frajeřinka! Grafy samozřejmě podporují širokou škálu modifikace, voice over a nechybí ani animace. Na tomto novém frameworku je vidět, že Apple čerpá ze zkušeností ze svých aplikaci. A asi mi dáte za pravdu, že ty nejsou vůbec malé – aplikace jako Zdraví, Cvičení, Spánek nebo třeba Aktivita jsou všemi možnými grafy prošpikované. Už se nemůžu dočkat, až si zkusím vytvořit nějaký graf v některé z našich aplikací. To ale není zdaleka všechno.
Asi mi dáte za pravdu, že vytvořit aplikaci pro iPhone je ve SwiftUI velmi jednoduché, ale přidat podporu i pro iPad nebo Mac je někdy oříšek i v UIKitu. S příchodem podpory oken na iPad a možností spustit iOS aplikaci na Macu bude tento problém ještě palčivější, protože uživatel si může okno aplikace zvětšit či zmenšit jak uzná za vhodné a vlastně je mu jedno, jak si s tím aplikace poradí. Proto je někdy potřeba některé informace schovat nebo zobrazit v jiné podobě, ale i takové drobnosti vyžadují několik desítek řádek kódu. SwiftUI přichází s možností, jak tento na první pohled jednoduchý problém řešit. Apple totiž představil nové view, kterému jen definujete všechny možné varianty zobrazení, a systém potom sám určí, která je ta nejvhodnější. Ano, takhle jednoduché to prý bude, a jestli se to potvrdí, tak aplikace velmi jednoduše odemknou potenciál velkých monitorů a iPadů a hlavně ulehčí i celou implementaci.
Letošní novinky dělají ze SwiftUI opravdu silný nástroj na tvorbu jakéhokoliv layoutu a jediné, co nás může trošku štvát, je fakt, že s tím Apple nepřišel alespoň o rok nebo ideálně dva dříve, přeci jen ne každý bude mít tu možnost začít na těchto novinkách stavět od prvního dne. Už teď je ale jisté, že ve chvíli, kdy je budeme moci využít naplno, už se budeme jen těžko vracet k UIKitu, který se pomalu stává mrtvým. I Apple už trochu změnil svou rétoriku a přístup ke SwiftUI, označuje ho spolu se Swiftem za nejlepší kombinaci, jak vytvářet aplikace, a můžeme očekávat, že nové věci už budou SwiftUI only a Apple se primárně zaměří na odladění interoperability mezi UIKitem a SwiftUI. Ostatně možnost přidat do UICollectionViewCell pomocí jedné property view vytvořené ve SwiftUI je toho jasným důkazem.
Swift Package plugins
Další příjemnou novinkou jsou Swift package plugins, které mají pomáhat vývojářům sestavit svoji aplikaci. Co si pod tím představit? Je to rozhraní, které vám umožní jednodušeji používat podpůrné nástroje, které jako vývojáři používáte při vývoji. Apple jako příklad uvádí třeba Linting (Swift Lint), Formatting (Swift Format), Code Generation (Sourcery). Já bych dodal třeba generování souborů obecně nebo lokalizace (ACKLocalization). Prostě cokoliv, co vám sandbox, ve kterém plugin poběží, dovolí. Nápadům se v tomto směru meze nekladou a bude záležet hlavně na potřebách projektu. Pluginy můžete přidat do projektu, jak už název samotný napovídá, pomoci Swift Package Manageru, tak jako ostatní závislosti, narozdíl od nich se ale nelinkují do aplikace. Tyto pluginy pak lze spustit z příkazové řádky nebo jako součást build fáze. Na tyto věci jsme v Ackee dosud používali Mint, který dělá víceméně to samé. Pluginy brzy určitě vyzkoušíme, protože čím méně nástrojů při vývoji potřebujete, tím lépe, a za tohle rozhodně patří Xcode týmu velký palec nahoru.
RegexBuilder
Regexy známe asi všichni a určitě je nemusím dále představovat. Napsat ale takový výraz může být někdy oříšek a některé komplexnější výrazy mohou být poměrně nečitelné. To se ale dnes mění a s pomocí RegexBuilderu bude schopný napsat si vlastní regulární výraz skoro každý. RegexBuilder totiž umožňuje tvořit výrazy pomocí DSL. To zajišťuje, že se regulární výrazy stanou čitelnější a srozumitelnější i pro běžné uživatele a bude si je moci vytvořit doslova každý za pár minut. A pokud už ve své aplikaci nějaké regulární výrazy používáte, tak je pomocí tohoto nástroje můžete jednoduše konvertovat. Jedinou vadou na kráse je fakt, že RegexBuilder je zatím podporován jen na nejnovějších systémech. Zatím není jasné, jestli je to funkce systému nebo přímo ve Swiftu, ale věřím spíše v druhou variantu, a tak zde existuje poměrně velká šance, že RegexBuilder bude následovat cestu Codable a Concurency a uvidíme ho i na nižších verzích systému. Asi mi dáte za pravdu, že portovat takovou drobnost nemůže být zase tak složité.
Metal 3: budoucnost hraní na Macu?
Apple a hry je spojení, které nejde příliš dohromady. Existuje sice služba Apple Arcade, ale ta cílí spíše na děti či občasné hráče. Hry pro hardcore hráče na Macu prostě chybí a kupovat si počítač na hry nebo konzoli v době, kdy je problém sehnat jakýkoliv produkt, který obsahuje čip za rozumnou cenu, je stále ještě oříšek. Apple se nikdy na hry příliš nezaměřoval a nepodporoval je, ale posledních několik let se hry na jeho prezentacích ukazují čím dál častěji. I když je nutno říct, že tituly, které se na těchto konferencích ukazují, jsou spíše jednoduché hry a o nějaké pokročilejší grafice si taky můžeme nechat jenom zdát.
Apple si jako ostatní velké technologické firmy začíná uvědomovat, že v herním průmyslu je opravdu velké množství peněz, a rád by na tom taky trochu vydělal. Celé to začalo už několik let zpátky podporou ovladačů. K dnešnímu dni jste schopni ke svému telefonu nebo macu připojit jakýkoliv ovladač bez problémů, dokonce Apple podporuje Adaptive Controller od Microsoftu, který umožňuje hrát hry i lidem s omezenou pohyblivostí. A letos si pro nás Apple připravil i podporu volantů na MacOS a ovladačů od firmy Nintendo, která k hrám neodmyslitelně patří. Tyto drobnosti určitě potěší, ale je potřeba taky dostat na Mac i nějaké ty hry. S tím má Applu pomoci nová verze Metalu. Ta umožňuje lepší práci mezi pamětí a SSD, která určitě přinese nějaká ta důležitá procenta výkonu navíc.
Větší novinkou je ale MetalFX. Určitě jste už někdy slyšeli o NVIDIA DLSS nebo FidelityFX od AMD. MetalFX bude těmto technologiím hodně podobný. Pokud je neznáte, tak jde o technologie, které se pomocí algoritmů nebo umělé inteligence snaží upscalovat obraz do vyššího rozlišení a pomocí rekonstrukce obrazu zamaskovat některé neduhy běžného upscalu. Přesnou implementaci nám Apple na WWDC neprozradil, ale jelikož všechny nové Mkové čipy mají neurální engine, tak věřím, že se vydal podobnou cestou jako NVIDIA a pro tuto technologii použije strojové učení. Tyto nové funkce určitě pomohou vývojářům jednodušeji portovat a optimalizovat své hry pro jablečné počítače.
Tyto novinky demonstrovali vývojáři z Capcomu na své hře ze série Resident Evil. Jde o titul z minulého roku, který zatápí i výkonným počítačům, a tak bylo poměrně překvapivé slyšet, že RE: Village běžel v rozlišení FullHD na Macbooku Air, tedy na stroji, který ani nemá ventilátor. Ale je potřeba k tomu říct i tu druhou část. Apple ani vývojáři nikde neprozradili, z jakého rozlišení na FullHD obraz upscalovali, na jaký počet snímků cílili ani jaké grafické nastavení použili. Nezbývá nic jiného, než čekat na podzim, kdy by měl titul vyjít. Druhým prezentovaným titulem bylo potom No Man’s Sky, který dokonce míří i na iPady, a to už dává trochu tušit, že Apple na Metalu odvedl opravdu velký kus práce a umožnil vývojářům vytáhnout z nových čipů úplné maximum.
WWDC 2022: Konference pro všechny
Tahle konference prostě měla všechno! Úvodní část naprosto jasně a srozumitelně představila novinky široké veřejnosti, která se už teď těší, až si je vyzkouší v public betě, která vyjde za měsíc. Nezapomnělo se ani na HW a Apple představil redesignovaný Macbook Air, který v inkoustově černé barvě nadchnul nejednoho diváka. Ten sice není zrovna levný, ale naprosto perfektně vyplňuje mezeru mezi původní M1čkou a M1 Pro. Škoda jen, že takový stroj Apple nevydal už dříve. Ale v hlavní roli WWDC byli a jsou iOS vývojáři, kterým jako každý rok patřila přednáška „Platforms State of the Union“, ze které se dozvěděli, co je čeká ve zbytku týdne. A rozhodně toho nebylo málo. Doufám, že i příští rok si pro nás kalifornský gigant přichystá podobně nabitou prezentaci, ale po letošní WWDC je laťka nasazena pořádně vysoko.