Sviluppare APP

Per una software house, lo sviluppo di APP per smartphone e tablet non è più una semplice opportunità, ma un requisito fondamentale per continuare a mantenere i propri prodotti nel mercato. L’uso delle applicazioni in mobilità ha superato di parecchio l’utilizzo tramite desktop; è vero che i software di business ancora resistono, ma la tendenza è incontrovertibile.

Come noi, immagino che molti altri piccoli produttori di software abbiano avuto i loro problemi nel trovare una tecnologia solida ed affidabile per lo sviluppo di APP. Condivido con voi questa esperienza.

Le nostre applicazioni hanno come target le aziende ed i loro utilizzatori. Non sviluppiamo giochi né APP dall’elevato contenuto grafico; solitamente ci basta il database, le notifiche push, la fotocamera ed il GPS. Questo ci avvantaggia di parecchio nella scelta della tecnologia, ma ce ne sono almeno 3 diverse.

1. Sviluppo nativo

Il primo vero smartphone è stato l’iPhone e senza dubbio gli strumenti di sviluppo per iOS sono completi di tutte le funzionalità. Il primo problema che sorge però è la piattaforma: serve obbligatoriamente un Mac per compilare il software mentre tutti noi utilizziamo Windows.

Il secondo problema è il linguaggio: per quanto l’ambiente di sviluppo Xcode sia molto bello, Objective-C è un linguaggio di programmazione di basso livello, come il C da cui si è evoluto. Tradotto significa tante e tante righe di codice.

Ammesso di tenere un Mac acceso solo per compilare ed imparare Objective-C, sorge il terzo problema: la riusabilità del codice. Terminata l’APP per iOS, il passo successivo è il porting su Android.

Ma in modo nativo, Android utilizza il linguaggio Java che con Objective-C non c’entra nulla! Tutto da riscrivere. Andando avanti per questa strada si scopre che le librerie sono completamente diverse tra una piattaforma e l’altra; linguaggio a parte è tutto diverso, dal database alle notifiche, sono due ambienti con nulla in comune.

Ben presto si scopre che per un gruppo di sviluppo con risorse limitate, l’uso degli ambienti nativi è impossibile. Sebbene offrano il massimo delle performance e dello sfruttamento del dispositivo (anche in termini hardware), sviluppare in modo nativo significa sostanzialmente duplicare tempi, costi e competenze.

Per qualsiasi applicazione di business significa essere lenti e poco reattivi alle richieste di cambiamento.

2. Sviluppo nativo con linguaggio condiviso

Nel 2016 Microsoft ha comprato Xamarin, la società i cui i fondatori portarono su Linux il linguaggio C# ed il .NET in generale. Insomma gente che di multipiattaforma ne sa parecchio.

Da oltre un anno Xamarin può essere utilizzato gratuitamente, tramite Visual Studio Community, per realizzare APP sia per iOS che per Android, usando sempre il linguaggio C#.

Ci è parsa la scelta giusta che apparentemente risolve tutti i problemi del caso precedente. Xamarin ha un potente tool che utilizza un Mac remoto per la compilazione, in modo da poter continuare a lavorare solo su Visual Studio. C# è il linguaggio con cui abbiamo sempre sviluppato, sin dall’anno 2000. L’ambiente si preoccupa di convertire automaticamente l’APP per iOS oppure Android, lasciando al programmatore l’unico compito di intervenire per sistemare differenze di basso livello tra una piattaforma e l’altra.

Perfetto? Ben presto qualcosa in Xamarin, almeno per le nostre necessità, non ha funzionato.

Nel ciclo di sviluppo di un software, ci sono interminabili fasi di test e debug, soprattutto quando si progetta l’interfaccia utente, dove spesso si fanno tentativi fino ad ottenere il risultato desiderato.

Ogni modifica al codice, richiede una compilazione ed una distribuzione su emulatore o dispositivo fisico. Per quanto veloce sia il PC, parliamo di minuti tra una modifica e l’altra. Tempi più che triplicati se la piattaforma è iOS, perché l’uso remoto del Mac è molto comodo ma anche molto lento. In una parola: snervante.

Infine per chi come noi ha solo competenze di business logic e spesso si affida ad un grafico esterno per lo studio dell’interfaccia utente, Xamarin diventa un problema. Separare le pagine (inteso come grafica) dal codice non è facile e la tecnologia Forms (basata su XAML) è ancora troppo acerba per sviluppare un interfaccia adeguata.

