Responsive VS Applicazioni Ibride o Native

Quale tecnologia scegliere per sviluppare il proprio business online da smartphone ??

Responsive VS Applicazioni Ibride o Native

Perché promuovere il tuo business tramite tecnologie mobile

Il mondo degli sviluppatori ha iniziato a pensare a come poter rendere utilizzabili i propri prodotti, tramite un'utenza mobile, soltanto dopo l'uscita ufficiale del primo iPhone.
Oggi il market share degli smartphone ha superato il 58% e il trend è destinato ad aumentare. La maggior parte dei siti web è visitata tramite questi dispositivi e le aziende stanno spostando sempre di più i loro interessi verso questo segmento.
Immaginiamo di essere un manager di una compagnia di vendita di prodotti online nel 2008 e che  la maggior parte degli acquisti sul portale, da parte dei visitatori, avvenga da computer.
Siamo ora nel 2020, il mercato degli smartphone è esploso e sempre più clienti acquistano tramite questo dispositivo. Il nostro sito web non è cambiato molto e non abbiamo ancora un’applicazione mobile. È giunto il momento di dedicare delle risorse per rimanere al passo con i tempi.

Qual è la tecnologia mobile più adatta alle mie esigenze?

Attualmente esistono molteplici tecnologie che possono aiutarci a promuovere il nostro business tramite smartphone.Scegliere la più adatta a noi non è così semplice e scontato come potrebbe sembrare. Analizziamo insieme le varie possibilità presenti sul mercato.

Web: Responsive first 

Per rendere usufruibile la corretta visualizzazione di una pagina web su dispositivi diversi (mobilitablet o desktop) è necessario come primo passaggio  trasformare il proprio sito web in responsive.
Con responsive si intende tecnologia legata al web design che permette partendo da un sito, modificando il suo CSS e qualche elemento HTML, di rendere i contenuti visibili da smartphone.
Passando a una versione responsive si potrebbero riscontrare alcune problematiche come:
- Caricamento delle pagine web troppo lento
- Necessità ogni volta che si accede al sito di scaricare nuovamente tutto il codice HTML/CSS/JS.
Per gli utenti dover portare a termine questa azione potrebbe non essere sempre facile e possibile (es. situazioni di scarsa copertura di rete).

Pro
  • Velocità di modifica e scrittura.
  • I miei sviluppatori conoscono già la tecnologia
Contro
  • User experience non ottimale
  • Non funziona offline
  • Caricamento non sempre veloce

Progressive Web App to the rescue

Un piccolo aiuto ci viene incontro dalle Progressive Web App. Le PWA mettono a disposizione una cache di assets (immagini, codice, fonts, ecc…) in modo da non dover rendere obbligatorio ogni volta il ricaricamento del  sito web.
Android e iOS, tramite Chrome e Safari, offrono la possibilità di “installare” la PWA nascondendo l’interfaccia del browser e integrandola direttamente all’interno del sistema operativo stesso. L’implementazione di una PWA però non avviene senza lati negativi. Ad esempio, è necessario ristrutturare il codice per separare in maniera netta ciò che è presentazione del dato e ciò che invece è necessario ricaricare ad ogni accesso all’applicazione. Inoltre, non è possibile integrare la propria applicazione con l’hardware del dispositivo limitandoci all’uso, ad esempio, di NFC e Bluetooth. Non sarà infine possibile,  per esempio,  scansionare un codice QR o utilizzare un tag NFC.

Pro
  • Tutte quelle del responsive
  • Caricamento più veloce rispetto al responsive
  • Possibilità di navigare il sito in maniera offline
Contro
  • User experience non ottimale
  • Poca integrazione coi sensori del dispositivo

Applicazioni Ibride

Con applicazione ibrida si intende una web view che mette a disposizione un SDK per integrare un’applicazione web con il sistema operativo sottostante, permettendo di creare app più complete e integrate.
Attraverso un’app di questo tipo è possibile scansionare un codice QR per poter accedere direttamente alla scheda prodotto online interamente dedicata all'oggetto di nostro interesse.
Molti sviluppatori sono attratti da questa tecnologia per un vantaggio particolare, ovvero l'esistenza di un codice (pressoché) unico. L’integrazione con il sistema operativo viene gestita da uno strato applicativo che espone un’API unica con cui la nostra applicazione può interagire. Questo permette di scrivere un singolo codice sia per iOS che per Android.
Come per un sito web, il “feel” di un’applicazione ibrida rimane slegato dall’esperienza del sistema operativo. Le interazioni insieme agli elementi di design riusciranno molto difficilmente a riprodurre quelle di sistema.
Appoggiandosi ad una web view, e quindi ad un browser e a tecnologie web, si riscontra un problema di prestazioni.
Se gli elementi a schermo diventano numerosi oppure vengono renderizzate liste molto grandi, le applicazioni ibride tendono a presentare rallentamenti e problemi nella visualizzazione di tutti i dati. Questa problematica è particolarmente evidente su dispositivi di fascia bassa con hardware poco potenti e poca memoria a disposizione.

