Nuove risorse per gli sviluppatori iOS

Apple ha rilasciato nella giornata di oggi nuove risorse molto utili per tutti gli sviluppatori iOS, in particolare per i designer e i grafici.

Si possono trovare nella sezione Resources della guida all’interfaccia grafica di iOS.

Apple ha reso disponibile per il download gratuito un file in formato PSD (Photoshop) e Sketch dove al suo interno si possono trovare tutti gli elementi dell’interfaccia grafica di iOS, da iPhone a iPad. Questa risorsa è davvero molto utile perché permette di poter creare il design di una UI/UX a partire proprio dall’esperienza che Apple ha creato.

Molto utili anche tutti i simboli e le icone di sistema, finalmente ufficiali e in formato vettoriale.

C’è da notare che Apple ha anche rilasciato la stessa interfaccia grafica in una veste “dark”, con sfondo nero e colore primario arancione.
Questa in realtà non è una colorazione di sistema, anche se presente nella UI dell’applicazione Watch.
Infatti gli sviluppatori non possono “attivare” alcuna versione “dark”, per questo è interessante vedere queste risorse perché si potrebbe assumere che Apple possa attivare questa nuova modalità come comportamento di sistema ed aprire pure le API agli sviluppatori.

Insomma, ottime notizie per tutti noi sviluppatori!

 

La programmazione e l’opensource

Ultimamente mi sono ritrovato a lavorare a vari progetti iOS sviluppati da terzi e di cui non detenevo i diritti del codice sorgente, cioè la maggior parte del lavoro era stato fatto da altri.

La cosa che mi è saltata subito all’occhio è stato il numero elevato di codice opensource utilizzato, potrei ipotizzare il 90% del codice totale.

Ad una prima analisi viene da esclamare “bello! ci sono già un sacco di cose pronte!” ma in realtà questa situazione mi mette a disagio. Stiamo programmando un software o stiamo assemblando i pezzetti fatti da altri cercando di farli coesistere?

Sono pienamente convinto che ci sia una grande differenza tra programmare e utilizzare codice opensource in modo massiccio e l’avvento di soluzioni come CocoaPods e affini forse sta incentivando questa mania.
Sono a favore dell’opensource e sono a favore dell’utilizzo del codice open nei progetti ma con parsimonia.

Nei miei progetti, quelli che creo per i miei clienti, il codice è al 90% mio e solo un 10% è codice opensource.

Qual’è il motivo? Semplice, si tratta di avere il massimo controllo del progetto. Ovviamente c’è del lavoro in più da fare ma questo mi permette di poter operare all’interno del codice del mio software in ogni maniera.

Ci sono alcuni punti durante la vita di un progetto che vanno presi in considerazione:

  1. Bugs. I software contengono sempre dei bugs e se il codice non è nostro, una volta scovato, è un problema risolverlo. Se utilizziamo codice opensource la procedura di fix è decisamente più lunga e talvolta controproducente.
  2. Aggiornamenti. Apple ci sta abituando a lavorare con un linguaggio di programmazione in continua evoluzione: Swift. Cosa accade quando toglierà il supporto a Swift 3 e dovremo passare a Swift 4? Se utilizziamo codice di qualcun altro è possibile che saremo costretti ad attendere. Ma il nostro cliente,  il nostro business e peggio ancora, il business del nostro cliente avrà tutto questo tempo?
  3. Manutenzione. Se il codice open che abbiamo utilizzato smette di essere mantenuto cosa accade? Passiamo ad altro!, potremmo dire, ma questo comporta del lavoro in più, chi lo paga? Altri potrebbero dire “ci facciamo nostro il codice e continuiamo a mantenerlo”, ma mantenere codice non nostro significa doverlo analizzare in profondità per conoscere ogni riga. Chi lo paga questo tempo?

Solo questi 3 punti mi bastano per capire che utilizzare codice opensource in modo massiccio all’interno dei progetti per i miei clienti non è una scelta saggia, né per me né per i clienti stessi che si aspettano alta professionalità e si affidano a questa per portare avanti il proprio business.

