Seppure di dimensioni contenute rispetto a quelli per smartphone, gli app store per orologi hanno già una dignità. Parliamo di come entrare nel più grande: Apple Watch ha più di diecimila app disponibili e oltre la metà del mercato.
Abbiamo intervistato Massimiliano Bigatti, programmatore di lunga esperienza che da tempo lavora anche su Apple Watch, per capire di più sulle problematiche di sviluppo per questa piattaforma.
Apogeonline: Quali sono le peculiarità principali della programmazione per watchOS? Soprattutto, quali sono le differenze più eclatanti rispetto alla programmazione per iPhone?
Massimiliano Bigatti: Lo sviluppo su watchOS, come ci si può aspettare, ha molti punti in comune con quello su iPhone o iPad, ma anche diverse differenze. iOS consente di scendere a un livello più basso di quello che è consentito su watchOS, per esempio creando viste o controlli personalizzati, che gestiscono in prima persona il rendering dei contenuti. Su watchOS si è invece limitati a utilizzare solo i componenti visuali supportati dal sistema. Un altro esempio: sebbene su iOS Apple spinga l’uso di file di interfaccia (Xib) e storyboard per la costruzione dell’interfaccia utente dell’applicazione, è possibile costruire quest’ultima esclusivamente utilizzando il codice. Anzi, tanti sviluppatori scelgono comunque questa strada e dalle informazioni che abbiamo si può ipotizzare che la stessa Apple faccia uso di questa tecnica nelle proprie applicazioni, probabilmente in misura maggiore in quelle introdotte per prime. Bene, su watchOS questo non è possibile ed è indispensabile utilizzare le storyboard per disegnare l’aspetto delle schermate e il loro collegamento logico.
La piattaforma è ancora giovanissima. In base alla tua esperienza, quali sviluppi potremmo aspettarci per il futuro?
watchOS affronta un compito difficile: realizzare applicazioni incredibili, performanti e accattivanti, con un hardware limitato. Qualcuno si aspettava l’introduzione di Apple Watch 2 all’evento di marzo 2016, ma questo non è avvenuto. I tempi sarebbero stati maturi, se si ragiona all’interno di un ciclo di aggiornamento annuale dell’hardware, al quale Apple ci ha abituato negli ultimi tempi. Ma può anche essere che Cupertino abbia una visione diversa per l’evoluzione del suo orologio.
Di fatto, le potenzialità della piattaforma software sono strettamente legate alle capacità dell’hardware sottostante. I framework watchOS, come WatchKit e soprattutto ClockKit, sono pensati e progettati per ottenere il massimo dell’esperienza d’uso possibile con l’hardware a disposizione. Guardando le API questo è evidente, perché problematiche simili sono risolte in modo ben diverso su iOS e soprattutto sul desktop, dove la potenza di elaborazione a disposizione è ben altra.
Con la maturazione dell’hardware mi aspetterei la revisione delle API nell’ottica di semplificare un po’ il lavoro allo sviluppatore a scapito dell’uso delle risorse, oltre ovviamente all’introduzione dei framework necessari per interagire con eventuali nuove caratteristiche hardware. È da mesi infatti che si vocifera di una prossima revisione di Apple Watch con telecamera frontale per consentire chiamate FaceTime (che a mio avviso richiederebbero comunque un certo incremento delle performance hardware): un nuovo sviluppo potrebbe quindi andare in questa direzione. Si può infine ipotizzare che in un futuro Apple possa rendere più “libero” lo sviluppo delle app, affrancando il programmatore dallo stretto perimetro delle storyboard: ma questa, oltre, che una questione legata alle performance, è a mio avviso anche una decisione politica non scontata.
Quali sono le prime tre priorità da considerare al momento di programmare una app per watchOS?
Come già accennato, la potenza di elaborazione è un vincolo forte sull’orologio di Cupertino; inoltre, come ben sappiamo, le dimensioni dello schermo sono limitate. Bisogna anche considerare che il tempo di interazione con Apple Watch è mediamente di cinque secondi, contro un tempo molto più elevato riscontrabile su iPhone. La prima cosa è quindi progettare con attenzione e cognizione di causa la soluzione che si intende implementare, considerando i vincoli di spazio e soprattutto di tempo imposti dall’orologio. È un’attività che richiede di uscire dalla mentalità di sviluppo per smartphone a cui siamo abituati per abbracciare una dimensione diversa, e più piccola. È necessario investimento in termini di conoscenze, al fine di capire con esattezza cosa è possibile e non è possibile fare con watchOS. Solo così facendo avremo il metro necessario per creare un’applicazione di successo.
In secondo luogo è necessario inquadrare, nello schema generale, il posto occupato dalle applicazioni per Apple Watch. Un modo di vedere le cose è il seguente: come l’orologio di Cupertino è un accessorio per iPhone, le app per Apple Watch sono una sorta di accessorio per le applicazioni iOS. È difficile che un’applicazione per l’orologio abbia l’appeal sufficiente a invogliare l’utente all’installazione anche se Apple, con l’integrazione dello Store nell’applicazione Watch, ha cercato di dare preminenza alla parte dell’applicazione destinata all’orologio. È sempre e comunque il connubio tra controparte iPhone e Apple Watch a creare la differenza, quindi è importante chiedersi che cosa offrirebbe l’applicazione sul telefono.
Infine, è importante tenere a mente che con l’introduzione di watchOS 2 il codice dell’applicazione per l’orologio gira su quest’ultimo. Di conseguenza la sincronizzazione dello stato deve avvenire con logica di programmazione distribuita; per fare questo Apple ha messo a disposizione il framework Watch Connectivity, che consente di scambiare messaggi e file tra telefono e orologio. Questo aspetto però aggiunge un certo livello di complessità che può creare qualche problema alle applicazioni non completamente banali. Si è parlato di sincronizzazione dello stato ma bisogna anche considerare che, offrendo iPhone maggior potenza di elaborazione, è buona pratica decidere di eseguire sul telefono in modo dinamico download e ottimizzazioni delle eventuali risorse audio/video utilizzate dall’applicazione. Quindi la necessità di utilizzare Watch Connectivity si presenta anche in questo caso come il maggior overhead in termini di programmazione.
Qual è il capitolo del tuo libro che ti è piaciuto di più scrivere?
L’esperienza è stata importante e sono legato a tutti i capitoli del testo, ma in particolare il Capitolo 11 (Contatti e calendari) è stato particolarmente piacevole. I framework Contacts ed EventKit sono gradevoli da utilizzare, anche nella versione ridotta e in sola lettura presente in watchOS. Apple ha la capacità di creare interfacce di programmazione pulite e coerenti che rendono gratificante lo sviluppo.
Quali insegnamenti arrivano dalla programmazione per un apparecchio con schermo molto piccolo e caratteristiche di interazione diverse da quelle cui siamo abituati?
La ridotta dimensione dello schermo obbliga lo sviluppatore a pensare agli elementi essenziali dell’applicazione. Non c’è spazio per decorazioni o elementi inutili. La funzionalità deve essere ridotta all’osso in modo da rientrare nello spazio a disposizione. Non si può pensare di adattare un’applicazione iPhone per girare su Apple Watch: bisogna liberarsi del bagaglio pregresso e ripensare il caso d’uso e l’operatività dell’utente, concentrandosi sulla funzionalità principale che si desidera offrire ed eventualmente a due funzioni accessorie secondarie.
Sebbene lo schermo sia piccolo, il sistema consente lo scorrimento verticale, ma questa è un’opzione da considerare con cautela in funzione dell’applicazione. Per esempio, Allenamento mostra nel libro i risultati di una sessione in una pagina a scorrimento, ma quella presentata nel corso del workout è fissa (oltre a utilizzare caratteri di dimensioni generose). Questo è un ottimo esempio di progettazione dell’interfaccia adeguata all’applicazione specifica, su uno schermo piccolo che potrebbe arrivare al massimo a una spanna dal naso, ma anche più lontano.
Apple ha mostrato di puntare molto con Apple Watch su salute e benessere. Che altri settori vedi promettenti dal punto di vista di uno sviluppatore watchOS?
Apple Watch è uno strumento che è sempre con noi e ci segue costantemente. Con questo in mente vedrei bene il settore delle applicazioni per la produttività, sia per l’elenco delle cose da fare ma anche per il tracciamento del tempo dedicato alle singole attività. Inoltre, non vedo l’ora che Apple introduca Apple Pay in Italia perché i pagamenti elettronici contactless mi intrigano molto. Un settore che invece non ritengo adatto all’orologio di Cupertino è quello dei giochi: molto meglio lo schermo più grande di iPhone o del Mac.