Il 12 e 13 Ottobre il nostro team iOS è stato a Verona per partecipare per il secondo anno consecutivo alla Pragma Conference: un momento di confronto e di formazione durante il quale approfondire nuovi temi e lasciarsi ispirare da nuove opportunità nell’ambito dello sviluppo su piattaforme iOS e macOS.
L’edizione 2016, della quale vi abbiamo raccontato le novità più interessanti, ha coinvolto più di 300 sviluppatori da tutto il mondo, 20 speaker con 20 talk e 5 workshop. Lo scorso anno abbiamo portato alcune delle novità e dei temi affrontati nei talk all’interno di nostri progetti quali Terranova, Original Marines e altri di cui vi racconteremo nei prossimi mesi.
Anche quest’anno la partecipazione è stata elevata, e la conferenza si è sviluppata su due filoni principali sui quali si sono focalizzati i talk in programma: da un lato interventi tecnici fortemente verticali, dall’altro il tema dell’esperienza utente.
Da questi due ambiti apparentemente sconnessi emerge un discorso più ampio sulla rilevanza assunta in questi anni dall’esperienza.
Nei talk più tecnici sono stati analizzati molti dei problemi ricorrenti nello sviluppo di soluzioni software, e sono stati proposti e individuati nuovi approcci di risoluzione che potrebbero diventare in poco tempo standard di fatto.
L’esperienza utente, focus che ha caratterizzato gli altri talk è stato invece raccontata attraverso alcuni dei temi trend degli ultimi mesi. In quest’ambito si situano ad esempio l’intervento di John Sundell sul suo framework per lo sviluppo di app e giochi, e quello di Sebastiaan de With sull’approccio di design che gli ha permesso di progettare e realizzare una delle camera app più note.
Anche se molto diversi tra loro e spesso focalizzati su soluzioni e nuovi progetti, i contributi presentati hanno infatti raccontato i modi in cui il passaggio ad un focus sull’esperienza abbia trasformato anche il campo dello sviluppo.
Per chi non avesse potuto partecipare, vi raccontiamo di cosa si è parlato nei talk della quinta edizione della Pragma Conference:
La Realtà Aumentata è una delle tecnologie che hanno assunto maggior rilievo nell’ultimo anno per le potenzialità che è in grado di generare in molti settori come sport, retail, travel e ovviamente gaming, diventando il driver principale di un mercato VR/AR che si stima raggiungerà i 108 miliardi di dollari nel 2021.
ARKit, il framework di casa Apple lanciato con iOS 11, permette di portare il concetto di realtà aumentata, finora relegato a dispositivi ad hoc, nella vita di tutti i giorni.
Con ARKit, iPhone e iPad possono analizzare la scena presentata dalla vista della fotocamera. ARKit può rilevare piani orizzontali nella stanza, tracciare e posizionare oggetti su punti più piccoli, stimare la quantità totale di luce disponibile in una scena per applicare la giusta quantità di illuminazione agli oggetti virtuali. Mediante l’utilizzo di SceneKit è possibile inoltre far sì che gli oggetti inseriti in realtà aumentata abbiano le stesse caratteristiche fisiche di oggetti reali come ad esempio la gravità o le collisioni.
Un’altra feature interessante è la Face Recognition, portata alle luci della ribalta da iPhone X con il suo FaceID, che consente attraverso API di tracciare gli elementi caratteristici di un viso (occhi, labbra, sopracciglia ecc).
L’anno scorso l’ex Lead iOS Developer di Spotify aveva dedicato il suo talk alla Pragma Conference al tema della backend-driven UI per iOS.
In questa edizione Sundell ha invece presentato il suo nuovo progetto Image Engine, un framework per la creazione di motori grafici 2D veloci ed altamente performanti che riduce le complessità e semplifica il debugging di alcuni elementi che lo sviluppo gaming porta, grazie all’utilizzo di librerie note agli sviluppatori di applicazioni utilities (UIKit e AppKit).
Il progetto, reso open-source e disponibile agli sviluppatori già al termine della conferenza con un perfetto annuncio in stile Apple, pur essendo ancora in fase di sviluppo, dimostra già delle performance interessanti sfruttando appieno le nuove tecnologie messe a disposizione dall’azienda di Cupertino nelle nuove versioni dei propri OS (es. Metal).
Sundell ha infatti messo a confronti i differenti strati dai quali è composta un’applicazione con animazioni ed un gioco per illustrare come la sua libreria permetta di usare i differenti strati di un’app per sviluppare giochi.
Sebastiaan de With, ex designer di Apple, per il suo contributo ha scelto di raccontare come la sua carriera e il susseguirsi di fallimenti e successi lo hanno portato al suo recente successo con Halide, app fotocamera che ha ritagliato il suo spazio in un settore (quello della fotografia mobile) ormai saturo.
Ciò che ne ha determinato il suo successo è stata l’attenta analisi delle abitudini del target di utenti dell’app, che gli ha permesso di ricreare la stessa esperienza di una macchina fotografica fisica, in quello che potremmo definire un approccio people-driven.
De With ha raccontato alla platea di come questo approccio sia maturato durante la sua esperienza in Apple e il lavoro di rebranding delle applicazioni di Rubrica e Find My Friends, nelle quali ha introdotto lo scheumorfismo, caratteristica che contraddistingueva le versioni di iOS fino all’arrivo della settima release.
“Error handling is the art of fail gracefully.”
L’intervento dedicato all’error handling si è focalizzato sull’importanza di una corretta gestione degli errori nel codice attraverso l’analisi di un’applicazione client-server.
La definizione delle modalità attraverso cui gestire gli errori è fondamentale per evitare non solo problemi di inconsistenza e stabilità nel software, ma anche che gli utenti, vivendo un’esperienza negativa, perdano fiducia nel prodotto.
È quindi fondamentale una corretta gestione degli errori al fine di garantire da un lato la stabilità del software e dell’altro fornire messaggi comprensibili all’utilizzatore finale. Nel caso di errori di rete questo si traduce in una gestione a basso livello, tipicamente già nel layer di networking.
Metaprogramming si riferisce ai diversi modi con cui un programma ha conoscenza e può manipolare se stesso. In linguaggi molto dinamici come Ruby questa tecnologia è utilizzata per creare nuovi flussi/comportamenti durante l’esecuzione del codice.
Linguaggi meno dinamici sono più limitati offrendo soltanto l’opportunità di analizzare il proprio codice (reflection) e operare delle scelte in base a questa conoscenza.
Tutte queste tecniche possono permettere ad un programma di implementare da sé porzioni di codice spesso ripetitive la cui stesura, altrimenti demandata al programmatore, non aggiungerebbe valore al software e anzi potrebbe essere fonte di bug.
Swift, non offrendo le caratteristiche tipiche di un linguaggio dinamico, ha uno spazio di manovra molto limitato.
La soluzione proposta da Krzysztof Zablocki nel suo talk è stata quella di realizzare un semplice tool che, attraverso un piccolo linguaggio di templating, fosse in grado di replicare alcune funzioni offerte dal metaprogramming, consentendo:
Il contributo di Matthias Tretter ha preso le mosse dal suo progetto Mindnode, un’app per la produttività disponibile sia per Mac che per iOS, per analizzare le best practice nello sviluppo di un progetto cross-platform.
Soprattutto per le applicazioni di produttività come Mindnode avere una presenza cross-platform è necessario e consigliabile, sia a livello tecnico sia a livello commerciale.
Una singola codebase permette infatti di:
Spostando il focus dall’analisi verticale sul codice cross-platform allo sviluppo in generale, Tretter ha poi definito alcuni dei punti chiave sui quali ogni sviluppatore dovrebbe basarsi, e cioè:
Soroush Khanlou ha approfondito durante la conferenza la sua modalità di estensione delle classi di sistema in Swift, una delle caratteristiche principali del linguaggio di programmazione creato da Apple, che permette di avere codice più leggibile, più potente e più espressivo, facendo sparire le classi di utilità.
Il suo approccio permette di identificare quali logiche possono essere espresse come estensioni delle classi di appartenenza e quali invece devono essere trattate come tipi separati.
Il vantaggio dell’uso delle estensioni è quello di evitare il riuso di codice in più parti dentro un’applicazione. Lo svantaggio è che l’uso esagerato di estensioni può rendere difficile il debugging o la lettura da parte di terzi.
Felix Krause, sviluppatore di Fastlane in Google, nel suo intervento ha approfondito i vantaggi di un codice sorgente liberamente consultabile per lo sviluppo software e per le aziende. In particolare, il suo intervento si è focalizzato su vantaggi che un approccio open può fornire, quali:
Tobias Due Munk durante il suo intervento ha mostrato il parallelismo e i punti di convergenza che esistono tra lo sviluppo di videogames e applicazioni mobile attraverso l’analisi di alcuni tool creati specificatamente per lo sviluppo di videogiochi.
Nel suo excursus ha esplorato alcuni aspetti del framework GameplayKit applicati a problemi comuni quali la generazione naturale di sequenze casuali di elementi, la ricerca all’interno di un grafo o il classico problema del path finding, cioè la ricerca del cammino tra due punti, cardine fondamentale in applicazioni come i navigatori.
Chris Eidhof ha affrontato l’interessante tema del declarative programming approfondendo l’uso della metodologia Redux nello sviluppo in Swift. Redux consente infatti di definire lo stato di un sistema attraverso l’uso di un singolo oggetto che diventa la sorgente di verità per l’applicazione sia lato UI sia di business logic.
Usando questa metodologia è possibile semplificare e rendere prevedibili dinamiche di flusso spesso complesse, che possono essere fonte di bug.
Le app viste come semplici utilities in grado di semplificarci la vita, che nel 2010 hanno visto un’esplosione – ricordate il there is an app for that? –hanno lasciato il posto ad esperienze sempre più immersive.
L’obiettivo è mettere l’utente al centro dell’esperienza ricorrendo ad interfacce ed interazioni più naturali, collegando il mondo digitale con la realtà di tutti i giorni attraverso l’uso di AR e VR e realizzando tecnologie in grado di rendere trasparente e privo di frizioni un mondo ormai intimamente interconnesso e complesso.
Anche nell’ultima edizione del Pragma è emersa chiaramente questa trasformazione in corso, che impatta non solo su chi progetta e realizza tecnologia, ma anche su come, da utenti, la viviamo ogni giorno.
Il team iOS Daniele Margutti, Federico Meloni e Matteo Nati
& Eleonora Scialanca, la nostra Digital Strategist