Futured Blog
App News – květen 2024
Chcete mít přehled o tom, co se děje ve světě vývoje mobilních a webových aplikací, ale nestíháte? V App News přinášíme každý měsíc přehled horkých technologických novinek. Pokrýváme iOS, Android, KMP, full-stack, design i QA témata. A sledujeme, jak do toho všeho rychle vstupuje AI.

Největší novinka přímo z Futured: Převzali jsme mDevCamp 🖤

Je to tak, převzali jsme štafetu a disketu legendární konference pro mobilní vývojáře. Michal Šrajer a jeho tým hledali parťáky, kteří by mDevCampu po 10 letech vdechli novou energii. My jsme o vlastní konferenci dlouho uvažovali – pro naši práci je sdílení v rámci komunity extrémně důležité. Zkrátka jsem se hledali. A našli. 🙌🏼

Příští ročník už bude kompletně v naší režii. Ať se bude budoucnost mobilního vývoje ubírat kamkoliv, s Futured a mDevCampem u toho budeme. Těšíme se!

Tip: Začněte sledovat mDevCamp na Instagramu, ať vám nic neuteče.

A teď pojďme na přehled z celého technologického světa.

iOS & Apple

Apple Vision Pro stále hledá své místo. Čím dál častěji narážíme na využití ve firemním prostředí: rozšířený workspace, spolupráce na 3D designech, zaškolení nových zaměstnanců – to je jen pár příkladů možných využití.

Screenshot-202024-05-02-20at-2016.49.44.png

Android & Google

Android 15 Beta je dostupný pro Pixely, a my už tak můžeme testovat změny chování. Ty se projeví zejména, pokud u své aplikace nastavíte target SDK na 35. Může vás překvapit edge-to-edge zobrazení, které už není potřeba zapínat, ale je to výchozí režim pro všechny aplikace. Pokud používáte Compose Material 3 nebo jiné komponenty pracující se systémovými insety, je možné, že vše pojede dál jako po másle – bez potřeby úprav.

Untitled-4.png

Gemini in Android Studio Jellyfish. Studio Bot je mrtev, ať žije Gemini. To hlavní pro nás ale je rozšíření do dalších zemí. Tentokrát se na nás „nezapomnělo”: AI asistent od Googlu je dostupný i v Česku.

Gemini-20CZ-20May-206-202024.png

Gemini pochopitelně rozumí přirozenému jazyku, takže je možné vést s ním konverzaci. Velmi slušně dokáže nahradit dokumentaci pro různé běžnější knihovny a části Android Frameworku. Další funkcí je chytré doplňování kódu při psaní podobné GitHub Copilotu. Zajímavé je zaměření na soukromí, které Google popisuje v několika krocích. Gemini je aktivní pouze pokud se explicitně povolí, ve výchozím stavu je v konverzaci dostupná pro AI jen její historie a zpřístupnění částí kódu je v rukou uživatele. Kromě toho byl také představen nový soubor .aiexclude, který podobně jako .gitignore označuje části projektu, které má AI ignorovat.

KMP

Kotlin Meet. V dubnu proběhl první letošní Kotlin Meetup, a to rovnou na třech místech zároveň: v Praze, Brně (v našich kancelářích) a Žilině. Mohli jste vidět přednášku o Compose Driven Architecture, Compose Stability, u nás jsme ukazovali použití KMP project template. Zpětná vazba byla skvělá, takže se určitě pustíme do další edice. Těšíte se? My ano!

Room. Vyšla nová verze knihovny Room podporující KMP umožňující jednoduchou abstrakci SQLite databáze pomocí anotací. Autoři upozorňují, že některá API ještě nejsou finální – hlavně z důvodu zachování zpětné kompatibility. Byli bychom tedy opatrní s nasazováním do produkce (ale to se dalo čekat, jedná se o první alpha verzi). Na co si dát pozor, to se dozvíte v dokumentaci.

KMP-hierarchy. Máte ve své KMP aplikaci spoustu modulů a zajímalo by vás, jak jsou spolu propojeny? Knihovna KMP-hierarchy je na to přesně dělaná. Nový způsob definování hierarchie pomocí funkce applyDefaultHierarchyTemplate() nám toho hodně ulehčí, na druhou stranu vše také schová. Právě proto tu je knihovna  KMP-hierarchy. Ta nám zpřístupní gradle task printHierarchy, který vygeneruje přehledný graf, na kterém uvidíte, jak jsou všechny moduly propojené.

resources-library.svg

Web

