Chi sviluppa sa certamente meglio di noi cosa ciò comporti. Ore di lavoro di codice e altrettante di testing su un vasto numero di dispositivi. Il pensiero è rivolto al mondo Android, che presenta una nutrita varietà di hardware e software a cui badare, ma nemmeno iOS scherza, nel suo piccolo. iPhone 4, 4s, 5/5c, 5S, iPod touch di quinta generazione, iPad 2, 3rd gen, 4th gen e Air, iPad mini di prima e seconda generazione; questi solo considerando iOS 7. Se si sviluppa anche per iOS 6, entrano in gioco iPhone 3Gs e iPod touch 4G. Spese non indifferenti e soprattutto annuali, con l'acquisto dei nuovi prodotti. Un progetto potrebbe però cambiare tutto: Virtual.

virtual

Virtual, del quale TechCrunch ha ottenuto un'anteprima, è il frutto di anni di sviluppo da parte di Chris Wade, attivo agli esordi della scena jailbreak e dedicatosi poi a vari progetti, tra cui il progenitore dell'attuale. iEmu si prefissava di emulare iOS in uno stato completamente funzionante su qualsiasi hardware; una campagna fondi era stata avviata su Kickstarter con buone prospettive, salvo poi essere ritirata dallo stesso Wade per timore di ripercussioni legali. Nella sua nuova forma, ossia Virtual, è un mix di virtualizzazione ed emulazione. Le parti principali sono eseguite come macchine virtuali su server ARM, forniti da HP, mentre altri componenti sono stati emulati al fine di replicare il più possibile l'operatività reale. Ulteriore espansione rispetto ai piani del 2011 è costituita dal supporto ad Android, rendendolo così uno strumento multipiattaforma. Una buona serie di modelli e versioni degli OS a propria disposizione. L'accesso al servizio e ai vari dispositivi avviene tramite un qualsiasi browser.

virtualsteps

Il risultato dichiarato da Wade e dal team di sviluppo, nel quale si annovera Nicholas Allegra in arte "comex", è di prestazioni sensibilmente migliori rispetto alla semplice emulazione e un testing più accurato potendo contare su tutti o quasi gli elementi specifici che contraddistinguono ogni device, che non possono essere offerti dai più semplici simulatori offerti da Apple e Google nei loro SDK. Per lo sviluppatore Virtual si tradurrebbe in tempi e costi minori, con meno dispositivi da acquistare e configurare fisicamente. Nondimeno, un altro vantaggio sarebbe la possibilità di mettere alla prova le proprie apps su vecchie versioni di un sistema senza tentare downgrade nei propri telefoni o tablet. Un esempio meglio esplicativo riguarderebbe la necessità di testare la funzionalità di un'app su iPhone 4s con iOS 6, ma ne si ha uno aggiornato alla settima versione; Virtual verrebbe in soccorso offrendo prontamente un 4s dotato del passato OS. Il corredo di strumenti dedicato al testing si completa con registrazione delle sessioni con log dedicati, salvataggio in qualsiasi fase si desidera con possibilità di riprendere l'esecuzione da quel punto e condivisione dei risultati ottenuti.

Il servizio non sarebbe certamente la soluzione per tutti i casi: apps che fanno uso dei moduli fotografici, del GPS nonché videogiochi non potranno essere replicabili con dispositivi virtuali. Per il resto, come prodotti di produttività o anche di modifica di contenuti già salvati, si può prendere tranquillamente in considerazione. Allo stato attuale, ancora è difficile dire se saprà mantenere le promesse fatte: TechCrunch ha avuto la possibilità di vederlo per breve tempo in azione, ma demo controllate sono ben diverse da prove a tutto campo. Inoltre, almeno in questa fase iniziale di Beta, che conta già oltre 10.000 sottoscrizioni, la priorità viene data alla versione più onerosa di Virtual, quella cosiddetta "on-site", che prevede l'installazione di server e piattaforma di virtualizzazione direttamente nella sede del cliente, non certo alla portata dei piccoli sviluppatori. Altro argomento spinoso da valutare è quello legale: dubitiamo che Apple e Google, soprattutto la prima, non avranno da dire. Le speranze sono tante, l'ottimismo pure. Non ci resta che vedere se Virtual riuscirà nel suo obiettivo, con profonde potenziali conseguenze a lungo termine per lo sviluppo e il testing delle applicazioni.