Pro
  • I miei sviluppatori conoscono già gran parte della tecnologia
  • Asset pre caricati e accessibili online
  • Possibilità di accesso a gran parte dei sensori del dispositivo
  • Maggiori integrazioni con il sistema operativo
Contro
  • User experience non spesso ottimale
  • Non tutti i sensori sono disponibili o semplici da usare
  • Hardware poco potenti potrebbero avere difficoltà quando vengono caricati tanti elementi

Applicazioni Native 

Le applicazioni Native sono sviluppate utilizzando l’SDK fornito direttamente dal sistema operativo. Vengono compilate per essere eseguite direttamente sul dispositivo senza aver alcuno strato di interpretazione al di sotto. La UI e l’experience sono quelle native del sistema operativo. Questo comporta che le applicazioni siano sviluppate utilizzando ambienti e linguaggi specifici con la conseguenza che il codice sia diverso per le diverse piattaforme.

Pro
  • Prestazioni al massimo sul dispositivo
  • UX e UI ottimale pensata per la piattaforma specifica
  • Accesso a tutti i sensori di un dispositivo
Contro
  • Necessario scrivere due app in due linguaggi differenti e spesso con due team di sviluppo

React Native & Flutter

Rispetto alle tecnologie descritte precedentemente, Facebook e Google hanno sviluppato delle valide alternative: React Native e Flutter.

React Native

React Native è un framework a metà tra ibrido e nativo. Viene utilizzato un interprete javascript che, sfruttando la libreria grafica React, renderizza componenti nativi. Questa soluzione permette di sfruttare le competenze di uno sviluppatore web ottenendo però prestazioni simili rispetto a quelle di un’app nativa.

Pro
  • Più prestazioni rispetto ad un’app ibrida
  • Simile allo sviluppo di un’app ibrida
  • Nonostante l’uso di elementi nativi nell’app la codebase è unica
Contro
  • Non tutto il codice è condivisibile tra Android e iOS. Capita di dover scrivere codice specifico.

Flutter

Flutter ha un approccio completamente diverso rispetto a React Native. Utilizzando Dart, linguaggio sviluppato da Google, Flutter renderizza all’interno di un canvas gli elementi grafici. Il risultato finale è un’applicazione molto performante che tende però ad allontanarsi dall’esperienza utente nativa.

Pro
  • Molto performante
  • Unica codebase
Contro
  • Framework ancora molto giovane e non molto usato
  • Difficoltà nel trovare sviluppatori Dart

Tecnologie mobile: alcuni aspetti da non trascurare

Responsive VS Applicazioni Ibride o Native

Per un'azienda è fondamentale analizzare i costi relativi all' adozione di una particolare tecnologia rispetto a un'altra.
A seguire, troverai alcuni aspetti da non trascurare al momento della tua scelta.

Time to market

Immaginiamo ancora una volta di essere la nostra azienda di vendita online.La maggior parte dei nostri sviluppatori probabilmente saranno sviluppatori web.
L' eventuale possibilità di dover istruire o addirittura assumere sviluppatori Android/iOS potrebbe essere un’operazione costosa dal punto di vista di tempo e budget.
D'altro canto, rendere semplicemente responsive il nostro sito potrebbe non essere sufficiente. I visitatori probabilmente non lo troverebbero così accattivante e fidelizzante. Questa scelta potrebbe rivelarsi quindi sbagliata, provocando una perdita economica  maggiore.
Sicuramente affidarsi a tecnologie note per lo sviluppo di un sito web è una decisione che può rivelarsi molto vantaggiosa. Per esempio, contattando in supporto un'azienda esterna come Hinto il lavoro di sviluppo attraverso tecnologie già conosciute sarebbe decisamente più rapido.

Sviluppo mobile oriented 