Altra nota negativa è che in questo modo stiamo crescendo programmatori con l’idea che la realizzazione di un software sia l’assemblaggio di pezzi di codice altrui.
A mio avviso è un grande danno, perché il mondo della programmazione, quello reale, quello dove si sta ore su ore davanti al codice per creare un software, è molto differente rispetto allo studiarsi le API di un framework su cui baseremo un software non sapendo minimamente cosa quel codice farà.

Mi ripeto, non sono contro l’opensource né contro l’utilizzo di quest’ultimo all’interno dei progetti. Va usato con parsimonia.

Buona programmazione!

Come diventare un programmatore iOS Swift

In molti mi chiedono come poter diventare programmatori iOS e quali sono i passi da fare.
Il mio consiglio ad oggi è quello di concentrarsi sul linguaggio di programmazione Swift al fine di averne la piena conoscenza.

Sono convinto che questo linguaggio si espanderà molto fino ad arrivare anche su altre piattaforme in modo produttivo e quindi conoscerlo ed averne la maestria sarà un grande vantaggio.

Ma perché proprio Swift?

Il nuovo linguaggio ideato da Apple sta riscuotendo un grandissimo successo ma alla base c’è una scelta ponderata. Ad oggi Swift è il linguaggio di programmazione di default per i sistemi Apple, non obbligatorio ma con il tempo il supporto ad Objective-C sarà sempre meno frequente.

Questo non significa che non dobbiate conoscere almeno i principi di programmazione Objective-C. Anzi, sarà fondamentale per comprendere alcuni framework e per poter essere in grado di lavorare anche su codice più datato.

Se il vostro obiettivo è quello di lavorare nel mondo delle applicazioni iOS dovrete essere preparati nel caso in cui vi sarà richiesto di mettere le mani su applicazioni già esistenti che nel 90% dei casi saranno scritte in Objective-C.

I primi passi da fare

Questo articolo è scritto per chi ha già una base di conoscenza della programmazione ad Oggetti e dei pattern più usati come MVC (Model-View-Controller).

A questo punto potete addentrarvi nel magico mondo Apple e la prima cosa da fare è studiare la documentazione sull’architettura di iOS.
Una volta appresa potete passare alle linee guida di design di iOS e come ultima parte le linee guida del Review Team che per renderla più interessante e alla portata di tutti, Apple ne ha anche creato una versione a fumetto.

A questo punto potete passare allo studio dei linguaggi di programmazione, Swift e Objective-C.

Libri

Il primo libro da leggere è sicuramente la Guida di Apple su Swift che è possibile anche avere in versione iBook, totalmente gratuito.

Una volta presa dimestichezza con il linguaggio potete iniziare e leggere il libro Advanced Swift di objc.io che personalmente lo reputo una piccola perla insieme a Functional Swift sempre di objc.io. Questi due libri hanno un prezzo di $ 39,00 l’uno.

Da tenere presente anche i libri di Ray Wenderlich che spaziano dallo sviluppo di applicazioni fino a quello di videogiochi.

Video

Ogni anno Apple organizza la WWDC (World Wide Developer Conference) che è un evento molto importante per ogni sviluppatore. All’interno di questo evento vengono solitamente presentati i nuovi sistemi operativi e le ultime tecnologie. Durante i 5 giorni vengono fatti degli speech su argomenti ben precisi riguardanti le novità appena introdotte. Potete vedere quindi tutti i loro video sul portale Apple Developer.

Alla Stanford University ogni anno organizzano un corso di sviluppo iOS che poi mettono a disposizione a chiunque, lo trovate a vostra disposizione su iTunes.

Anche l’Università di Pisa ha organizzato un corso di sviluppo iOS, non è aggiornato all’ultima versione ma è comunque molto utile. Potete trovarlo anch’esso su iTunes.

Anche Ray Wenderlich nel suo ottimo archivio ha molti video corsi interessanti e che dovete assolutamente vedere.

Corsi

Ci sono moltissimi corsi di formazione per il mondo iOS sia online che offline. Non ho mai avuto l’opportunità di conoscere le persone che li organizzano quindi non so dirmi qual’è il migliore. Vi faccio un elenco di quelli più famosi.