Con Xamarin abbiamo riutilizzato efficacemente il codice C# tra le piattaforme, ma il risultato finale è stato scarso.

3. Sviluppo “ibrido”

Il terzo cambio di tecnologia è qualcosa di ancor più snervante che le attese tra una compilazione e l’altra. Si ha sempre il dubbio di un ennesimo fallimento e si teme di aver investito poco negli strumenti precedenti.

Ma la “pigrizia” a volte è un fatto positivo: cercare il massimo risultato col minimo sforzo, spinge a cercare sempre nuove soluzioni!

Cosa vuol dire APP “ibrida”? Significa sostanzialmente che l’APP viene costruita con un meta-linguaggio di alto livello, uguale per tutte le piattaforme. Un emulatore, sviluppato nativamente, esegue poi l’APP su iOS o Android. Emulatore e codice sorgente vengono distribuiti insieme, in un pacchetto, dando l’illusione all’utente di stare eseguendo un APP come tutte le altre.

“Ibrido” significa anche che l’APP per utilizzare una funzionalità di basso livello (esempio la fotocamera) non potrà accedere alle funzioni native della piattaforma né sfruttare tutte le caratteristiche dell’hardware. Il programmatore deve passare da una libreria intermedia (un plugin) predisposta da altri e che espone alcune delle tante funzionalità possibili.

Vista così non sembra una strada interessante, ma il meta-linguaggio di cui parlo è HTML5/CSS/Javascript. Insomma quanto di più recente ed evoluto ci sia per sviluppare per il web. Si pensi a jQuery oppure Boostrap! L’ideale per coinvolgere un grafico e farsi progettare un’adeguata interfaccia utente, separando opportunamente le competenze e senza riscrivere o ritagliare alcun elemento.

L’emulatore è Apache Cordova: sostanzialmente un web server ed un browser incorporati che servono e renderizzano il codice HTML. Cordova può essere eseguito su Android, BlackBerry, iOS e Windows Phone. Le librerie per Android e iOS sono oltre 1.100 ed in continua espansione. E’ vero che non si può fare tutto, ma con oltre 1000 plugin si può fare quasi tutto.

Linguaggio moderno, asincrono (e per il mobile è fondamentale che lo sia), grafica separata, 100% di riusabilità del codice… ecco Cordova è davvero perfetto per le nostre esigenze.

Ma era rimasto ancora un problema: i tempi di compilazione dell’APP, tra una prova e l’altra.

Circa 3 anni fa, Apache Cordova si chiamava PhoneGap e Adobe (che aveva acquistato il progetto nel 2011) pubblicava su GitHub una semplice quanto straordinaria APP: PhoneGap Developer.

L’APP si scarica dagli store e si installa su iOS oppure Android. Quando parte chiede un indirizzo, quello dal quale scaricherà l’APP vera in fase di sviluppo. Poiché è tutto emulato, PhoneGap Developer può scaricare da un server un APP ancora in fase di sviluppo ed eseguirla in tempo reale su un dispositivo, come se fosse un browser web. Questo significa che quando il programmatore fa una modifica all’APP e preme CTRL+S per salvare sul proprio PC, in tempo reale l’APP cambia sul dispositivo, che può anche essere quello di un cliente dall’altra parte del mondo che fa da beta-tester. Insomma tempi di compilazione azzerati.

PhoneGap Developer è una idea, nella sua versione standard non viene distribuito con tutti i plugin necessari. Manca ad esempio SQLite, per noi indispensabile. Ma il progetto è open source e chiunque può scaricarlo, implementarlo e distribuirlo in forma potenziata sui propri dispositivi.

È ciò che abbiamo fatto con Ahead Developer (https://play.google.com/store/apps/details?id=it.ahead.appdeveloper) risolvendo definitivamente il problema dei tempi di attesa.

In conclusione

Sviluppare in modo ibrido è una scorciatoia che fa risparmiare sull’apprendimento del linguaggio e sulla costruzione dell’interfaccia grafica. Strumenti come PhoneGap Developer consentono inoltre di accelerare drasticamente i tempi di test e debug.

Come tutte le scorciatoie ha degli imprevisti e, per certe tipologie di applicazioni, Cordova non è adeguato; fortunatamente non è il nostro caso!

https://cordova.apache.org/

http://docs.phonegap.com/getting-started/2-install-mobile-app/

 

Chiama subito per maggiori informazioni +39 0113473770
oppure lasciaci i tuoi recapiti e sarai contattato il prima possibile:



 

Lascia un commento