Uno sviluppatore web, in generale, per sviluppare un’app nativa necessita di dover imparare non solo un nuovo framework, ma spesso anche un nuovo linguaggio (Java/Kotlin per Android, objective-C/Swift per iOS o Dart per Flutter). 

  • Responsive e Progressive Web App:
    Sviluppare il nostro sito in versione responsive è semplice e l'esperienza utente richiesta è bassa. Questa azione può essere accompagnata eventualmente dall’introduzione della tecnologia Progressive Web App, ambiente familiare i cui concetti nuovi sono pochi.
  • Ibrido:
    Affidarsi a una tecnologia ibrida permette ai nostri sviluppatori di rimanere nel comfort dello sviluppo web, ma allo stesso tempo  l’aggiunta di integrazioni potrebbe rallentare le fasi di sviluppo (situazione diversa rispetto allo sviluppo web tradizionale). 
    I nostri sviluppatori si ritroverebbero costretti ad approcciarsi con un'unica codebase, accompagnata da piccole implementazioni specifiche per i sistemi operativi di riferimento, e probabilmente dovrebbero imparare un nuovo framework. Infine, le integrazioni con il sistema operativo potrebbero causare qualche difficoltà.
  • React Native:
    React Native permette agli sviluppatori React di approcciarsi a una tecnologia che assomigli a un’applicazione web React. Anche in questo caso troviamo un’unica codebase, ma raramente ci troveremo a dover gestire casi particolari e specifici per la piattaforma target. Come per l’ibrido anche in questo caso sarà necessario imparare un nuovo framework.
  • Nativo:
    Lo sviluppo di un’app nativa è sicuramente quello più complicato e meno web-developer oriented. Il codice, i paradigmi di programmazione ed i design pattern sono spesso molto diversi per ogni piattaforma.
  • Flutter:
    Flutter è una tecnologia molto giovane e  Dart è un linguaggio ancora poco usato. Per questo motivo, qualora si decidesse di affidarsi a questa tecnologia, probabilmente sarebbero necessarie delle fasi di training per gli sviluppatori. Per quanto riguarda la codebase è simile a quanto detto per le applicazioni ibride.

Lato Business: vediamo nel dettaglio i pro e i contro dello sviluppo mobile

Di seguito una tabella riassuntiva, utile lato business, di costi e benefici relativi alla fase di sviluppo di un’app.

Tecnologia Costo Esperienza utente Prestazioni Integrazioni
Responsive Basso Bassa Basse Quelle di un sito web. Poche integrazioni col dispositivo
PWA Basso Medio-bassa Medio-basse Quelle del responsive più la possibilità di avere un’esperienza offline
Ibrido Medio Media Medie La maggior parte dei sensori di un dispositivo sono disponibili
React native Medio Medio-alta Medio-alte La maggior parte dei sensori di un dispositivo sono disponibili
Nativo Alto Alta Alte Tutti i sensori del dispositivo disponibili
Flutter Alto Medio-alta Alte

La maggior parte dei sensori di un dispositivo sono disponibili

Conclusioni 

Quale potrebbe essere la soluzione migliore a cui affidarsi?
Queste domande probabilmente ti aiuteranno a risolvere alcuni dubbi e a prendere una decisione più consapevole:

  • Che competenze abbiamo in azienda? Se abbiamo a disposizione soltanto sviluppatori web possiamo considerare l’idea di realizzare un’app ibrida.
  • Che esperienza utente vogliamo offrire? Se l’esperienza utente è molto importante dovremmo considerare l’idea di  sviluppare un’app nativa.
  • Di quali sensori abbiamo bisogno? Spesso è necessario accedere a sensori come il bluetooth, la fotocamera o il GPS. È importante verificare bene la lista dei sensori supportati prima di scegliere una tecnologia specifica.
  • Quanti dati dovremo visualizzare a schermo? Un’app responsive o ibrida non è particolarmente adatta a visualizzare grandi liste di elementi. Mentre attraverso un’app nativa o in Flutter non si dovrebbero riscontrare grandi problemi in fase di visualizzazione.
  • Qual è il time-to-market? Questa domanda è fortemente correlata alle esigenze aziendali. Fare formazione è generalmente dispendioso sia dal punto di vista temporale che di budget.
    Non esiste una soluzione che vada bene per tutti. Molto dipende dalle competenze presenti in azienda, dal tempo a disposizione e dal budget disponibile.

Ti piacerebbe iniziare un progetto insieme? Contattaci