Un progetto molto interessante e che personalmente seguo è Talks.io sempre dei ragazzi di objc.io dove trattano argomenti specifici in Swift cercando di insegnare e discutere sulle soluzioni migliori da adottare durante lo sviluppo.

Se invece siete di Pisa, Lucca, Livorno o d’intorni, nel corso del 2017 ci saranno novità riguardanti lo sviluppo di applicazioni iOS al Talent Garden di Pisa. Se siete interessati a corsi, workshop e seminari potete iscrivervi alla newsletter e riceverete le novità al riguardo.

Blog

Anche di blog che parlano di sviluppo iOS e Swift ce ne sono tantissimi. Personalmente seguo gli issues di objc.io (anche se ad oggi non stanno portando avanti il progetto) e il blog di Ray Wenderlich.

Da tenere sempre a portata di mano è il blog di Apple su Swift così come il blog We ♥ Swift.

Come ultima risorsa ma non meno importante vi consiglio di tenere a portata di mano il link delle Risorse per gli sviluppatori di Apple dove potete trovare sempre le ultime novità.

Se avete domande o ogni altra necessità potete sempre contattarmi.

Quanto costa e come realizzare un’applicazione per iOS o per Android

Ho deciso di riprendere l’argomento che avevo già trattato in passato perché nel frattempo sono cambiate molte cose e quindi è necessario aggiornarsi.

Il mercato delle applicazioni per SmartPhone (iPhone, iPad, Android in generale) si è espanso e nel frattempo sono nati nuovi tipi di dispositivi come i Tablet, gli SmartWatch e le SmartTV.
Ad aggiungersi sono nate anche nuove tecnologie di sviluppo che ci permettono di abbassare drasticamente i costi.

Fino a 5-6 anni fa mettere un’app in uno Store, sia App Store che Google Play, ci dava la certezza di avere dei buoni download ed una buona visibilità, la concorrenza non era così spietata e quindi potevamo pensare ad avventurarci in questo mondo a fronte di un costo abbastanza elevato ma comunque con dei ritorni quasi certi.

Oggi le cose si sono invertite. Sviluppare un’app non è più così costoso o almeno ci sono metodi che permettono di far risparmiare molto ma è altrettanto molto difficile avere dei buoni dati di download e quindi dei buoni profitti.

È necessario quindi affrontare il progetto in modo più intelligente e più orientato al marketing.

Come realizzare un’app?

Qui entra in gioco la prima parte, come poter sviluppare un’applicazione affinché funzioni realmente, sia apprezzata dal pubblico e permetta di avere quei profitti tanto desiderati.
Intanto alla base deve esserci un buon piano marketing che dia la giusta visibilità al progetto.

Dopo di che è necessario affidarsi ad un Team di sviluppo adeguato, che sappia analizzare correttamente l’app e il progetto da realizzare e sappia prendere le giuste decisioni. Queste infatti si rifletteranno sia in modo imminente durante la vendita dell’app sia in seguito durante la sua manutenzione nel tempo.

Ci sono fondamentalmente due metodi per fare un’applicazione:

Realizzarla in modo Nativo

  • Significato
    • Sviluppare l’applicazione utilizzando sia il linguaggio di programmazione che l’SDK della casa costruttrice del dispositivo. Per iOS significa sviluppare con i linguaggi Objective-C o Swift utilizzando direttamente l’SDK di Apple. Per Android invece significa sviluppare con il linguaggio Java utilizzando l’SDK di Google.
  • Pro
    • Le applicazioni realizzate in questo modo sfruttano al 100% l’hardware di ogni device, senza alcun limite. Significa poter realizzare praticamente ogni cosa (con i limiti del caso), accedere ad ogni risorsa e avere a disposizione tutta la potenza dei device.
  • Contro
    • Ogni versione dell’app, iOS e Android, devono essere sviluppate indipendentemente ed è necessario avere degli sviluppatori o un Team competente per le due risorse, i costi quindi sono più alti.

