Il concept da cui nasce un’app è sempre importante, ma una fase forse meno immediata da considerare è la scelta tra app nativa, web app e app ibrida. Ma se anche hai già scelto gli indiscutibili vantaggi dell’app ibrida, arriva la seconda questione: quale framework di sviluppo usare?
In questo articolo parleremo delle app ibride, con un focus sulle caratteristiche di Flutter, framework di Google, comodo e funzionale per sviluppare in modo fluido e con ottimi risultati.
Cos’è un’app ibrida
L’app ibrida unisce in sé le caratteristiche dell’app nativa e della web app: infatti, la si può scrivere in un solo linguaggio indipendente dal sistema operativo per il quale è destinata, di norma JavaScript, CSS e HTML5, come la web app, e questo rende l’app ibrida anche cross-platform. Altra caratteristica che l’ibrida ha in comune con la web app è la comunicazione diretta con il web.
Però l’app ibrida è dotata di un “involucro” (shell) di app nativa che le consente di comunicare in modo efficace con qualsiasi piattaforma o dispositivo.
L’app ibrida è quasi indistinguibile, quanto a interfaccia e tempi di installazione, alla web app. In realtà, mentre la web app usa effettivamente il browser, l’app ibrida usa una WebView, che è molto simile a un browser ma più facile da navigare e priva di elementi come la barra degli indirizzi.
Vantaggi dell’app ibrida
L’app ibrida è un ottimo compromesso tra i costi di sviluppo ridotti e la versatilità di una web app e la perfetta compatibilità dell’app nativa. In più, l’app ibrida è più gestibile a livello di manutenzione, in parte per la sua natura, in parte perché non serve avere due sviluppatori diversi che mettano mano a due codici diversi (dando per scontato che parliamo dei due sistemi operativi IOS e Android), oppure a un unico sviluppatore che deve comunque dedicare tempo a entrambi separatamente.
Per l’app ibrida il linguaggio è uno, e quindi basta uno sviluppo, e di conseguenza un intervento a ogni manutenzione periodica.
Svantaggi
L’app nativa non è la soluzione perfetta per le performance, questo lo sappiamo.
Ma si sa, a volte la perfezione è nemica della produttività. Meglio quindi avere un lavoro comunque ben fatto, ma che funziona in tempi brevi e costa meno in manutenzione sul lungo termine, piuttosto che la macchina perfetta a costi insostenibili.
Inoltre, l’app ibrida ha purtroppo un’elevata dipendenza dalle librerie. Un progetto mediamente complesso, quindi, dipenderà da numerose librerie di terze parti, ovvero "pezzetti" di codice, sviluppati da sviluppatori indipendenti, (librerie di terze parti sono essere usate ad esempio per leggere qr code, per abilitare alcune funzioni sulle mappe, per elaborare le immagini, per comunicare con server esterni, ecc.)
Come scegliere il migliore framework di sviluppo cross-platform
Il giusto framework per sviluppare un’app ibrida è quello che risponde bene ad alcune caratteristiche di base: innanzi tutto, la piattaforma che si sceglie deve consentire all’app ibrida di somigliare quanto più possibile alle app native in termini di prestazioni e funzionalità.
Inoltre, deve consentire che l’app possa essere facilmente scalabile e che la si possa modificare anche solo in una sua piccola parte o funzione.
Deve anche consentire un utilizzo dell’app sul maggior numero di piattaforme possibile, altrimenti si rinuncerebbe a quello che è uno dei vantaggi principali delle app ibride.
Poi, un buon framework deve consentire tempistiche di sviluppo e budget ragionevoli, che dipendono in primo luogo dalle risorse che vi si possono destinare.
Tra i framework più popolari per app cross-platform abbiamo Ionic, Xamarin di Microsoft e React Native di Facebook, anche se secondo il team di Pizero Design la scelta più funzionale, efficiente e rapida è senz’altro Flutter.
Perché scegliere Flutter
Questo prodotto di casa Google vede alcune caratteristiche molto positive tutte insieme. Innanzi tutto, il fatto che sia di Google facilita la questione del supporto.
Se prendiamo invece Ionic, dobbiamo considerare che alcune delle sue funzionalità sono basate su Cordova e di conseguenza non tutti i plugin sono supportati.
In più, le app realizzate con Flutter hanno delle performance ottime, perlopiù quasi indistinguibili da un’app nativa, a fronte di una grande facilità nel lavoro di sviluppo.
Invece in React Native anche il più piccolo errore può rendere il progetto instabile, quindi serve un team di sviluppo esperto e non junior.
Poi, in Flutter si parla di un gruppo di sviluppatori in crescita, che condividono idee, soluzioni ai problemi, pezzi di codice da condividere per facilitare le cose.
Per chi sviluppa questa rappresenta una caratteristica non da poco, perché si rischia meno di ritrovarsi “soli” a risolvere un problema che magari altri hanno avuto prima di noi. Xamarin, che comunque è un ottimo framework, ha ad esempio una community molto più esigua, e questo svantaggio - insieme alla licenza costosa e alle performance non sempre ottimali sulle app grandi - si fa sentire sul lungo termine.
Dulcis in fundo, con Flutter la tua app può diventare anche un sito web.
Come funziona Flutter
Flutter è un toolkit per lo sviluppo di applicazioni multi-piattaforma, che consente di programmare una sola volta e riutilizzare il codice su sistemi operativi come iOS e Android. L'obiettivo di Flutter è realizzare app ad alte prestazioni che funzionano in modo fluido su sistemi diversi, condividendo quanto più codice possibile.
Durante lo sviluppo, le app Flutter vengono eseguite in una macchina virtuale che consente di caricamento istantaneo delle modifiche senza che sia necessaria una ricompilazione completa del codice.
Quando sono pronte e arriva il momento del rilascio, le app Flutter vengono compilate direttamente nel codice macchina, indipendentemente dalle istruzioni Intel x64 o ARM, o in JavaScript se destinate al Web.
Il framework è open source, con una licenza BSD permissiva e dispone di un fiorente ecosistema di pacchetti di terze parti che integrano le funzionalità della libreria principale.
Ma ora parliamo del framework di Flutter, quello che veramente importa a chi vuole sviluppare la propria app ibrida.
Grafica
Per orientarsi nei temi ricordiamo che Cupertino è per iOS e Material è per Android, mentre se preferisci il fai-da-te avrai comunque un buon grado di personalizzazione.
Skia Canvas
I widget sono gli elementi costitutivi dell'applicazione, attraverso cui viene disegnata l'interfaccia grafica della tua App. L'output dell'interfaccia utente viene interamente disegnato da Flutter su Skia Canvas, ed è proprio questo aspetto a renderlo così facile e smart da usare. Una volta che l'interfaccia utente è completa e renderizzata, la sua gestione passerà all’engine.
Engine
Il fulcro di Flutter è il motore Flutter , che è principalmente scritto in C++ e supporta le primitive necessarie per supportare tutte le applicazioni Flutter. Fornisce l'implementazione di basso livello dell'API principale di Flutter, inclusa la grafica (tramite Skia ), il layout del testo, l'I/O di file e di rete, il supporto per l'accessibilità, l'architettura del plug-in e un runtime Dart e una toolchain di compilazione.
Vantaggi di Flutter in breve
- Ampiamente supportato e documentato
- Personalizzazione facile di widget e interfacce
- Integrazione del Material Design di Google
- Sviluppo facile e veloce
- Consente di creare App per Android, iOS e per il Web
- Migliore ciclo di test
In conclusione
Flutter è probabilmente la migliore scelta per sviluppare un'app ibrida.
Però attenzione, perché non esiste una soluzione universalmente valida. Se parliamo di un progetto complesso, spendendo un po' di più si può realizzare un'app realmente nativa, con diversi benefici.
Qual è la scelta migliore per te? Parlaci del tuo progetto e sapremo indirizzarti verso la soluzione migliore, che sia Flutter, nativa o altro.