Creare una mobile App

Tra tutti gli scenari di sviluppo, il mobile è quello più tumultuoso ed è stato caratterizzato, fino dalla sua nascita, da innovazione e cambiamenti continui che ci hanno reso spettatori della crescita e del declino di vari sistemi operativi e produttori.

Se non è così improbabile che, per leggere questo articolo, il lettore stia usando un notebook acquistato nel 2013 con Windows 10, uscito nel 2015, sarà quasi impossibile che abbia un cellulare Nokia Lumia con Windows Mobile 8 o un BlackBerry Q10.

Meno di cinque anni sono sufficienti perché un cellulare e il software diventi obsoleto. IOS 8 ed Android 5.0, usciti entrambi nel 2014, sono presenti ad oggi in meno del 5% dei dispositivi utilizzati nel mondo e non sono più supportati dai rispettivi produttori.

Sviluppare un’app per Android o iOS non vuol dire creare qualcosa come un sito web, ma realizzare un vero e proprio software che gira su dispositivi diversi, eterogenei ed in costante e rapida evoluzione.

Inoltre, anche se è vero che nella maggior parte dei casi le app aziendali hanno come target i tablet e cellulari con sistema operativo Android ed Apple, non si deve scordare che viene spesso richiesto anche il funzionamento su pc fissi con Windows e Mac OS. Sempre più diffusi sono i dispositivi indossabili e domestici e le relative app che, anche se in contesti specifici, sono sempre più richieste.

Pertanto è fondamentale, visti anche i costi maggiori che di solito lo sviluppo di un’app richiede rispetto allo sviluppo di un sito web, fare un’analisi molto approfondita degli obiettivi di business, dei workflow e dei risultati attesi.

Un’azienda che desidera realizzare un’applicazione mobile, sia destinata ad un utilizzo interno oppure alla commercializzazione, per procedere con lo sviluppo ha la necessità di scegliere come realizzarla, utilizzando una delle numerose soluzioni che si possono dividere in quattro macro-categorie: nativo, ibrido/cross-platform, sviluppo tramite piattaforme “low code/no code” (Power Apps) ed infine sviluppo tramite progressive web app (PWA).

Per il confronto verranno considerati alcuni parametri: performance, semplicità e rapidità di sviluppo, modo, semplicità e rapidità della distribuzione sui device (deploy), accesso a basso livello alle funzionalità offerte dai sensori e possibilità di utilizzare dispositivi esterni, livello di personalizzazione dell’interfaccia grafica, facilità nel reperire sviluppatori in grado di implementare la soluzione richiesta.

APP native

Le app native hanno questo nome perché vengono sviluppate nello stesso linguaggio del dispositivo al quale sono destinate. Se si sceglie questo tipo di implementazione si deve avere a disposizione almeno uno sviluppatore per ogni piattaforma: su Android è necessario conoscere il linguaggio Kotlin e/o Java, su Apple i linguaggi Objective C e/o Swift, su Windows il framework Dot Net.

Da un punto di vista di funzionalità, con una app nativa si ottiene un’ottima efficienza data la possibilità di sfruttare appieno le potenzialità del dispositivo e dell’hardware.

Le app native permettono di ottenere prestazioni eccellenti. Questo aspetto diventa importante se si intende sviluppare giochi, contenuti multimediali, animazioni, 3D, realtà aumentata ed in generale quando è richiesta una interfaccia grafica molto elaborata.

Vantaggi:

  • Controllo completo e totale del device;
  • Velocità e possibilità di gestire grandi quantità di dati;
  • Possibilità di utilizzare tutte le funzionalità offerte dal device (bluetooth low energy, sensori);
  • Esperienza utente totalmente uniforme con quella offerta dal sistema operativo;
  • Facilità nel trovare sviluppatori;

Svantaggi:

  • Costi di sviluppi elevati, necessità di avere risorse distinte sui vari ambienti;
  • È necessario sviluppare, testare e manutenere le diverse soluzioni;
  • Quando esce un nuovo sistema (es Samsung Tizen) è necessario implementare la soluzione completamente da zero;
  • Quando il sistema scompare tutti gli investimenti fatti sono sostanzialmente perduti (es: Nokia Symbian, BlackBerry OS, Firefox OS);

APP ibride/cross

Un’alternativa allo sviluppo nativo è lo sviluppo con tecnologia ibrido/cross che permette, attraverso un unico linguaggio ed un unico ambiente, di realizzare una sola app da cui poi verranno facilmente create le diverse versioni (tipicamente una per iOS, una per Android ed una per Windows).

Lo scopo è quello di snellire il processo di sviluppo e di ridurre il mantenimento del codice riuscendo comunque a garantire gli stessi risultati attesi in termini di performance ed usabilità che si ottengono da un’app nativa.

I più diffusi framework di sviluppo sono: Xamarin di Microsoft, Flutter di Google, React Native supportato da Facebook, Ionic.

