Un NERD da zero /

Element App, tutto sugli Additivi Alimentari!

Element App, tutto sugli Additivi Alimentari!

19 Marzo 2018 Marco Baldazzi
Marco Baldazzi
Marco Baldazzi
share
Element è un’applicazione semplice, con poche (ma efficienti) funzionalità, creata per uno scopo ben preciso: fornire un’utile e rapida guida sugli additivi alimentari presenti in commercio, categorizzandoli per la loro pericolosità verso le persone. È un'applicazione che punta a un target di utenti ben preciso, si rivolge ai consumatori attenti alla propria alimentazione e alla propria salute.
In questo articolo non voglio di certo parlarvi di alimentazione in genere (nonostante sia la mia seconda, grande, passione), ma voglio spiegarvi le tecnologie e i pattern di sviluppo utilizzati per creare quest’app.

Oggi vi presento Element: la mia ultima applicazione mobile, appena rilasciata su Google Play Store (Android) e in arrivo, a breve, anche sull'App Store (iOS).


Element è un’applicazione semplice, con poche (ma efficienti) funzionalità, creata per uno scopo ben preciso: fornire un’utile e rapida guida sugli additivi alimentari presenti in commercio, categorizzandoli per la loro pericolosità verso le persone. È un'applicazione che punta a un target di utenti ben preciso, si rivolge ai consumatori attenti alla propria alimentazione e alla propria salute.

Element è uno strumento utile per migliorare la propria alimentazione e ampliare le proprie conoscenze in materia di cibo, nutrimento e benessere.


In questo articolo non voglio di certo parlarvi di alimentazione in genere (nonostante sia la mia seconda, grande, passione), ma voglio spiegarvi le tecnologie e i pattern di sviluppo utilizzati per creare quest’app.

Sostanzialmente possiamo elencare alcune, con qualche concetto cardine:

 

  • MVVM e MVP

  • Google Firebase

  • Room Database

  • RxAndroid

  • Kotlin

     

MVVM e MVP:
Abbiamo due design pattern architetturali che permettono di impostare un progetto secondo regole ben precise, facilitando notevolmente lo sviluppo di un'applicazione. Il pattern MVVM (Model-View-ViewModel) è stato annunciato nel 2005 e permette di separare la logica di funzionamento dalla logica di layout; grazie a questa impostazione e ai componenti che Google ha recentemente fornito nella propria SDK (ViewModel, LiveData e RoomDatabase), per favorire l'implementazione di questo pattern, è possibile impostare il progetto in modo che il debug e la manutenibilità del codice siano veramente eccellenti.

CONSIGLIATO PER TE:

Applicazioni Web Progressive


Il pattern MVP (Mode-View-Presenter) invece, è più datato del primo e presenta un’impostazione e una logica più semplice del MVVM, ma in ogni caso molto funzionale, soprattutto per questioni di debug e separazione della gestione dei dati da quella di gestione del layout grafico. In pratica il cuore di questo pattern è il presenter: un componente (che a livello pratico viene definito tramite una classe) che si occupa di gestire i dati necessari all'applicazione e fornirli pronti per essere utilizzati dall'interfaccia grafica.

 

GOOGLE FIREBASE:
Una piattaforma web creata da Google per fornire agli sviluppatori degli utili strumenti per incrementare la produttività e le funzionalità che un’applicazione mobile può avere. In pratica Firebase è una piattaforma web che raccoglie un grande numero di funzionalità e strumenti che possono essere integrati all'interno di un'applicazione mobile (vedi il mio articolo su Google Firebase) e consente anche a piccoli sviluppatori di poter avere servizi quali database online, gestione degli account e degli accessi, etc., che normalmente comporterebbero un notevole dispendio di tempo e denaro per essere implementati.


ROOM DATABASE:
E’ una libreria introdotta al Google IO 2017 e permette di gestire in maniera rapida, semplice e intuitiva, il database locale della propria applicazione mobile. In pratica Room è una wrapper di SQLite che mette a disposizione dello sviluppatore semplici e potenti mezzi per poter manipolare un database SQL in maniera efficiente; infatti ora, la creazione e la gestione di un database, risulta veramente molto semplificata rispetto a prima e consente di risparmiare una notevole quantità di tempo e di implementare importanti funzionalità che consentono di ottenere prestazioni nettamente superiori. Tramite Room è possibile utilizzare il concetto di “Reactive Programming”: grazie alla possibilità di integrare la libreria RxAndroid, è possibile implementare una gestione del database basata su flussi di dati asincroni e avere un incremento enorme delle prestazioni e dell'esperienza utente durante l'utilizzo dell'applicazione.


RXANDROID:

RxAndroid è una libreria, creata dagli ingegneri di Netflix basandosi sulla libreria RxJava, che permette di impostare lo sviluppo dell'applicazione secondo una logica totalmente diversa dalla programmazione procedurale e funzionale, andando a introdurre il concetto di “flusso” e di una gestione totalmente asincrona dei flussi. In pratica grazie ad RxAndroid è possibile avere un’app con una reattività e una risposta agli eventi veramente sorprendente e, a mio avviso, è il mezzo che ad oggi consente di fornire all'utente la miglior esperienza d'uso. D'altro canto però, come detto in precedenza, con RxAndroid la programmazione viene fatta secondo concetti e logiche diversi da quelli a cui siamo abituati di solito, quindi bisogna conoscere a fondo la libreria e le sue logiche per non incorrere in bug che, molto spesso, possono portare alla perdita di un’enorme quantità di tempo per essere risolti.

 

KOTLIN:
Parliamo di un linguaggio di programmazione open source recentemente adottato da Google per programmare applicazioni Android. Chi conosce il linguaggio Swift adottato da Apple, probabilmente troverà molta familiarità programmando con Kotlin (com’è capitato a me, essendo principalmente uno sviluppatore iOS). E’ un linguaggio potente che permette di programmare un codice molto pulito, chiaro e compatto rispetto al buon vecchio linguaggio Java tutt’ora supportato. Grazie a Kotlin molti dei vecchi problemi, che potevano insorgere programmando in Java, spariscono, e le funzionalità che il linguaggio mette a disposizione del programmatore sono veramente tante, forse troppe, permettendo di sviluppare - con un occhio di riguardo per le prestazioni e la pulizia del codice - cosa che personalmente adoro e pretendo quando si sviluppa un'applicazione mobile.

comments powered by Disqus

Sei alla ricerca di uno sviluppatore?

Cerca nel nostro database


ALGORITMA

ALGORITMA progetta e sviluppa soluzioni software per ambienti desktop e mobile...

Vai al profilo

RAD Solutions S.R.L

Distributore GeneXus per Italia e Svizzera

Vai al profilo

MNM dev

Vai al profilo

Giulio Di Simine

Sono un giovane sviluppatore, ho 18 anni; sviluppo applicazioni da poco più di un anno e...

Vai al profilo