Ideálne riešenie neprichádza zo dňa na deň. A keď sa nejaké objaví, možno časom zas až tak ideálne nebude… Pri vývoji aplikácii toto platí dvojnásobne. A pri vývoji tých mobilných asi ešte viac.

V decembri 2015 boli prvé pokusy o vytvorenie mobilnej verzie. Ionic vyzeral ako správna voľba. Ale iba do momentu, kedy som testoval prvé výstupy na mobile. Snaha vytvoriť mobilnú aplikáciu s natívnym feelingom zlyhala a od tvorby mobilnej verzie sa upustilo.

Čas plynul a v októbri 2016 sa spustila verejná verzia JugLogicu. Cieľom do konca roka bolo pridať pre používateľov aj mobilnú verziu. A tak som oslovil niekoľko agentúr. Cenové ponuky sa hýbali od 80 do 200 000 Kč za mobilnú aplikáciu a to IBA pre iOs a BEZ grafiky.

To bola pekná pálka a hlavný impulz pre vývoj mobilnej verzie interne. A tak som hľadal možnosti.

Základ mobilného JugLogicu som „na kolene“ zbúchal za víkend v momente, kedy som narazil na excelentný kurz o React Native na Udemy. Funkčné prihlasovanie, pridávanie, editácia a odstraňovanie výdavkov, zoznam výdavkov a ja nadšený, že sa ušetril celkom pekný rozpočet. Ale to som ešte netušil, na čo všetko pri vývoji narazím…

Aktualizácie React Native boli totálne peklíčko. V čase bez Expo pre mňa bolo jednoduchšie skopírovať zdrojový kód a vložiť ho do adresára s novým React Native. K tomu však bolo treba opäť linkovať všetky závislosti v Xcode, nastavovať splash screen, ikony aplikácie a celkovo všetky tie otravné nastavenia, ktoré mi ako vývojárovi webových aplikácii pripadajú ako z iného sveta.

Veľký oriešok bol aj výber ideálnej databázy. LokiJS, Firebase, Realm, to všetko malo určitú dobu svoje čestné miesto. Pri prihlásení do aplikácie sa používateľovi na pozadí stiahol json so všetkými jeho údajmi a následne sa naimportoval do mobilnej verzie.

Pri vzniku alebo úprave výdavku, príjmu alebo kategórie sa daná položka nahrala do firebase, odkiaľ sa buď cronom zosynchronizovala s webovou verziou, alebo pri spustení / pull to refresh / znovunačítaní údajov zosynchronizovala s mobilnou verziou. Takže vznikli „mosty“, ktoré sa starali o značenie do firebase, odkiaľ sa dáta synchronizovali, ako bolo potreba.

Veľký hnus velebnosti, ktorý zabral asi 100 tisíc rokov vývoja, ale fungovalo to a takto JugLogic fungoval mesiace.

Našťastie prišlo aspoň Expo a vývoj a distribúcia aplikácie do produkcie sa brutálne zjednodušila. Zrazu som sa pri vývoji cítil omnoho viac, ako ryba vo vode, BEZ potreby linkovať libky v Xcode, resp. som do Xcode a Android studia už takmer vôbec liesť nemusel. Pecka.

Potom prišlo GraphQL a zmenilo sa všetko… Vďaka tomu, že je GraphQL použité aj vo webovej verzii, môžeme dnes jednoducho používať mutácie a queries aj vo webovej, aj v mobilnej verzii.

Vďaka tomu sa vývoj mobilnej verzie brutálne zjednodušil, pretože kód z webovej aplikácie môžeme použiť v mobilnej, dáta sú ťahané z rovnakého zdroja a vďaka tomu je istota, že sú údaje v obidvoch aplikáciach totožné.

Nielen, že sa s GraphQL perfektne pracuje a môžeme ho použiť aj s Laravelom a Vue.js vo webovej aplikácii, ale je vďaka nemu aj nižšie množstvo requestov na server vďaka možnosti zlúčiť viacero queries do jedného requestu.

Tým pádom sa kód mobilnej verzie brutálne zjednodušil. Zrazu už nebolo potreba vyvíjať synchronizáciu a data transformery, ale stačilo prekopírovať GraphQL queries a mutácie a kopec práce bolo hotovo.

To je tak 90% zjednodušenie oproti predošlým riešeniam. Daňou za to je síce to, že už aplikácia nepodporuje offline režim, ale to mi dnes už tak nejak nevadí. Síce toto bolo 4 roky späť jednou z hlavných priorít, dnes už to tak kriticky nevnímam. Ale určite časom vyriešime aj to.

Dnes už máme v tíme programátora, ktorý sa fulltimovo venuje primárne mobilnej verzii. Napriek tomu, že sa práve zaškolil a zoznámil s celou aplikáciou a vyvinul pár noviniek, prechádzame na Nativescript. Hlavným dôvodom je Vue.

Kombinácia React Native, Apollo a Redux je síce ok, ale tak nejak vnímam, že to nieje to pravé orechové. A keď sa nám podarilo využiť GraphQL v mobilnej a aj webovej aplikácii, prečo to neurobiť tak, aby bolo na obidvoch miestach excelentné Vue? Na pomoc prichádza Nativescript Vue!

Počiatočný skepticizmus, či je to správna voľba a či sa radšej nevrhnúť do Flutter vystriedalo nadšenie. Vue je Vue a pracuje sa s ním sakramentsky dobre. A ten pocit, že môžeme využiť Vue v kombinácii s GraphQL a vytvoriť tak „natívnu“ aplikáciu, pričom používame syntax takmer totožnú, ako pri frontende, je perfektný.

Celé mi to pripomína Ionic na steroidoch, bez webview a s natívnymi UI elementami. Naviac má Nativescript 100% prístup k natívnym komponentám priamo cez javascript. Keď to doplním o Nativescript SideKick a možnosť buildovať aplikáciu cez cloud, ide z môjho pohľadu o dokonalý nástroj pre frontend developerov, ktorí preferujú (nielen) Vue.

Úprimne sa teším, keď sa zbavíme Reduxu, ktorý je mi už od začiatku akosi proti srsti a vývoj bude prebiehať „pod záštitou“ Vue.

Verím, že táto kombinácia nám umožní pri vývoji mobilného JugLogicu napredovať možno aj 10x rýchlejšie v porovnaní s React Native v dobách, keď sme ho používali bez Expa a GraphQL.

ZANECHAŤ ODPOVEĎ

Please enter your comment!
Please enter your name here