Inizia con questo articolo la mia esperienza di sviluppo mobile web applications su dispositivo BlackBerry.
Il mio lavoro "canonico" consiste nello sviluppare soluzioni gestionali web based e nello studio di interfaccie uomo/macchina per la fruizione di tali software.
Da un paio di giorni mi è stato consegnato il Blacberry aziendale e la sfida che mi è stata proposta è di realizzare un'interfaccia mobile per l'applicazione gestionale aziendale.
Ho iniziato oggi alcuni test di sviluppo utilizzando come base una mia applicazione basata su CakePHP.
Tale applicazione permette a delle concessionarie automobilistiche di fruire di un proprio spazio applicazione per gestire la clientela (contatti) e la preventivazione di vendita automezzi.
Il primo obiettivo è la realizzazione di un'interfaccia semplificata per l'accesso mobile che consenta di eseguire le seguenti operazioni di base:
- Effettuare il Login.
- Visualizzare eventuali preventivi in scadenza.
- Visualizzare il database contatti.
- Effetturare ricerche tra i contatti.
Struttura MVC
Come ho accennato sopra utilizzo il framework CakePHP per lo sviluppo server-side e questo mi fornisce non poche facilitazioni prima di tutte la struttura MVC dell'intera applicazione.
Ho dunque iniziato lo sviluppo realizzando il controller "mobile" definendo i metodi di login, logout, index e contacts. Ho inoltre creato un layout dedicato all'interfaccia mobile che dovrà essere molto più leggera dell'interfaccia comune.
CakePHP mi è stato di essenziale aiuto per il riutilizzo di codice già testato per l'interfaccia applicazione/dati permettendomi così di dedicare tutto il tempo allo sviluppo dell'interfaccia xHTML/CSS/Javascript.
Navigazione GPRS:
Il primo grosso limite del Blackberry è la navigazione in sola modalità GPRS che limita fortemente la fluidità di utilizzo dell'applicazione realizzata.
Ad ogni modo ho potuto constatare tempi di attesa per le 3 pagine della mia interfaccia di circa 1 o 2 secondi. Inoltre ho notato che la pagina contenente l'elenco dei contatti, pur essendo molto più pesante della schermata di login impiega il medesimo tempo di caricamento dunque tale "delay" sembrerebbe causato non tanto dai dati scambiati quanto alle operazioni preeliminari di handshaking.
In definitiva ritengo che sia effettivamente possibile iniziare a sviluppare interfaccie web mobile che però risentiranno di una fluidità limitata rispetto alle equivalenti su computer.
BlackBarry e CSS:
Il browser predefinito di blackberry ha i CSS disabilitati di default. L'utilizzo di solo codice xHTML, anche se ben strutturato, non permette la realizzazione di un'interfaccia accattivante. E' dunque necessario navigare tra le opzioni del browser per attivare il supporto CSS.
Una volta attivato il supporto ho potuto utilizzare con successo i selettori di tag, id e classe anche annidiati esattamente come li uso riferiti ad un browser per computer.
Le prime limitazioni che ho potuto notare sono:
Box Model: Non esiste supporto per il padding ed il margin all'interno di box.
Links: Non è possibile eliminare la sottolineatura mentre è possibile utilizzare la pseudo classe "Hover".
BlackBerry e Javascript:
Come per i CSS anche il supporto Javascript deve essere attivato mediante configurazione del browser.
Il test effettuato è stato limitato e mi ha consentito di constatare che javascript è realmente supportato (ho fatto solo un "alert()") mentre il tentativo di caricare il framework jQuery ha provocato il blocco totale dell'applicazione browser!
Tra le impostazioni di configurazione del browser ho visto l'opzione Emulazione Internet Explorer ma evidentemente il supporto Javascript è ancora estremamente limitato.
Vantaggi e Svantaggi:
Vantaggi e svantaggi dello sviluppo di applicazioni web mobile si possono misurare rispetto allo sviluppo di applicazioni mobile "stand-alone" su dispositivi pda e palmari.
I primi grandi vantaggi sono direttamente ereditati dalla famiglia delle applicazioni web e riguardano:
- Indipendenza da installazioni software.
- Indipendenza dal dispositivo utilizzato (*)
- Disponibilità universale dell'applicazione (**)
- Velocità di sviluppo e abbattimento dei costi di sviluppo.
(*) E' comunque necessario utilizzare un dispositivo dotato di un browser web!
(**) E' necessaria una connessione web... sia da computer che da cellulare mentre le applicazioni stand-alone su palmare non possono essere installate su computer e viceversa!
Vorrei fare un approfondimento sulla velocità di sviluppo e sull'abbattimento dei costi. Tali affermazioni si basano sul fatto che è in gran parte possibile riutilizzare codice già scritto per le applicazioni "canoniche".
In particolare utilizzando framework come CakePHP ed applicazioni gestionali come JuniorCMS è possibile sfruttare componenti condivisi tra applicazione "computer" e applicazione mobile.
Ad esempio la prova di applicazione mobile descritta in questa pagina è stata realizzata in circa 30 minuti gran parte dei quali passata a decidere i colori da utilizzare per le schede utente.
Il principale svantaggio è invece causato dalla totale dipendenza dalla connettività.
Non essendoci installazione ed effettiva integrazione con il dispositivo ospite questa famiglia di applicazioni non possono utilizzare sistemi di caching di dati e successive sincronizzazioni che sono invece caratteristiche comuni delle applicazioni per pda (si pensi alla sola rubrica che viene sincronizzata con quella del computer).
Questo punto secondo me è uno svantaggio condiviso sia dalle applicazioni web mobile sia dalle applicazioni mobile "stand-alone" in quanto anche la sincronizzazione dati dipende dalla connettività e raggiunge facilmente quantità di trasferimento dati maggiore rispetto al traffico generato da un'interfaccia web-based.
Il futuro è AJAX?
I prossimi test che intendo eseguire su dispositivo Blackberry riguardano la possibilità di implementare interfaccie mobile AJAX based. Questa frontiera dovrebbe permettere il raggiungimento dell'ottimizzazione massima nello scambio dati abbattendo inoltre i tempi di caricamento delle pagine sul dispositivo.
Ma il browser di Blackberry permette l'utilizzo di AJAX?