ESLint prošel zásadní aktualizací. Verze v9.0.0 přináší vylepšení a opravy chyb, ale také několik významných změn. Patří mezi ně zrušení podpory verzí Node.js nižších jak v18.18.0 a v19.x. Aktuální verze vyžaduje alespoň Node.js v20.x. Bylo také zavedeno nové pravidlo no-useless-assignment, které má zachytit situace, kdy je proměnné přiřazena hodnota, ale nikdy není použita. Mezi další významné změny patří:

  • Vylepšené testování. RuleTester má přísnější validace, včetně kontroly jedinečnosti zpráv, správné syntaxe v návrzích a zajištění rozdílů mezi výstupem testovacího případu a kódem.
  • Úprava konfigurace eslint:recommended na novější stav, který zahrnuje nová pravidla, jež jsou v současnosti považována za důležitá.
  • Odstranění několika formátovačů včetně checkstylecompactjslint-xml a dalších. Uživatelé, kteří tyto formátovače dříve používali, si budou muset nainstalovat samostatné balíčky, aby je mohli nadále využívat.
  • Přepínač -quiet nyní obchází implementaci pravidel nastavených na "warn".

Tyto změny odrážejí významné revize a vylepšení funkčnosti ESLint, které se týkají různých aspektů včetně konfigurace, pravidel, testování a výkonu. Pro podrobnější informace doporučujeme přečíst oficiální release notes, ve kterých se dočtete také o ještě novějších menších verzích.

Node.js 22. Vyšel Node.js 22 s několika klíčovými aktualizacemi, včetně vylepšení grafů ESM, klienta WebSocket a aktualizací V8 enginu JavaScriptu. Nahrazuje Node.js 21 a po dobu následujících šesti měsíců bude tzv. aktuálním vydáním, aktivním se stane v říjnu 2024. Vývojáři stojící za Node.js zdůrazňují rostoucí poptávku po produktu, důležitost testování a přípravu na nasazení s verzí 22. Mezi klíčové aktualizace patří upgrade enginu V8 JavaScript na verzi 12.4, podpora vyžadování ESM Current release, přidání klienta WebSocket, zlepšení stability pro node --watch a zvýšení výchozího highWaterMark pro streamy. Úplný seznam změn je k dispozici zde.

Detailní seznámení s JSR. JSR je nový registr balíčků pro JavaScript a TypeScript, který by měl autorům a uživatelům balíčků nabídnout výrazně lepší prostředí než npm. Byl navržen tak, aby se hladce integroval do stávajícího ekosystému, umožnil postupné zavádění balíčků JSR do projektů Node a nabídl import balíčků npm z balíčků JSR a naopak. Autoři v článku sdílejí technické podrobnosti a přehled technických specifikací JSR, včetně jeho role globální CDN, webové stránky pro prohlížení balíčků, rozhraní API pro interakci s nástroji CLI a systému pro analýzu kódu během publikování. Jednoduše se snaží ukázat, že JSR opravdu není jen další obyčejný správce balíčků.

Zpřístupnění betaverze TypeScript-u 5.5. TypeScript 5.5 přinese několik zajímavých funkcí a optimalizací zaměřených na zvýšení produktivity vývojářů a efektivity nástrojů. Mezi klíčové novinky patří:

  • Kontrola syntaxe regulárních výrazů. TypeScript nyní provádí základní kontrolu syntaxe regulárních výrazů, což pomáhá zachytit běžné chyby a potenciální omyly již v rané fázi vývoje.
  • Odvozené typové predikáty. TypeScript má nyní vylepšenou analýzu toku řízení pro pole, která umožňuje přesnější odvozování typů při filtrování nedefinovaných hodnot. Díky tomu je kód robustnější a eliminuje potenciální chyby.
  • Importování typů v JSDoc. TypeScript zavádí nový komentářový tag @import v komentářích JSDoc umožňující vývojářům JavaScriptu importovat typy pro účely kontroly typů bez ovlivnění chování za běhu.
  • Spolupráce s package.json závislostmi. TypeScript nyní využívá závislosti uvedené v souboru package.json pro lepší generování deklaračních souborů, čímž se snižuje výskyt některých chyb souvisejících s odvozováním typů.
  • Optimalizace výkonu a velikosti. TypeScript 5.5 obsahuje různé optimalizace zaměřené na zvýšení výkonu a snížení velikosti balíčků, což vede k rychlejšímu sestavování a snížení paměťové zátěže.

Přestože je TypeScript 5.5 funkčně stabilní, vývojáři se stále zaměřují na opravy chyb a vylepšení. Brzy se však objeví stabilní verze.

AI

