Multiplatformní aplikace s Tauri: Jak se vyvíjí v nových technologiích?

Při výběru technologie pro nové projekty neustále balancujeme mezi efektivitou a vhodností daného nástroje. Pro vývoj multiplatformní desktopové aplikace na zakázku jsme se rozhodli pro malý experiment – inovativní framework Tauri. Jak se nám s ním pracovalo a jaký byl výsledek?

U každého projektu při výběru technologie zvažujeme, co bude pro danou problematiku nejvhodnějším řešením. Zaměřujeme se na několik aspektů:

  • Efektivitu vývoje,
  • výkon,
  • bezpečnost,
  • náklady a udržitelnost.

S novými nástroji rádi experimentujeme a právě taková příležitost se nám naskytla, když jsme od jednoho z našich dlouhodobých partnerů dostali zakázku na vývoj desktopové aplikace. Ta měla za úkol zefektivnit rutinní práci zaměstnanců. Jednalo se o interní nástroj používaný několika málo uživateli – a to byl právě ten prostor pro vyzkoušení něčeho nového.

Co je Tauri?

Tauri je framework pro tvorbu štíhlých, bezpečných a rychlých aplikací nejen pro počítače ale i pro mobilní zařízení, který kombinuje webové technologie na frontendu a Rust na backendu.

Uživatelské rozhraní se vytváří pomocí webových technologií HTML, CSS a Javascript/TypeScript. Díky tomu lze při stavění aplikace použít každý webový frontendový framework.

Backend v Rustu a podpora dalších jazyků

Na backendu se v současné verzi 1 používá Rust, ale s verzí 2.0 přichází podpora pro jazyky Swift a Kotlin. Backend v Tauri spravuje webview a komunikuje s operačním systémem. Případně také obsahuje business logiku, kterou je také možné napsat přímo na frontendu v Javascriptu nebo TypeScriptu.

Interakce s operačním systémem

Tauri poskytuje užitečná backendová rozhraní pro interakci s operačním systémem, například pro práci se soubory. Tato rozhraní se pak dají jednoduše volat přímo z frontendu a vy tedy nemusíte opouštět svět Javascriptu a rovnou interagovat s operačním systémem pomocí poskytnutých rozhraní.

Vlastní příkazy

Když narazíte na „usecase”, pro který vám poskytnutá rozhraní nestačí, není problém si na backendu napsat vlastní command v jednom z podporovaných jazyků, který budete volat z frontendu.

Úskalí Tauri

Pokud se rozhodnete psát větší část logiky na frontendu, musíte si být vědomi toho, že váš kód poběží v prohlížeči. Prostředím je tedy browser a né Node.js.

Problémy s knihovnami pro Node.js

Několikrát jsme narazili na to, že knihovny (např. pro šifrování souborů), které jsme chtěli použít, byly navrženy pro běh v Node.js a v prohlížeči nefungovaly, protože jim chyběly funkce poskytované v Nodu. Jednalo se například o funkce pro práci s filesystémem.

Tento problém má čtyři možná řešení:

  1. Fork knihovny pro browser: V ideálním scénáři se vám podaří najít fork vaší knihovny, který ji upravuje tak, aby byla kompatibilní pro běh v browseru. To typicky obnáší přidat za název knihovny „-browserify” a doufat, že takový fork existuje.
  2. Vlastní úprava knihovny: Druhou možností je sami si knihovnu „forknout” a vrhnout se do úprav jejich vnitřností, aby fungovala v prohlížeči.
  3. Hledání alternativních knihoven: Třetí možnost je hledat jiné knihovny, které dělají to, co potřebujete, a zároveň jsou navrženy pro prohlížeč. Pokud alternativu nenajdete ve frontendovém ekosystému, stojí za to, podívat se do ekosystému backend jazyku (pro nás to byl Rust) a zvážit, jestli by se daný problém nedal řešit tam.
  4. Vytvoření vlastní knihovny: Čtvrtá a poslední možnost je udělat si to sám. Přijatelnost této možnosti samozřejmě závisí na komplexnosti problému. Nás nedostatek vhodných alternativ jak v js/ts ekosystému, tak i v ​​Rust ekosystému dohnal k tomu, forknout si a upravit existující řešení.

Velikost Tauri aplikace

Tauri dbá na to, aby velikost výsledné aplikace byla co nejmenší. Narozdíl od jiných frameworků, jako např. Electron, v sobě Tauri aplikace neobsahují prohlížečový engine, ale používají existující prohlížeč na systému uživatele.

Obsahují tedy pouze kód a assety specifické pro svůj běh. Nemusí navíc obsahovat prohlížeč. Velikost minimální Tauri aplikace tak může být i méně než 600 KB.

Udržitelnost aplikace

Jeden z důvodů zaměření se na velikost aplikace je její dopad na prostředí. Čím menší se nám aplikaci podaří udělat, tím méně bajtů zabírá na disku. Čím méně bajtů na disku, tím menší soubor si uživatel stahuje.

Čím méně si uživatel stahuje, tím rychlejší je proces. Hlavně se také méně bajtů posílá po síti, což snižuje spotřebu elektřiny. A nakonec, čím menší spotřeba elektřiny, tím méně CO2.

Ekonomické výhody menší aplikace

I pro ty, které životní prostředí tolik nezajímá, by měla být velikost aplikace důležitá. Jak jsme si ukázali, čím menší aplikace, tím méně spotřebované elektřiny – a ta není zadarmo.

Pro jednoho uživatele bude rozdíl v ceně mezi stahováním velké a malé aplikace zanedbatelný, ale pro společnost, jejíž aplikaci stahují miliony lidí měsíčně, může menší velikost významně snížit náklady na provoz.

Při tak velkém číslu stahování ušetříte pár milionů bajtů přenesených přes síť.

Budoucnost našeho experimentování

Tauri je ideální volbou pro vývojářský tým, který potřebuje pro klienta vytvořit nativní aplikaci a který má zkušenosti se stavěním uživatelských rozhraní pomocí webových technologií.

Nám toto experimentování s Tauri umožnilo vytvořit efektivní, výkonnou aplikaci a zároveň přijít s řešením, jak snížit energetickou zátěž a provozní náklady. Technologické trendy neustále sledujeme a těšíme se na další příležitosti pro využití inovativních řešení.

Kategorie

Medvěd lední

Chcete se dotknout víc než špičky ledovce?