Realizzarla in modo Ibrido

  • Significato
    • Sviluppare l’applicazione utilizzando un linguaggio ibrido come il linguaggio di programmazione Web (HTML, CSS, Javascript). Questo viene interpretato da un browser che simulerà il comportamento di un’applicazione nativa.
  • Pro
    • Le applicazioni realizzate in questo modo hanno il privilegio di poter essere sviluppate usando un codice unico che poi sarà compilato per ogni device. I costi vengono ridotti dal fatto di poter realizzare un’unica applicazione che poi girerà su ogni dispositivo.
  • Contro
    • Proprio per la sua caratteristica di simulazione questo genere di applicazione è più limitato e quindi ha un accesso alle risorse e alle prestazioni limitato.

Il Team di sviluppo al quale vi rivolgerete dovrà scegliere quale metodo utilizzare in base al tipo di applicazione.
Personalmente preferisco lavorare in modo Nativo per poter sfruttare a pieno ogni device e poter realizzare un’app davvero innovativa ed unica. Ma queste decisioni comunque sono da prendere in base al progetto, al budget e a molti altri aspetti.

Quanto costa realizzare un’app?

Come abbiamo visto prima il costo cambia in base al metodo di sviluppo.
Ma ci sono anche altri aspetti da valutare. Intanto partiamo con il dire che tutto dipende dal tempo che servirà per realizzarla.
Di base, più complessa è l’app e più tempo servirà, quindi il costo sarà maggiore.

I punti da analizzare sono:

  • Funzionalità di network (i dati saranno presi dal web? dobbiamo gestire utenze (login/registrazione)?
  • Interfaccia grafica: Realizzazione grafica
  • Interfaccia grafica: Realizzazione esperienza utente (animazioni, funzionalità grafiche particolari, schermate per la manipolazione dei dati, ecc.)

Questi tre punti sono quelli che inizialmente possono influire sui costi.
Implementare funzionalità di rete complesse come la registrazione utente necessitano di tempo (tempo di analisi, di sviluppo e di testing).
Anche creare interfacce grafiche complesse aumentano il tempo di sviluppo, invece utilizzare la UI di sistema è più economico; non in tutti casi è la scelta migliore.

Un altro fattore da valutare è il Team di sviluppo. Più esperienza c’è e meno tempo utilizzeranno per realizzare il prodotto e quindi sarà possibile sia risparmiare che investire il tempo per creare un prodotto migliore.

È vero, non sempre è così, anzi molti grandi aziende che si occupano di sviluppo applicazioni hanno costi davvero alti. Ma vale la pena farsi fare un’analisi e un preventivo.

E quindi quanto costa? Impossibile dirlo senza sapere cosa c’è da realizzare ma posso sbilanciarmi dicendo che per un piccolo progetto è necessario almeno un mese intero di lavoro, per una singola versione Nativa (iOS o Android) o per le due versioni in modo Ibrido.

Ovviamente lo sviluppo di un software è molto più complesso di quello che ho descritto qui sopra, ma volevo darvi un’idea delle cose che dovete prendere in considerazione nel momento in cui volete sviluppare un’app per la vostra azienda o un’app per un vostro progetto.

Se avete necessità di fare un preventivo potete scrivermi.

Nice APP – Realizzazione Applicazioni Mobile

Come avrete notato il blog ha subìto qualche cambiamento.
Dopo un anno e mezzo ho deciso di rimettermi a sviluppare applicazioni. Non starò a dirvi il perché, sappiate solo che amo davvero farlo, amo programmare e amo farlo per i dispositivi Apple.

Abbiamo realizzato il sito niceapp.it che spiega nel dettaglio che cosa facciamo e il nostro metodo di lavoro.
La mia specializzazione è iOS ed è quello che personalmente e fisicamente farò.

In questo blog quindi parlerò di argomenti molto tecnici, UI/UX, Swift e quindi programmazione. Mentre su NiceAPP discuterò di argomenti relativi al marketing e alle scelte che vanno fatte prima, durante e dopo lo sviluppo di un’applicazione.

A presto quindi!