Omnicanalità: app native o ibride?

Alessio Grassi
Hub dell'innovazione digitale
4 min readNov 5, 2019

Al giorno d’oggi le app sono diventate un elemento fondamentale della nostra quotidianità, da quelle di messaggistica e social network all’homebanking. Gran parte dei servizi che consumiamo sono disponibili tramite apposite app che hanno soppiantato del tutto o quasi i siti web istituzionali.

Dall'uscita del primo iPhone e dalla nascita del suo App store c’è stata una corsa da parte delle aziende per apparire su questa nuova vetrina. Se all'inizio era una nuova forma di pubblicità e di ingaggio del cliente, piano piano è diventato uno dei canali fondamentali per svariate tipologie di aziende.

Si pensi alle aziende della moda che hanno soppiantato i cataloghi con app interattive o ad aziende di servizi che permettono di acquistare e gestire i propri prodotti tutto dal proprio smartphone, insomma ad oggi non offrire ai propri clienti un app fa perdere di “serietà” al proprio marchio.

Data l’importanza di questo segmento dello sviluppo software, sin dai suoi albori c’è stata una forte attenzione e un grosso investimento da parte delle software house.

Una premessa

Allo stato attuale si sono stabilizzati due grandi player: Apple con l’ecosistema iOS e Google con Android.

Questi due colossi hanno fatto scelte strutturali differenti per i loro sistemi operativi portando così gli sviluppatori a dover scrivere app con linguaggi differenti tra loro, nello specifico Objective-C e Swift su iOS oppure Java e Kotlin su Android.

Tutto questo si traduce in tempi di sviluppo maggiori, poiché è necessario sviluppare la stessa app due volte per poter apparire su entrambi gli store, dovendo quindi investire più tempo e risorse.

Write once, run anywhere

Da sempre si sa la più grande dote degli sviluppatori è la pigrizia e l’odio per i task inutili. Questo ha scatenato la caccia alla più grande chimera dell’informatica, ovvero scrivere una sola volta il codice per poterlo riutilizzare su più piattaforme differenti tra loro.

Per dare vita a questa creatura mitologica dello sviluppo software sono nati vari framework, ad oggi quelli più diffusi e maturi sono Xamarin, React Native, Flutter, Apache Cordova e Ionic.

Tutti i framework sopra elencati approcciano il problema in maniera differente ma con lo stesso obbiettivo ovvero permettere allo sviluppatore di riusare la maggior parte, se non la totalità, del codice scritto.

Native o ibride

Le differenze tra i due approcci non si limita ai soli costi e tempi ma anche all'esperienza utente.

Sviluppando app native si otterranno interfacce coerenti con il sistema operativo di riferimento ma non uniformi tra loro poiché Apple e Google utilizzano guideline differenti per le proprie interfacce.

Nel caso di app ibride si tende ad essere meno vincolati da questo aspetto andando così a creare interfacce che si discostano più o meno dall’esperienza del sistema operativo di riferimento ma che sono uniformi tra loro.

Le app ibride, nel compiere la propria magia, introducono un layer applicativo ulteriore per permettere di far comprendere il nostro codice alle due piattaforme.

Questo introduce alcuni svantaggi tra i quali:

  • un calo di performance dell’applicazione rispetto ad una nativa (in alcuni casi impercettibile)
  • il rischio di bug introdotti dagli sviluppatori del framework
  • una tempistica maggiore nell'avere accesso alle ultime funzionalità del sistema operativo o dell’hardware dello smartphone (anche se queste tempistiche si sono molto ridotte rispetto ai primi passi delle app ibride)

Quindi il dilemma, native o ibride? Sta allo sviluppatore valutare se l’app che si sta sviluppando necessita di tutta la potenza del dispositivo, dell’ultima innovazione hardware/software oppure se si può fare un sacrificio sulle performance per avere dei vantaggi su costi, tempi di sviluppo e manutenzione.

Personalmente la mia risposta a questa domanda è variata negli anni.

Fino a cinque anni fa avrei risposto che l’approccio migliore era lo sviluppo nativo, oggi visti i passi avanti che si sono fatti con le tecnologie coinvolte (HTM5, CSS3, Javascript es6, il framework IONIC, Angular, ecc…) e visto l’aumento di performance degli smartphone, credo che se ben sviluppate le app ibride permettano di creare dei prodotti affidabili e performanti mantenendo il vantaggio di poter sviluppare una volta sola e distribuire la propria app su tutti gli store.

--

--