Articoli

«
Cos’è
_
React
_
Native?
_
Il
_
modo
_
di
_
sviluppare
_
app
_
sta
_
cambiando
»

Sviluppo app · Trasformazione digitale

Perché sviluppare una app con la tecnologia React Native: processi ottimizzati e la stessa esperienza delle app native

Come società specializzata nello sviluppo di applicazioni, una delle domande che i nostri clienti ci rivolgono più spesso è: app nativa o ibrida? In effetti, pur con qualche semplificazione, queste erano le uniche due opzioni disponibili finora, insieme all’evoluzione della tecnologia web e, nello specifico, delle progressive web app.

Ma adesso Facebook sta promuovendo la nuova tecnologia React Native, che permette lo sviluppo di applicazioni native usando Javascript. Questo cosa significa in estrema sintesi? Il vantaggio principale di React Native è la notevole semplificazione dei processi di sviluppo, poiché consente di elaborare applicazioni per Android e iOs usando un unico codice.

Sviluppare le app con React Native significa usare un unico codice sia per iOS che per Android

Chi c’è dietro a questa tecnologia?

Il suo promotore principale è Facebook (un aspetto da tenere a mente, le cui implicazioni potremmo analizzare in un nuovo post), che in linea di principio nel settore è stato considerato una garanzia. Inoltre società come Instagram, Airbnb, Skype, Tesla o Uber (per Uber Eats) stanno già puntando su questo framework per le loro app.

 

 

Per comprendere l’impatto che questa tecnologia può avere sui costi di sviluppo delle applicazioni per le piattaforme Android e iOs, è importante ricordare che fino a questo momento creare una app nativa, con qualità e funzionalità complete, voleva dire programmare una app diversa per ciascuna piattaforma, Objective-C o Swift per iOS e Java per Android, raddoppiando di fatto i costi per le fasi di sviluppo e test.

Ma per questo non bastavano le applicazioni ibride?

La risposta è NO. Le applicazioni ibride (come quelle sviluppate con Cordova, Ionic, ecc.) non fanno altro che eseguire web app all’interno di un browser. Si potrebbe dire che il loro principio è sviluppare un sito web con l’aspetto di una app, per poi eseguirlo in un contenitore chiamato Webview. Questa tecnologia, pur essendo molto utile per le applicazioni più semplici ed effimere, si dimostra insufficiente per quelle che hanno bisogno di sfruttare tutte le potenzialità dei dispositivi mobili, come fotocamera, notifiche asincrone, GPS, NFC, sensori di movimento, funzionamento offline, ecc. L’esperienza con le app ibride non ha mai raggiunto la stabilità e la fluidità di quelle con codice nativo. Per questo motivo, nessuna delle applicazioni più scaricate sui marketplace è stata sviluppata con la tecnologia ibrida.

E come fa React Native a garantire un’esperienza nativa con un solo codice?

Per dirla in modo semplice, questa tecnologia offre una funzione di “traduzione” che esegue il codice React Native in Objective-C per iOs e in Java per Android. L’esperienza dell’utente è quindi identica a quella che si ottiene con una app nativa. In effetti, React Native non è un webview: tutto ciò che l’utente esegue sul proprio dispositivo è assolutamente nativo.

E allora dovremmo scegliere React Native per i nostri progetti?

Come sempre, questo dipende da molti fattori. Tuttavia, è vero che la stragrande maggioranza dei progetti trarrebbero vantaggio da React Native, ed è possibile che la programmazione con codice nativo passi gradualmente in secondo piano. Bisogna anche tener presente che React Native usa il linguaggio di programmazione più diffuso al mondo (Javascript) e il gestore di pacchetti più grande del mondo (NPM). Per chi non è esperto di programmazione, questo è sinonimo di affidabilità e stabilità a lungo termine, poiché non solo la tecnologia utilizzata non sarà interrotta, ma può e potrà contare su una comunità sempre più ampia. Non ci troviamo davanti a un esperimento rischioso che potrebbe tradirci o abbandonarci a metà strada.

In più, gli sviluppatori avranno accesso a tutte le funzionalità offerte dagli SDK nativi , per cui a differenza dello sviluppo ibrido questa tecnologia permette di sfruttare al massimo le potenzialità delle piattaforme (iOs e Android) e, di conseguenza, dei dispositivi. Per rispondere alla domanda precedente: è probabile che React Native diventi il codice usato di default da molti programmatori o società di sviluppo delle app, relegando il nativo solo a progetti con caratteristiche molto particolari.

