Rlinguo
este o aplicație mobilă inovatoare care folosește R în backend pentru a-și gestiona logica de afaceri.
Disponibil pentru descărcare acum:
Da, ai citit bine: viitorul este acum și putem rula R pe telefonul tău mobil.
A fost odată ca niciodată…
Am construit aplicații web cu R de ceva timp— probabil mai mult decât aș vrea să recunosc. La ThinkR, ne-am dezvoltat {shiny}
aplicații pentru o perioadă, de la widget-uri mici pentru cercetători până la tablouri de bord la scară largă utilizate de mii de bancheri.
Dar dezvoltarea web nu s-a limitat la {shiny}
pentru noi. Am creat, de asemenea, API-uri REST, tablouri de bord flex/quarto și documente dinamice generate cu R. În ultimii câțiva ani, am explorat diferite modalități de a livra produse de date clienților noștri, în principal folosind {shiny}
aplicații dar și prin alte formate.
În mijlocul acestei diversități de formate, o platformă ne-a ocolit constant: mobilul. Da, {shiny}
aplicațiile pot fi optimizate pentru utilizarea mobilă, iar tablourile de bord JavaScript se pot afișa frumos pe un telefon. Cu toate acestea, nu sunt aplicații mobile native. Ele nu pot fi instalate dintr-un magazin de aplicații, nu au acces la API-urile telefonului dvs. și să le faceți să funcționeze offline este o provocare semnificativă.
{shiny}
pe mobilul meu
„{shiny}
pe mobilul meu” este o solicitare recurentă din partea clienților noștri de ceva vreme. Și este ușor de înțeles de ce: yS-ar putea să aveți un model fantastic sau un proces eficient de dispută a datelor și aveți nevoie de oameni să îl acceseze de pe smartphone-urile lor— chiar și în mijlocul pădurii fără conexiune celulară (da, aceasta a fost o cerere reală a unuia dintre clienții noștri). Cu toate acestea, răspunsul nostru a fost întotdeauna același: „Îmi pare rău, nu este posibil.” {shiny}
se bazează pe un server și, deoarece R nu poate rula direct pe un telefon, este necesar un server la distanță. Asta înseamnă că este necesară o conexiune la internet. Și nu, nu îl puteți publica într-un magazin de aplicații.
În ultimele luni, însă, a apărut ceva nou — o dezvoltare la care pasionații R visează de ani de zile: R, compilat pentru WebAssembly. Dacă nu sunteți familiarizat cu WebAssembly, gândiți-vă la el ca la o modalitate de a rula R în JavaScript. Dacă îl cunoașteți deja, veți ști că este ceva mai nuanțat decât atât, dar deocamdată voi scuti detaliile tehnice.
Acest nou instrument se numește webR
.
Momentul „Ce ar fi dacă”.
Am tot experimentat webR
de câteva luni, în primul rând din perspectiva Node.js. În acest timp, am dezvoltat două instrumente, webrcli
şi spidyr
conceput special pentru proiectele care integrează R și Node.js. Deși aceste instrumente au potențialul de a revoluționa dezvoltarea aplicațiilor, ele sunt încă legate de o abordare web de la distanță: R rulează pe un server în altă parte, în interiorul unui proces Node.js. Aceasta înseamnă că încă nu există nicio funcționalitate offline, nicio implementare a magazinului de aplicații și nici funcții mobile native.
În această vară, am primit încă o cerere pentru „{shiny}
ca o aplicație mobilă nativă.” În timp ce eram pe cale să oferim răspunsul nostru obișnuit, am avut un „Dacă?” moment. Dacă am putea folosi webR
într-un cadru JavaScript care creează aplicații mobile? Cu această idee, am dezvoltat o dovadă de concept (PoC): o aplicație mobilă capabilă să ruleze o linie de cod R. O aplicație complet funcțională de această natură nu a mai fost făcută până acum, dar am crezut că este realizabilă.
Din păcate, clientul a ales să nu mai continue proiectul. Construirea unei aplicații mobile necesită abilități dincolo de cele tipice {shiny}
dezvoltatori și aveau nevoie de software pe care să-l poată menține independent. Totuşi, după ce am creat un PoC, am decis să facem totul și să dezvoltăm o aplicație completă— ceva ușor de utilizat, ușor jucăuș și care poate fi distribuit prin magazinele de aplicații, pentru a demonstra că acest lucru ar putea fi într-adevăr făcut.
În următoarele câteva săptămâni, echipa ThinkR a adus această viziune la viață. Margot a modelat proiectul și a scris lucrarea conceptuală (mai multe despre asta într-o postare viitoare pe blog), Arthur a creat macheta aplicației folosind Excalidraw și Figma, prezentând abilitățile sale excepționale de UI, iar eu (Colin) m-am concentrat pe dezvoltarea backend (în mare parte pentru că abilitățile mele de proiectare sunt… lipsite, iar munca frontală nu este punctul meu forte).
Rezultatul acestei călătorii incitante este Rlinguoo aplicație mobilă nativă care rulează R. Da, ați citit corect – R poate rula acum pe telefonul dvs., iar această aplicație este o dovadă a conceptului transformată în realitate.
Forma lui R care va veni
Rlinguo este un joc jucăuș și ciudat care provoacă utilizatorii să identifice pachetul căruia îi aparține o anumită funcție R. Desigur, aceasta poate să nu fie cea mai practică abilitate – știind asta mean()
este în {base}
în timp ce median()
rezidă în {stats}
nu te va face neapărat un dezvoltator mai bun (deși, trebuie să recunosc, încă mă enervează că sunt în pachete separate).
Scopul principal al acestei aplicații a fost să servească drept dovadă că aplicațiile mobile native care folosesc puterea lui R sunt nu numai posibile, ci și pot deschide calea pentru aplicații mai largi.
Aplicația demonstrează mai multe capacități inovatoare:
- R în vârful degetelor, direct din buzunar:
Aplicația prezintă funcționalitatea lui R în mai multe moduri, cum ar fi efectuarea asample()
dintr-o listă de pachete instalate și alta din funcțiile exportate. Pe pagina Despre, utilizatorii pot chiar executa orunif()
pentru a confirma că Rlinguo conduce cu adevărat R în culise. - Funcționalitate offline:
Conceput să funcționeze fără o conexiune la internet, Rlinguo face posibilă implementarea modelelor R pe smartphone-uri, chiar și pentru utilizatorii din locații îndepărtate, deconectate, cum ar fi adâncurile pădurii. - Activarea unui flux de lucru real Data-Science:
Rlinguo reflectă o conductă tipică de știință a datelor. Datele sunt stocate local într-o bază de date SQL, interogate, procesate în R (prin numărare și pivotare) și apoi returnate la JavaScript pentru vizualizare. Rezultatul? O afișare ușor de utilizat a performanței jocului dvs. - Integrarea pachetelor R:
Aplicația folosește pachetele R în mod creativ. Când ghiciți corect o funcție, ești recompensat cu apraise::praise()
mesaj; dacă greșești, o funcție personalizată oferă feedback (deși încă nu am găsit un pachet dedicat oferirii de cuvinte de încurajare). - Oferirea unei experiențe excelente pentru utilizator:
Rlinguo acordă prioritate utilizării, abordând un deficit comun în instrumentele care încorporează R. Scopul a fost să creeze o aplicație care să se simtă șlefuită și plăcută de utilizat. - Implementarea aplicațiilor bazate pe R în magazine:
Rlinguo demonstrează că este pe deplin fezabil să creați o aplicație mobilă alimentată de R și să o faceți disponibilă pentru descărcare în magazinele de aplicații majore.
Rlinguo este disponibil acum pe Apple Store și Google Play. Vedem acesta ca fiind primul pas într-un nou val de inovații și, pentru a împrumuta o expresie, „iubito, nu te-ai simțit niciodată atât de bine”.
Ideea de a rula R pe un telefon a fost o cerere populară din partea clienților noștri – există nenumărate posibilități.
Este ceva de care ai nevoie? Aveți un caz de utilizare fantastic pentru R pe telefon? Perfect, hai să discutăm!