Sviluppo

Impariamo, insegnamo, condividiamo

Impara le ultime tendenze del digitale

Eventi, conferenze e incontri speciali

Blog

App: nativa o multipiattaforma?

Il mondo delle app è senza dubbio affascinante ma approcciare ad un progetto di questo tipo richiede un certo grado di preparazione anche da parte del cliente.

Cominciamo con il dire che esistono diversi tipi di app, ciascuno con le sue peculiarità.

Possiamo dividere le applicazioni in app native, multi-piattaforma (o ibride) e web app. In questo articolo noi affronteremo in particolare le differenze fra app native e multi-piattaforma per cercare di fornire indicazioni utili che diano un indirizzo verso la scelta della soluzione migliore.

Applicazione nativa

Le app native sono sviluppate per dispositivi specifici, in un linguaggio di programmazione legato alla piattaforma su cui sono ospitate. Questo significa che, ad esempio, un’app sviluppata per iOS non sarà mai disponibile nel Google Play Store e non funzionerà su un telefono Android.

Esaminiamo alcune specifiche di un’app nativa:

  • Tecnologia: le app iOS sono integrate in Objective C o Swift. Le app Android sono integrate in Java.
  • Accesso all’API nativa: le app native hanno la possibilità di accedere completamente alle funzionalità e all’API del dispositivo.
  • Metodo di distribuzione: tramite un app store.
  • Funzionalità multipiattaforma: nessuna, l’app nativa rimane limitata alla piattaforma per cui è stata creata.

Come puoi vedere, le app native possono sfruttare appieno le funzionalità del dispositivo, come la fotocamera, l’elenco dei contatti, il GPS, Bluetooth, WiFi e altro ancora.

 

Quali sono vantaggi e svantaggi di questa soluzione?

Vantaggi:

  • Non ci sono limiti nella realizzazione, si accede ad ogni risorsa e potenza del device in quanto si riesce a sfruttarne al 100% l’hardware
  • L’interfaccia grafica delle app è in linea con le esperienze a cui gli utenti sono abituati
  • Completo supporto dalle case costruttrici

Svantaggi:

  • Sono necessarie maggiori competenze in quanto ciascuna versione dell’app, iOS ed Android, deve essere sviluppata indipendentemente
  • Costi e tempi di realizzazione solitamente aumentano

 

Applicazione multi-piattaforma (o ibrida)

In informatica, un software multi-piattaforma è un software per computer che può essere implementato su diverse piattaforme informatiche.
Nel mondo delle applicazioni mobile questo si traduce in un software che può essere eseguito sia su Android che iOS.
Il mercato delle app multi-piattaforma ha raggiunto $ 7,5 miliardi nel 2018 e la quantità di strumenti di sviluppo mobile multi-piattaforma è in aumento, segnale che sottolinea la buona salute di questo settore.
A cosa è dovuta una crescita così rapida?
Scrivere un’applicazione mobile nativa può essere dispendioso, scriverne due raddoppia inevitabilmente i costi.
Se poi l’unica differenza tra le due app è la piattaforma su cui girano, il budget si esaurisce rapidamente, perché bisogna introdurre modifiche, correggere bug, eseguire test e rilasciare gli aggiornamenti sui rispettivi store due volte.

Fortunatamente le soluzioni cross-platform oggi disponibili permettono agli sviluppatori di creare APP funzionanti su più sistemi operativi. Questi framework inoltre forniscono un insieme di strumenti per aiutare lo sviluppatore nel riuso del codice e per incrementarne la produttività.

 

Quali sono vantaggi e svantaggi di questa soluzione?

Vantaggi:

  • Risparmio: il costo di sviluppo è ridotto quando si scrive il codice una volta sola e si può eseguire su più piattaforme.
  • Manutenzione più agevole e veloce: dato che la base di codice è una sola e funziona su più piattaforme, diventa molto più facile mantenerla e correggerla in caso di bug.

Svantaggi:

  • Performance: a causa delle esigenze multi-piattaforma, la dimensione del codice cresce causando problemi di caricamento e prestazioni.
  • Esperienza utente: esistono differenze di esperienza di interazione tra Android e iOS ( ad esempio le icone, il modo in cui sono disposte sulla navbar, i popup di sistema, ecc.). Quando si sviluppa per più sistemi, è difficile mantenere le specifiche esperienze della piattaforma, il che si traduce nella perdita del “feeling nativo” di un’app per quel sistema operativo.

 

 

Soluzioni per lo sviluppo app mobile multi-piattaforma

Per padroneggiare al meglio la complessità della scrittura del codice, sono nati diversi metodi di gestione dello sviluppo di app multi-piattaforma attraverso l’utilizzo di Framework.

Le tecnologie per la creazione di applicazioni mobile multi-piattaforma sono divise in due grandi categorie:

  • Soluzioni Web-based
  • Soluzioni multi-piattaforma scritte in un linguaggio comune, appoggiandosi a un Framework specifico

 

Soluzioni Web-Based

Le tecnologie Web-based (ovvero “basate sul web”) usano solitamente un software “contenitore” nativo simile ad un normale browser, che fa da ponte tra l’applicazione ibrida scritta in HTML e Javascript e il sistema operativo.
Più recentemente hanno iniziato a diffondersi anche le Progressive Web Apps (o PWA), principalmente spinte da Google, ma che funzionano anche su Apple con alcuni limiti.
Le PWA superano la necessità di un “contenitore” e vengono sviluppate interamente in tecnologia web, grazie alle nuove specifiche di HTML5, proprio come un sito web.
Le PWA inoltre, a differenza delle altre tecnologie nominate, non hanno componenti native e non vengono quindi distribuite sugli App Store tradizionali, ma direttamente con un link come se fossero un normale sito web.
Si tratta di una tecnologia interessante ma ancora non completamente matura, che con ogni probabilità tratteremo in futuro.
Questo approccio permette agli sviluppatori web di poter utilizzare le proprie skill preesistenti per realizzare anche applicazioni mobili.

Soluzioni Multipiattaforma

Attraverso un framework di sviluppo multi-piattaforma è possibile scrivere codice che verrà compilato per essere eseguito direttamente sulle varie piattaforme, in modo simile ad una app nativa. Esistono vari Framework per lo sviluppo multi-piattaforma, con caratteristiche diverse in termini di qualità del risultato, velocità di esecuzione, facilità di creazione e ambito di applicazione, per questo è necessario scegliere i giusti strumenti a seconda degli obiettivi desiderati.
Per lo sviluppo per esempio di app mobile cross-platform, i Framework più utilizzati oggi sono React Native, Flutter (di recente reso disponibile per la prima volta da Google) e Xamarin.
Per lo sviluppo di applicazioni ludiche e multimediali (videogames, AR/VR), esistono poi framework specifici come Unity e Unreal Engine.

 

E quindi?

Scegliere tra lo sviluppo di un’app nativa e una ibrida non è immediato perchè dipende da svariati fattori:

  • requisiti tecnici dell’applicazione
  • livello di personalizzazione dell’applicazione
  • contesto operativo dell’applicazione
  • budget del cliente

Anche se l’ecosistema delle applicazioni multipiattaforma è in rapida crescita, non è sempre detto che prendere la strada “multiplatform” per la realizzazione di un’app sia la scelta migliore, bisogna analizzare caso per caso.
Per esempio, se un’applicazione richiede un’interazione forte con l’hardware del telefono (fotocamera, accelerometro, GPS, Bluetooth), sarebbe da prediligere uno sviluppo nativo per avere un controllo maggiore.