V minulých App News jsme informovali o nových modelech z Claude rodiny, kde nejvýkonnější z nich, Opus, překonal v několika benchmark testech dokonce i GPT-4. Avšak OpenAI nezahálelo a rychle reagovalo vydáním aktualizace pro GPT-4 Turbo, která znovu předčila model Opus a potvrdila, že OpenAI je stále o krok napřed. Sledování tohoto soupeření je tak trochu jako sledovat sportovní ligu. Pokud vás zajímá, jak se tento souboj vyvíjel v čase, můžete hodnocení vidět velmi hezky vizualizovaná.

Nové LLM modely. Minulý měsíc byl bohatý na představení řady nových modelů. Společnost Cohere představila modely Command R a R+, které excelují ve tzv. RAG využití, kdy LLM modely získávají informace z externích dokumentů. K tomu představili také ReRank3, model zaměřený na vyhodnocování relevance dokumentů, což může být velmi užitečná věc při stavění Q&A systémů.

V oblasti open source projektů upoutaly pozornost dlouho očekávané Llama3 modely, které jsou zatím dostupné v 8B a 70B verzích. Jsou volně dostupné jako open-weight modely a jsou tedy velmi atraktivní pro vývojáře, protože je mohou upravovat pro vlastní použití. Na stránce huggingface.com je dostupných více než 5000 upravených Llama-3 modelů, což svědčí o vysokém zájmu komunity. Model 70B dosahuje také velmi dobrých výsledků a v lmsys benchmarku se dá považovat za state-of-art open-weight model. Rovněž nezůstává pozadu ani Microsoft s modelem Phi-3, který i přes své „skromnější“ 3,8B parametrů umožňuje zpracování až 128 tisíc tokenů najednou.

image-20(80).png

LLama-3-70b-Instruct, jediný open-weight model v top 10 podle lmsys benchmarku.

AI vývojáři. Nedávno jsme vám představili prvního AI softwarového inženýra jménem Devin od Congition Labs, který je zatím dostupný pouze přes waiting list. Devin už ale není jediný svého druhu. Na scénu přišli také další „AI inženýři“. Za zmínku stojí například projekty od výzkumníků z Princeton University a University of Singapore - SWE-Agent a AutoCodeRover.

Tyto nástroje postavené na LLM agentech dosahují v benchmark testech SWE-bench skóre 12,29 % (SWE-Agent), 13,86 % (Devin) a 15,79 % (AutoCodeRover), což je podstatně více než tradiční LLM modely bez agentního přístupu, které se obvykle pohybují na úrovni 3-4 %.

Problém integrace AI do vývojového procesu se snaží vyřešit trochu odlišným způsobem i GitHub. Tuto výzvu se snaží uchopit menším krokem prostřednictvím GitHub Copilot Workspace, který zatím neusiluje o vývoj plně autonomního AI agenta, který by samostatně a rychle řešil programátorské úkoly. Namísto toho se soustředí na vytvoření AI asistenta, který pomáhá v celém procesu od návrhu řešení až po implementaci. Tento asistent spolupracuje s vývojáři při úpravě a validaci navrhovaných řešení, přičemž je krok za krokem provází celým procesem implementace. Tento přístup představuje méně radikální, ale realističtější krok v evoluci softwarového vývoje, který by mohl v současném prostředí a v omezeních, kterým LLM čelí, představovat další krok od Copilota, přes chat až po více integrované řešení, které zase o trochu více umožňuje programátorovi řešit spíše problém než detaily implementace.

Design

Spotify je známé svým kreativním přístupem a nejen jeho roční souhrny Wrapped pravidelně zaplavují sociální média. Tentokrát vytvořili interaktivní test Your K-Pop Persona. I když zrovna člověk není fanouškem Blackpink nebo BTS, stojí za to si z pohledu UI test projít.

Untitled.png

Config se blíží. Každoroční Figma konference se jako obvykle uskuteční 26.-27. června v San Franciscu v USA (a samozřejmě online). Těšíme se, jaké novinky a zajímavé přednášky přinese tentokrát. Zkrátit si čekání můžete třeba výběrem oficiálního Figma merche.

Untitled-2.png

Notion je nepostradatelný organizační nástroj pro správu projektů, seznamu úkolů, nejrůznějších zápisů a tabulek (ve kterém každý měsíc připravujeme také právě podklady pro naše App News). Má své UX mouchy, které se postupně snaží vychytávat a posouvat se kupředu. Nejnovějšími updaty, se kterými za poslední měsíc Notion přišel, je rychlejší založení nové page, zjednodušení sidebaru a taky jeho možnost seřazení položek podle osobní preference. Kromě toho slibuje jednodušší využití AI v mobilní aplikaci nebo třeba možnost detailnějšího nastavení notifikací na projektech.