Se si decide di implementare la propria app utilizzando questa soluzione è particolarmente importante scegliere un framework stabile sperando che sia pienamente supportato anche negli anni a venire. Negli anni molti player hanno cercato di fornire soluzioni che poi sono state sostanzialmente abbandonate, ad esempio Embarcadero con Delphi.

Partiamo dal più diffuso dei framework, ovvero React Native: creato nel 2015, viene utilizzato per la realizzazione di alcune tra le più famose e diffuse app quali Facebook Messenger, Instagram, Snapchat, Tinder, Airbnb. Lo sviluppo avviene tramite linguaggio JavaScript. Le applicazioni create con questo framework tipicamente sono “da market” e non devono lavorare in offline. Su questa tipologia di app React viene considerata la migliore delle soluzioni.

Flutter è un sistema ancora più recente, creato nel 2017 da Google ed utilizzato, oltre che da Google stessa, da aziende internazionali come ad esempio Alibaba e Wechat. Lo sviluppo Flutter avviene utilizzando il nuovo linguaggio DART. Non essendo stato ancora adottato in modo diffuso in Italia la community di sviluppatori non è ancora ampia e quindi non è facile trovare persone con le conoscenze richieste.

Svantaggio principale di entrambi i due framework è il parziale supporto alla piattaforma Windows, anche se essendo, soprattutto il secondo, in continua evoluzione non è improbabile che a breve questo gap venga colmato. Di fatto ad oggi Windows è supportato solo tramite Alpha (quindi non stabile).

Xamarin è invece la soluzione Microsoft ed utilizza quella che è uno dei più diffusi, conosciuti e stabili ambienti: il framework DotNet ed il linguaggio C#. DotNet è uscito nel 2002 e da allora è stato costantemente migliorato con investimenti costanti e un percorso di innovazione e crescita che lo ha portato ad essere leader nell’innovazione.

Questi investimenti da parte di Microsoft si traducono nella tranquillità di sviluppare con un sistema che comunque ha sempre garantito negli anni un supporto continuo, permettendo agli sviluppatori di aggiornare e migrare le proprie applicazioni, anche se certo non sempre in modo indolore e semplice, anzi a volte in modo molto complesso (pensiamo a Silverlight).

Rimane il fatto il framework.NET è stato introdotto con Windows XP e Windows CE/Windows Mobile e da allora ha conosciuto una diffusione che lo rende ad oggi una delle principali piattaforme di riferimento per gli sviluppatori.

La totale integrazione con i servizi in cloud Microsoft Azure permette ad oggi di arricchire le applicazioni mobile di tutti gli strumenti offerti da Microsoft per il Cloud tra i quali Artificial Intelligence, Cognitive Services, Cognitive e Cloud Computing, Machine Learning e tanti altri ancora.

Nel grafico possiamo vedere la diffusione di mercato delle varie piattaforme.

grafico piattaforme

In questa tabella riassuntiva vengono elencati i punti di forza e di debolezza delle tre soluzioni.

 

XAMARIN

 

 

FLUTTER

 

REACT NATIVE

 

Vantaggi

 

Integrato con le soluzioni Microsoft Azure e con tutti i prodotti Microsoft;

 

Prodotto stabile e maturo;

.NET ininterrottamente supportato da Microsoft fino dal 2002;

 

Ampia comunità di sviluppatori;

 

Numerosi componenti di terze parti;

 

Long term support garantito;

 

Applicazioni con database locali di grosse dimensioni rapide e stabili;

 

 

In rapidissima diffusione;

 

Supportato da Google;

 

Consente di sviluppare in modo rapido app “da market” che funzionano in modalità online;

 

Permette di realizzare Web Apps;

 

 

 

Consente di sviluppare in modo rapido app “da market” che funzionano in modalità online;

 

Supportato da Facebook;

Elevate possibilità di personalizzazione dell’interfaccia grafica;

 

Permette di realizzare Web Apps;

 

Enorme quantità di componenti di terze parti;

 

Svantaggi

 

Difficoltà nell’implementare interfacce grafiche elaborate;

 

Non permette di realizzare Web Apps;

 

Pacchetto di installazione dell’applicazione di dimensioni maggiori rispetto agli altri;

 

 

 

Recente e ancora non completamente stabile ancora in beta ad esempio su Windows;

 

Ancora pochi componenti di terze parti;

 

Ancora pochi sviluppatori Dart in Italia;

 

Meno codice riusabile rispetto alle altre due soluzioni;

 

 

Non adatto ad applicazioni enterprise/offline con grandi quantità di dati;

 

Sviluppo complesso, sono richiesti sviluppatori senior;

 

Più lenta delle altre due soluzioni;

Power Apps

Power Apps appartiene alla famiglia delle soluzioni di sviluppo chiamate “Low Code/No Code”. È una componente della “Power Platform”, che include anche PowerBI e Microsoft Flow, e consente di realizzare soltanto applicazioni enterprise aziendali e non applicazione da market. Tipicamente un’applicazione aziendale permette la consultazione di liste ed elenchi, l’inserimento, la modifica e la cancellazione di dati. La realizzazione di questa tipologia di applicazione può essere fatta in tempi rapidissimi.