Dovremmo quindi smettere di programmare in nativo?

Al momento il codice nativo assicura una maggiore indipendenza, che continua ad avere un certo peso nei grandi progetti in cui il contenimento dei costi non è una priorità. Potrebbe anche aver senso sviluppare in nativo, senza passare da un framework “intermedio”, per i progetti che richiedono app radicalmente diverse per le diverse piattaforme. In ogni caso, sarà sempre necessario focalizzare gli obiettivi e tenere la mente aperta per decidere quale infrastruttura e tecnologia si adatti meglio alle esigenze di ogni caso specifico. Quando si parla di tecnologia, essere settari non è mai positivo.

Con React Native si può fare tutto?

È logico che uno dei dubbi principali riguardi cosa sia possibile fare e cosa no con React Native, ma la risposta è decisamente sì. La comunità di sviluppo di questa piattaforma è in costante crescita e i programmatori di Facebook continuano ad aggiungere funzionalità native per ampliarne le potenzialità. Un ulteriore vantaggio di React Native è la possibilità, se si rendesse necessario (per introdurre una funzione o un servizio di terzi), di integrare nei progetti un codice nativo: scegliere React Native non significa quindi rinunciare al nativo.

In effetti, il metodo più comune consiste nell’integrazione di codice nativo e codice Javascript. Le stime indicano che Javascript rappresenta l’85% del codice implementato in questo tipo di progetti, mentre il restante 15% è nativo. Anche la nostra esperienza conferma queste cifre, con un’oscillazione nelle proporzioni tra 95%-5% e 70%-30%.

Quali caratteristiche deve avere un team di sviluppo?

Potrebbe sembrare che l’uso di React Native non richieda una particolare conoscenza del nativo, ma la verità è che per garantire il successo di un’applicazione il team deve conoscere sia la nuova tecnologia che il linguaggio nativo: come abbiamo anticipato, infatti, è molto probabile che una certa percentuale del codice sia strutturata in questo linguaggio. Inoltre, conoscere gli ambienti iOs e Android sarà di grandissimo aiuto nell’implementazione del progetto.

Cuatroochenta e React Native

Qual è l’esperienza di Cuatroochenta con React Native?

Offriamo questa tecnologia ai nostri clienti già da diversi mesi e l’abbiamo usata per sviluppare un discreto numero di progetti. Il primo di questi è Legends, che è già stato lanciato sul mercato. Per quanto riguarda la progettazione, la scelta di React Native non ha comportato alcun cambiamento, perché il nostro obiettivo era sostituire la tecnologia senza limitare l’esperienza dell’utente.

Non abbiamo notato alcuna limitazione

In fase di sviluppo, dove questa tecnologia ha avuto l’impatto maggiore, la possibilità di lavorare con un unico codice si è rivelata molto positiva a livello di qualità: tutti i membri del team lavorano per l’evoluzione e il miglioramento di un solo codice, unendo le forze e generando sinergie, cosa che non avviene con il codice nativo, in cui mantenere le sinergie tra gruppi che lavorano su piattaforme diverse può essere complicato. Per dirla più chiaramente, due gruppi di tre persone che lavorano su due codici diversi sono meno efficienti di sei persone che lavorano sullo stesso codice. Al momento di ricontrollare i codici, risolvere i problemi e proporre soluzioni, il miglioramento è stato notevole in termini di velocità e soprattutto qualità dei processi.

 

 

Nella fase finale, abbiamo rilevato anche un’evidente ottimizzazione dei processi di QA (controllo qualità), in particolare nell’esecuzione del beta test, che alla fine è stato sviluppato usando un solo codice. Condividendo gli eventuali bug sulle varie piattaforme, le soluzioni vanno messe a punto una volta sola. I processi di pubblicazione, invece, sono esattamente identici a quelli usati per le applicazioni native.

Un altro aspetto essenziale è la manutenzione ed evoluzione dei progetti. Anche in questo caso, React Native rappresenta un indiscutibile passo avanti, perché permette di concentrare tutti gli sforzi su un solo codice.  In pratica, questo significa che mentre prima una nuova funzionalità doveva essere programmata due volte, adesso basta programmarla in React Native, destinando le risorse disponibili a perfezionare il lavoro anziché sdoppiarlo.

In linea generale, siamo molto soddisfatti del risultato e soprattutto del processo di sviluppo, che permette di migliorare l’esperienza e l’ottimizzazione dei progetti mantenendo lo stesso budget.

felis accumsan fringilla sem, sit ut diam dolor. consectetur