Untitled-3.png

QA

Na brněnskou konferenci Test Crunch 2024 jsme vyslali silnou sestavu. Tohle jsou přednášky, které zaujaly Frantu Kubíčka a Sviato Samoilyka, naše QAs.

Jak pohnout krávou: využití agilních technik pro dosažení toho, po čem v práci toužíte 

Při poslechu přednášky Hany Jadavan, agile influencerky, která sdílela praktické tipy a jednoduché postupy technik známých z agilního prostředí, ale i obecné psychologie, jsem si (Franta) uvědomil, jak důležité je umět naslouchat a komunikovat i v situacích, kdy nesouhlasím s většinou. Jak nastavit pracovní prostředí tak, aby v něm pro ně byla radost pracovat? Jak naslouchat „nepříteli“ a dojít ke společnému kompromisu potažmo souhlasu?

Zjistit explicitně nebo implicitně:

  1. Co kdo potřebuje?
  2. Co koho štve?
  3. Kdo se čeho bojí?

Následně navrhnout experiment pomocí vět: Mám hypotézu... / Mohlo by pomoci... / Potkejme se za týden. / Je někdo proti?

Důležité je se také odosobnit od problému. Je jednodušší hodnotit tu chybu softwaru než tu práci vývojáře. Rada, která je cenná nejen v pracovním prostředí, ale i v životě obecně – pomáhá udržet si objektivitu a zároveň minimalizovat možnost zranění citů kolegů.

Koncept cross-funkčních týmů v agile procesu

Přednáška Petra Šokina, Agile Delivery Leadera z DIRECT pojišťovny, byla o novém přístupu k zajištění kvality v týmu, kde zodpovědnost za kvalitu nese celý tým, nejen QA. To je obzvláště důležité v kontextu, kdy je kapacita QA omezená – v případě DIRECT pojišťovny jsou pouze čtyři QA na 60 zaměstnanců.

Klíčové body vedoucí k efektivnějšímu vývoji, vyšší kvalitě a větší motivaci členů týmu:

  • Sdílená zodpovědnost. Všichni členové týmu, včetně vývojářů, se podílejí na zajištění kvality. To zahrnuje analýzu požadavků, testování a refaktoring kódu.
  • Rozdělení času. Optimální rozdělení času v rámci sprintu je 50 % na vývoj nových funkcí, 30 % na refaktoring a technický dluh a 20 % na vzdělávání a přípravu na další sprint.
  • Cross-funkční týmy. Týmy jsou složeny z různých rolí (vývojáři, QA, analytici, PO, PM, designéři a další) a jsou schopny samostatně dodávat výsledky vč. testování produktu.
  • Důraz na základní funkčnost. Vývojáři jsou zodpovědní za to, aby jejich kód fungoval, aby byly základní funkce hotové před předáním k testování.
  • Role QA. QA tým se zaměřuje na strategii testování, automatické testy a následné napojení automatických testů do CI/CD, regresní testy a podporu vývojových týmů s jejich expertízou.
  • Transparentnost a spolupráce. Základem úspěchu je transparentnost, spolupráce a sdílení znalostí mezi všemi členy týmu, i stranou zodpovědnou za byznys.

Za mě (Sviato) je to zajímavý efektivní koncept, kdy se na testování podílí celý tým, nikoliv pouze QA. Je tak větší pravděpodobnost odhalení nežádoucích chyb, vzniká menší zahlcení QA a kolegové, kteří na konci sprintu mají „hotovo”, mohou také v konečném důsledku přispět, což může šetřit firmě peníze a zajišťovat vyšší kvalitu dodaného produktu jdoucí ruku v ruce se spokojeností klienta.

⁠Novinky, které nás zaujaly v dubnu, pro vás připravili Jakub Marek (iOS), David Kočnar (Android), Rudolf Hladík (KMP), Martin Sumera (AI), Sabína Gulčíková (Web), Bára Celnarová (Design) a František Kubíček a Sviatoslav Samoilyk (QA). ⁠ ⁠

––– ⁠ 

Baví vás, jak o technologiích přemýšlíme? ⁠Úspěšnou aplikaci můžeme vytvořit i pro vás. Napište Lukášovi, který Futured založil: [email protected] & +420 605 312 459

Chcete se k nám přidat? Aktuálně hledáme hned několik kolegů. Ozvěte se Míše a pobavte se o možnostech spolupráce: [email protected] & +420 739 106 507.