Anche chi non conosce alcun linguaggio di programmazione con pochi click può realizzare un’applicazione collegata alla propria base dati che visualizza una lista e permette di inserire, modificare o cancellare le varie entità.

Uno dei punti di forza di Power Apps è la completa e totale integrazione sia con tutte le altre soluzioni Microsoft, quindi Dynamics 365 CRM & ERP, OneDrive, Teams, SharePoint, Office 365, tutti i servizi Azure, sia con i più diffusi software commerciali quali ad esempio Sales Force, SAP, Jira.

Le Power Apps presentano però alcuni limiti importanti: è molto complesso farle lavorare in modalità offline, non permettono un controllo completo del device e quindi non è possibile ad esempio interfacciarsi con beacons, stampare su stampanti bluetooth, ricevere notifiche push effettuare acquisti in-app. Per fare un esempio, Immuni, date le sue caratteristiche, non potrebbe essere realizzata con Power Apps sia perché non sarebbe possibile interfacciarsi con il Bluetooth sia perché le Power Apps non vengono pubblicate nel Google Play ed Apple Store.

Vediamo infatti come avviene la distribuzione dell’app. L’utente finale deve installare un’app di Microsoft, chiamata appunto “Power Apps” e poi loggarsi su questa, utilizzando le proprie credenziali di Office 365. In questo modo potrà usufruire dell’App realizzata dallo sviluppatore.

Si tratta di deploy da uno store proprietario Microsoft, diverso quindi da quello del produttore del device, che rende accessibili solo le app che sono state abilitate dall’organizzazione.

Oltre che sui cellulari e tablet le Power Apps sono inoltre eseguibili su Mac e su Windows tramite Microsoft Teams.

Altro particolare importante da considerare è che la Power Platform non è attualmente disponibile ed accessibile in Cina.

Un tipico caso di uso in cui questa tecnologia offre dei vantaggi rispetto alle altre soluzioni sono le applicazioni come: gestione nota spese, gestione timesheet, gestione richiesta ed approvazione permessi e ferie ed anche gestione warehouse / magazzini (inventari, ricollocazioni, stoccaggi…).

In questi scenari l’utente che utilizza il sistema è all’interno dell’organizzazione quindi ha già la relativa licenza Office 365, inoltre tutte le informazioni sono già presenti all’interno di una base dati, tipicamente l’applicativo ERP.

Vantaggi:

  • L’applicazione può essere implementata facilmente e velocemente, tramite strumenti di drag&drop quindi anche da chi non ha conoscenze di sviluppo;
  • In tempi rapidi è possibile avere una soluzione stabile;
  • Non sono richieste skill per il Deploy su Microsoft Store;
  • Non è richiesta approvazione da parte dei market;
  • Non sono previste attività di aggiornamento per rendere compatibile l’app quando escono gli aggiornamenti del sistema operativo;
  • Si riescono ad eseguire anche su Teams;
  • Completamente integrato con mondo Microsoft Dynamics 365;

Svantaggi:

  • L’utente che utilizza l’app deve avere una licenza aggiuntiva (attualmente circa 8 euro/mese/utente per una singola app oppure 33 euro per app illimitate);
  • La distribuzione agli utenti avviene tramite tramite il market proprietario di Microsoft, non tramite Google Play o Apple Store, quindi la app non è effettivamente scaricabile dal market del dispositivo;
  • Non sono ancora disponibili componenti grafici complessi;
  • Non è possibile utilizzare hardware (es: stampati bluetooth, beacons, lettori NFC e/o RFID);
  • Non è possibile integrare le funzionalità del sistema operativo (push notification, acquisti in app..)
  • Sono attualmente utilizzabili sono in modalità online, in assenza di internet non funzionano;
  • Sono abbastanza lente, la velocità dipende direttamente anche dal tipo di connettività;
  • Non sono possibili personalizzazione grafiche spinte;

Conclusioni

Native Ibrido Cross-Platform Power Apps
Costi di sviluppo Elevati Medio Bassi
Tempi di sviluppo Elevati Medi Bassi
Online/Offline Entrambe Entrambe Online
Performance Elevate Medie Basse
Distribuzione Store Store Microsoft Store
Accesso alle funzionalità del dispositivo e collegamento a periferiche esterne Nessun Limite Nessun Limite Limitato/Assente
Personalizzazione grafica Elevata Media Bassa
Integrazione mondo Dynamics 365 Da sviluppare Da sviluppare Nativa
Tempo necessario per realizzare una app IOS, Android e UWP
Di tre schermate (lista, inserimento, modifica e cancellazione) e interfacciamento con un database centrale Dynamics 365 Elevato
 

3 * 7 = 21

 

12

 

3

Dynamics 365 Developer

 

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *