<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>For a Better Web - idee e pensieri per un web migliore</title>
	
	<link>http://www.forabetterweb.com</link>
	<description>For a Better Web :  idee &amp; pensieri per un web migliore</description>
	<lastBuildDate>Fri, 26 Aug 2011 08:09:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/forabetterweb" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="forabetterweb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Il web su misura</title>
		<link>http://www.forabetterweb.com/2011/08/il-web-su-misura/</link>
		<comments>http://www.forabetterweb.com/2011/08/il-web-su-misura/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 08:09:15 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Web e innovazione]]></category>
		<category><![CDATA[adaptive web]]></category>
		<category><![CDATA[adattivita]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=426</guid>
		<description><![CDATA[Siti di viaggi online che ci propongono vacanze nelle località che abbiamo sempre sognato. Reader RSS che  sanno che tipo di notizie vogliamo leggere appena arrivati a lavoro. E ancora, applicazioni che trovano un locale cool nelle vicinanze e ci dicono anche se questo locale piace ai nostri amici. Tutto questo (e molto altro) è il web personalizzato. In questo articolo scopriremo di cosa si tratta, come funziona e vedremo alcuni esempi tratti da applicazioni che usiamo tutti i giorni.]]></description>
			<content:encoded><![CDATA[<p>Vi ricordate questa scena di &#8220;<a title="IMDB - Minority Report" href="http://www.imdb.com/title/tt0181689/" target="_blank">Minority report</a>&#8220;, film di Steven Spielberg del 2002?</p>
<p><object style="width: 425px; height: 350px;" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="quality" value="autohigh" /><param name="src" value="http://www.youtube.com/v/oBaiKsYUdvg&amp;fs=1&amp;hl=it_IT&amp;color1=0x3a3a3a&amp;color2=0x999999" /><embed style="width: 425px; height: 350px;" type="application/x-shockwave-flash" width="425" height="350" src="http://www.youtube.com/v/oBaiKsYUdvg&amp;fs=1&amp;hl=it_IT&amp;color1=0x3a3a3a&amp;color2=0x999999" quality="autohigh"></embed></object></p>
<p>Il protagonista &#8211; Tom Cruise &#8211; cammina in un centro commerciale dove, grazie ad un sistema di scansione della retina, viene identificato da cartelloni pubblicitari &#8220;intelligenti&#8221; che gli propongono pubblicità personalizzate, chiamandolo anche per nome. Fantascienza? Non proprio&#8230;</p>
<p><strong> </strong></p>
<div id="attachment_463" class="wp-caption alignright" style="width: 201px"><img class="size-medium wp-image-463 " title="Pubblicitá personalizzata su Gmail" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/gmail-personalized-ad-191x300.jpg" alt="Esempi di annunci pubblicitari personalizzati su Gmail" width="191" height="300" /><p class="wp-caption-text">Annunci proposti da Gmail mentre leggevo una newsletter sullo sviluppo Javascript. Personalizzati in base al contenuto della mail e al mio profilo.</p></div>
<p>Su Gmail riceviamo continuamente piccoli annunci pubblicitari: se facciamo attenzione, noteremo che quasi sempre questi annunci non sono casuali, ma sono <em>attinenti al contenuto della mail</em> che stiamo leggendo. Google &#8211; con la piattaforma <em>AdWords</em> &#8211; propone<a title="Annunci in Gmail e dati personali - Gmail blog" href="https://mail.google.com/support/bin/answer.py?answer=6603" target="_blank"> inserzioni personalizzate </a>in base al contenuto che stiamo leggendo (riceviamo una mail di un nostro amico che ci propone un viaggio a Madrid? Ecco che arriva la pubblicità per un hotel in città a prezzo scontato!) e anche in base al nostro profilo che l&#8217;azienda di Mountain View traccia continuamente.</p>
<p>Cosa c&#8217;é di diverso dalla scena del film? Gli scanner della retina non sono ancora stati installati nei centri commerciali, ma la tecnologia oggi a disposizione é tuttavia più che sufficiente perché uno scenario del genere non sia solo plausibile, ma anche realizzabile. Ed é quello che sta accadendo sul web già adesso, dove non serve nessuna scansione dell&#8217;occhio per identificarci. I futurologi che Spielberg aveva consultato per la realizzazione del film sapevano bene a cosa andavamo incontro: la <em>personalizzazione delle informazioni</em>. Sul web possiamo andare oltre e parlare di <em>personalizzazione della user experience.</em></p>
<p>Tentare di adattare l&#8217;esperienza dell&#8217;utente non è nulla di particolarmente innovativo (i sistemi <a title="File PDF: &quot;From adaptive hypermedia to the adaptive web&quot;" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.6687&amp;rep=rep1&amp;type=pdf" target="_blank">adattativi</a> esistono dall&#8217;inizio degli anni &#8217;90), ma le tecnologie a disposizione oggi e, soprattutto, i dati che ci riguardano reperibili in rete non sono mai stati cosi ricchi ed accessibili.</p>
<p>Un esempio banale? Ogni volta che accediamo ad <a href="http://www.amazon.com" target="_blank">Amazon</a> con il nostro account, il <em>sistema di raccomandazione</em> del sito ci propone dei prodotti che &#8220;pensa&#8221; ci possano interessare. Come fa? Provate a pensare al sistema di raccomandazione come ad un negoziante di fiducia che conosce le nostre abitudini d&#8217;acquisto, cosa  abbiamo già comprato, i nostri interessi, la nostra propensione a spendere, ecc. Tutte queste cose &#8211; vi chiederete &#8211;  come le può sapere?</p>
<p>Il flusso incessante di informazioni che ci riguardano sul web (ció che diciamo di noi sui <em>social network</em>, i nostri acquisti online, le  ricerche fatte su Google, i checkin su Foursquare, ecc) va a comporre un<em> puzzle</em> che rappresenta la nostra personalità online. Il compito dei <em>sistemi adattativi</em><em> </em>é ricomporre questo puzzle partendo dai singoli pezzi che hanno a disposizione, <em>privacy</em> permettendo. Per sintetizzare:</p>
<blockquote><p>Per <strong>web personalizzato o adattativo</strong> intendiamo la capacità di siti o applicazioni di adattare  la User Experience (contenuti, interfaccia, grafica, navigazione, ecc)  in base a fattori come il profilo utente, il contesto, le interazioni sociali, il device utilizzato, ecc.</p></blockquote>
<p>Come avviene questo processo? E soprattutto, a partire da quali informazioni? Il punto di partenza è solitamente il profilo utente: vedremo tuttavia, senza entrare in dettagli tecnici, che ci sono altri fattori da tenere in considerazione.</p>
<h2>1. Profilo utente</h2>
<p>La maggior parte dei sistemi adattativi usa questo tipo di dati per proporre contenuti personalizzati. Informazioni semplici come fascia demografica, sesso, occupazione e interessi personali, ma anche più complesse e dettagliate, come un film che ci è piaciuto particolarmente o un luogo che abbiamo visitato e ci ha colpiti. Da dove provengono questi dati? Il metodo più semplice consiste nel proporre <strong>questionari</strong> da compilare all&#8217;utente. Tuttavia, nessuno ha voglia di compilare lunghi e noiosi questionari. I designer si sono quindi ingegnati per trovare soluzioni creative alternative per ottenere le stesse informazioni, in modo più diretto e coinvolgente.</p>
<div id="attachment_481" class="wp-caption aligncenter" style="width: 430px"><img class="size-full wp-image-481 " title="Mappa luoghi visitati Tripadvisor" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/Tripadvisor-map.jpg" alt="La mappa con i luoghi visitati nella home page di Tripadvisor" width="420" height="321" /><p class="wp-caption-text">Tripadvisor chiede ai propri iscritti di compilare una mappa con i luoghi visitati, preferiti e quelli che ci piacerebbe visitare. Ci invoglia a compilarla mostrando quella dei nostri amici (estratti da Facebook). Un metodo alternativo ad una scomoda form per ottenere informazioni preziose da utilizzare per la personalizzazione</p></div>
<p>La maggior parte delle volte, invece, questi dati vengono dedotti in modo &#8220;<strong>implicito</strong>&#8220;. Clicchiamo &#8220;<em>mi piace</em>&#8221; o &#8220;<em>+1</em>&#8221; su una pagina? Stiamo insegnando al sistema (sia esso Google, Facebook o quant&#8217;altro) qualcosa sui nostri interessi personali.</p>
<p>Nemmeno i <strong>risultati dei motori di ricerca</strong> sono esenti dalla personalizzazione. Google traccia il nostro profilo (sia che siamo loggati o meno) e usa fino a  <em>57 </em>indicatori diversi (ricerche precedenti, device, luogo, +1, ecc) per <a title="Personalized search - Google Help" href="http://www.google.com/support/accounts/bin/answer.py?answer=54041" target="_blank">personalizzare il ranking dei risultati</a>. Google non è più uguale per tutti.</p>
<p>Molti siti ci consentono di registrarci <strong>connettendo</strong> i nostri account sui social network (Facebook, Twitter e, molto presto, Google+). Quando scegliamo questa modalità, non stiamo solo evitando una noiosa form di registrazione, ma stiamo anche fornendo al sito &#8211; la maggior parte delle volte &#8211; accesso ai nostri dati personali, che verranno estratti dal nostro profilo e usati per personalizzare la User Experience. Abbiamo indicato i nostri film preferiti nei nostri interessi di Facebook? Bene, un sito come Netflix (servizio per la visione di film in streaming che attualmente possiede uno dei migliori sistemi di raccomandazione esistenti) usa anche questi dati per proporci i film di nostro gradimento.</p>
<div id="attachment_478" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/08/Recommendations.jpg" target="_blank"><img class="size-full wp-image-478 " title="Film raccomandati in Netflix" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/Recommendations.jpg" alt="Una schermata di esempio dei film raccomandati da Netflix" width="600" height="430" /></a><p class="wp-caption-text">Netflix propone delle raccomandazioni in base ai film che abbiamo visto in precedenza, ai voti che gli abbiamo assegnato e al nostro rating dei generi.  Usa anche i nostri dati estratti da Facebook (es. interessi, film visti, pagine), se forniamo l&#39;accesso all&#39;account</p></div>
<p>La personalizzazione sulla base delle nostre informazioni personali è probabilmente la più potente: le pubblicità più mirate ed efficaci sono quelle che si trovano su Facebook. Sembrano quasi sempre adatte a noi e quello che ci interessa. Gli algoritmi che le selezionano &#8220;leggono&#8221; i ricchi dati che ci riguardano in possesso del social network e ci <em>riconoscono</em>, proprio come i tabelloni pubblicitari di Minority Report.</p>
<h2>2. Contesto d&#8217;uso</h2>
<div id="attachment_486" class="wp-caption alignright" style="width: 174px"><img class="size-full wp-image-486 " title="Foursquare App" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/Fsq1.jpg" alt="App di Foursquare per iOS: pagina di ricerca luoghi" width="164" height="250" /><p class="wp-caption-text">La pagina &quot;Luoghi&quot; di Foursquare ci propone i luoghi e gli specials più interessanti vicini alla nostra posizione</p></div>
<p>&#8220;Contesto&#8221; è una nozione dai contorni abbastanza sfumati: nel nostro caso, per semplificare un po&#8217; le cose, possiamo considerarlo come il <em>luogo e il periodo temporale </em>in cui stiamo utilizzando un&#8217;applicazione. Cosa significa quindi personalizzare la nostra esperienza in base al contesto? Facciamo alcuni semplici esempi.</p>
<p><a title="Foursquare - Home page" href="http://www.foursquare.com" target="_blank">Foursquare </a>ci propone luoghi interessanti e <em>Specials</em> (offerte speciali), calibrandoli sulla nostra <strong>posizione fisica.</strong> Nulla di particolarmente complicato, che è stato però reso possibile da un&#8217;innovazione tecnologica: il sensore GPS installato negli smartphone. Aziende come <a title="Groupon Italia" href="http://www.groupon.it" target="_blank">Groupon</a>, hanno puntato tutto fin da subito sulla pubblicazione di offerte e sconti <em>personalizzati </em>per le varie città, in modo da fornire  al proprio utente solo le informazioni che erano veramente rilevanti per il suo contesto.</p>
<p>Applicazioni più sofisticate potrebbero invece pensare di fornire contenuti adattati alla <strong>fascia oraria</strong>. Immaginiamo un <em>feed reader</em> &#8220;intelligente&#8221;, che raccomanda contenuti differenti quando di mattina ci troviamo a lavoro (articoli legati alla nostra professione) oppure la sera o nel week-end a casa (articoli riguardanti i nostri hobby, eventi, programmi TV) proprio per fornirceli nel momento in cui è più probabile che verranno apprezzati.</p>
<h2>3. Device</h2>
<p>Negli ultimi anni, abbiamo assistito ad un aumento vertiginoso dei dispositivi connessi in rete: una crescita destinata a diventare ancora <a title="The Internet of Things [INFOGRAPHIC] - Cisco Blog" href="http://blogs.cisco.com/news/the-internet-of-things-infographic/" target="_blank">pi<span style="text-decoration: underline;">ù</span> veloce nel prossimo decennio</a>. Il PC viene via via rimpiazzato da una marea di nuovi device: smartphone, cellulari, tablet, Internet-TV, ecc sono mezzi sempre più utilizzati per accedere a Internet. In più, le interfacce <a title="Multi Touch (Wikipedia)" href="http://it.wikipedia.org/wiki/Multi-touch" target="_blank">multi-touch</a> hanno rivoluzionato il nostro modo di interagire con il mondo digitale, rendendolo più diretto e <em>fisico</em>.</p>
<p>E&#8217; ormai quindi un requisito essenziale, per il progetto di un&#8217;applicazione, la capacità di adattarsi al dispositivo attraverso la quale verrà usata, alle costrizioni che introduce, alle opportunità che offre, ai differenti <em>form factor</em>. Non si tratta solo di applicare principi come <a title="Responsive Web Design (A List apart)" href="http://www.alistapart.com/articles/responsive-web-design/" target="_blank">responsive web design</a> o pattern per la progettazione multi-touch, ma anche di capire come e perché verrà usata l&#8217;applicazione con un certo device. Ricordandoci quindi anche <em>dell&#8217;utente </em>che la sta utilizzando.</p>
<p>Proviamo a confrontare la versione desktop e quella mobile di <em>Foursquare</em>: le azioni a disposizione dell&#8217;utente sono completamente diverse.</p>
<ul>
<li>Nella<em> versione mobile</em> l&#8217;accento è posto sulla ricerca di luoghi (<em>venues</em>), in cui fare checkin, leggere e dare consigli (<em>tips</em>), ecc. Altre funzioni, come amici, statistiche, ecc sono solo secondarie o del tutto assenti.</li>
<li>La <em>versione desktop</em> è molto diversa e &#8211; data la sua natura statica &#8211; la ricerca di luoghi non è nemmeno disponibile e si enfatizza la gestione della cerchia sociale (<em>friends</em>) e delle statistiche (<em>badge, stats, history</em>)<em>.</em></li>
</ul>
<p>I progettisti hanno quindi capito e messo al centro della progettazione i <strong>bisogni fondamentali </strong>degli utenti dei differenti device.</p>
<div id="attachment_513" class="wp-caption aligncenter" style="width: 650px"><img class="size-full wp-image-513" title="Foursquare : versione desktop" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/foursquare-desktop.jpg" alt="Foursquare : versione desktop" width="640" height="493" /><p class="wp-caption-text">Il sito di Foursquare come appare per computer standard. L&#39;enfasi è posta sugli aspetti sociali dell&#39;applicazione, sulle statistiche e la gestione degli amici</p></div>
<div id="attachment_514" class="wp-caption aligncenter" style="width: 490px"><img class="size-full wp-image-514" title="Foursquare: versione per iOS" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/foursquare-mobile.jpg" alt="Foursquare: versione per iOS" width="480" height="354" /><p class="wp-caption-text">In Foursquare mobile (qui vediamo l&#39;app iOS) la funzione preminente è &quot;checkin&quot; (assente in versione desktop). Abbiamo anche altre funzioni relative ai luoghi (&quot;esplora&quot;, &quot;to-do list&quot;). La gestione degli amici e le statistiche sono invece meno evidenti.</p></div>
<h2>4. Relazioni sociali</h2>
<p>Basandosi sui dati riguardanti la nostra &#8220;rete sociale&#8221;, alcuni sistemi possono personalizzarsi in modo molto sofisticato. Il criterio più semplicistico può essere riassunto cosí:  &#8221;<em>quello che piace ai nostri amici è probabile che piaccia anche a noi&#8221;</em>. Per questo le<strong> </strong>informazioni <em>di rete</em> sono così importanti: capire quali interazioni abbiamo e con chi, cosa piace alle persone nella nostra cerchia, quali attività svolgiamo con essi, ecc.</p>
<p>Un esempio di sito che usa le informazioni sociali è <a title="TripAdvisor.com" href="http://www.tripadvisor.com" target="_blank">TripAdvisor</a>. Una volta che decidiamo di connettere il nostro account con Facebook ci verrà chiesto l&#8217;accesso, oltre ai soliti dati personali, anche ai dati riguardanti la nostra rete sociale. Dopo questa procedura, l&#8217;homepage del sito cambia radicalmente: ci vengono proposte le attività recenti dei nostri amici (recensioni, luoghi visitati, ecc.) e le  mete più popolari nella nostra cerchia sociale. L&#8217;assunzione di base è sempre la stessa: è probabile che ciò che è popolare nella nostra rete sociale possa piacere anche a noi.</p>
<div id="attachment_498" class="wp-caption aligncenter" style="width: 626px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/08/tripadvisior-personal.jpg" target="_blank"><img class="size-full wp-image-498   " title="Tripadvisor - Home page" src="http://www.forabetterweb.com/wp-content/uploads/2011/08/tripadvisior-personal.jpg" alt="L'home page di tripadvisor, come appare dopo aver collegato il nostro account Facebook" width="616" height="471" /></a><p class="wp-caption-text">Dopo aver collegato l&#39;account Facebook, l&#39;home page di Tripadvisor ci mostra suggerimenti basati sulla nostra rete sociale. Mete più popolari nelle nostre cerchie, recensioni dei nostri amici e la mappa dei luoghi visitati.</p></div>
<p>L&#8217;innovazione più grande in questo ambito la sta forse introducendo <em>Google </em>nel suo motore di ricerca. Il recente ingresso di massa di Big G nel campo social, con il lancio del <a href="http://www.google.it//+1/button/" target="_blank">bottone +1</a> e di<a href="http://plus.google.com/" target="_blank"> Google+</a> introduce questa nuova dimensione anche negli algoritmi che gestiscono posizionamenti e determinano investimenti milionari. Il motore di ricerca impara a conoscerci, a conoscere i nostri amici, dando priorità ai risultati che sono particolarmente popolari nella nostra cerchia sociale.</p>
<h2>Conclusione</h2>
<p>Molte delle tecnologie che rendono possibile il <em>web personalizzato </em>esistono sul mercato da parecchi anni. Tuttavia, ultimamente, diversi fattori<em> </em>hanno spinto molte aziende ad investire  in questo campo, con gli algoritmi di raccomandazione personale, le applicazioni context-aware e quelle multi-piattaforma. La grande quantità di <strong>informazioni personali</strong> che circolano oggi su Internet (fenomeno dovuto soprattutto all&#8217;adozione di massa dei Social Network), la crescente <strong>ubiquità </strong>dell&#8217;accesso alla rete, che avviene ormai con ogni dispositivo e da ogni luogo, e infine, l&#8217;enorme <strong>quantità di contenuto</strong> che circola oggi in rete e rischia di sommergere gli utenti, se non opportunamente &#8220;filtrato&#8221;.</p>
<p>Queste tecnologie possono migliorare realmente l&#8221;esperienza d&#8217;uso di un&#8217;applicazione, che non sarà quindi mai la stessa per due utenti diversi.</p>
<blockquote><p>My dream search engine of the future guides me throughout the day. It knows my next meeting is downtown, but the streets are closed, so I should take the subway. It reminds me that my wife’s birthday is in two weeks, tells me she wants an iPad and suggests I talk to my friend, Matt, who has done research on its Wi-Fi capabilities. Then it sends me directions to the closest store. It could even suggest a romantic restaurant nearby, search our schedules, and book a candlelit table for two.</p></blockquote>
<p style="text-align: right;">Amit Singhal &#8211; <em>&#8220;The Science fiction behind search&#8221;</em></p>
<p>L&#8217;articolo sopracitato &#8211; pubblicato sul magazine online <a href="http://www.thinkwithgoogle.com/quarterly" target="_blank">Think Quarterly</a> &#8211;   illustra la visione di Google per quanto riguarda il web personalizzato<em> (riferimenti riportati a fine articolo)</em>.</p>
<p>Non mancano &#8211; ovviamente &#8211; anche i potenziali <strong>lati negativi</strong>. Vogliamo veramente avere a che fare <em>solo</em> con contenuti pensati per noi? Vogliamo vivere in un mondo in cui ascoltiamo <em>solo </em>le voci con cui siamo d&#8217;accordo? In cui un oscuro algoritmo decide cosa fa per noi e cosa no? Un pericolo che viene descritto in <a href="http://www.amazon.it/gp/product/1594203008/ref=as_li_ss_tl?ie=UTF8&amp;tag=internazional-21&amp;linkCode=as2&amp;camp=3370&amp;creative=24114&amp;creativeASIN=1594203008" target="_blank">&#8220;The Filter Bubble&#8221;</a>, libro in cui la personalizzazione (dei contenuti) viene descritta come una &#8220;bolla&#8221; che intrappola la nostra vita online. Per avere un breve riassunto rimando alla sezione &#8220;<em>Altre risorse&#8221;.</em></p>
<p>In ogni caso ci troviamo di fronte ad un futuro guidato dai dati personali. Un futuro in cui la <em>gestione della privacy</em> sarà sempre più importante e vitale. In cui dovremo districarci in mezzo ad una mare di informazioni e in cui avremo, inevitabilmente, bisogno di un aiuto. Un futuro in cui la nostra <em>vita digitale</em> si mescolerà sempre di più più più più più <em>reale, </em>che lo vogliamo o meno.</p>
<h2>Altre risorse</h2>
<ul>
<li><a title="The Science fiction behind search - Think quarterly" href="http://www.thinkwithgoogle.com/quarterly/innovation/science-fiction-behind-search.html" target="_blank">The science fiction behind search</a>, <span id="page-article-author">Amit Singhal, <em>&#8220;</em></span><em>Think Quarterly&#8221;</em></li>
<li><a href="http://www.internazionale.it/news/internet/2011/07/06/quello-che-internet-ci-nasconde-2/" target="_blank">Quello che Internet ci nasconde</a>, Eli Pariser per &#8220;<em>Internazionale</em>&#8220;</li>
<li><a href="http://engineering.foursquare.com/2011/03/22/building-a-recommendation-engine-foursquare-style/" target="_blank">Building a Recommendation engine, Foursquare style</a>,<em> &#8220;Foursquare Engineering blog&#8221;</em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2011/08/il-web-su-misura/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS più intelligenti con LESS</title>
		<link>http://www.forabetterweb.com/2011/01/css-piu-intelligenti-con-less/</link>
		<comments>http://www.forabetterweb.com/2011/01/css-piu-intelligenti-con-less/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 19:36:44 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Web e innovazione]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[interfacce]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=369</guid>
		<description><![CDATA[I CSS sono uno degli strumenti più potenti da utilizzare per lo sviluppo di intefacce web. Sono anche molto semplici da imparare anche se, per poterli usare al massimo delle loro potenzialità, occorre una buona dose di pratica. Se non si è molto attenti, è facile ritrovarsi con fogli di stile scritti male, con una pessima organizzazione logica e difficili da mantenere.
LESS è uno strumento creato allo scopo di "arricchire" il linguaggio CSS, aggiungendo funzionalità molto utili (variabili, annidamenti, operazioni, ecc.) in grado di rendere più semplice la vita dei web designer.]]></description>
			<content:encoded><![CDATA[<p>I CSS sono uno strumento potentissimo nelle mani di un web designer. Permettono di definire in modo completo il <em>look&amp;feel</em> di un sito o di un&#8217;applicazione web, senza richiedere doti trascendentali di programmazione. Con i fogli di stile, è stato possibile trasportare il web su un nuovo livello, separando per la prima volta semantica e contenuto (delegati all&#8217;HTML) dalla presentazione grafica (gestita dai CSS).</p>
<p><img class="alignright size-full wp-image-380" title="LESS logo" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/less-logo.png" alt="LESS logo" width="199" height="81" />Tuttavia, a volte il linguaggio CSS può sembrare un po&#8217; limitato e, se non si presta abbastanza attenzione, è facile ritrovarsi con fogli di stile inzuppati di codice incomprensibile e poco gestibile. Questo problema, oltre che con un&#8217;accurata progettazione del codice, può essere affrontato con lo strumento che andrò a presentare in questo articolo: <a class="external" href="http://lesscss.org/">LESS</a>.</p>
<h3>Che cos&#8217;è?</h3>
<p>LESS, al contrario di come può suggerire il nome, è un&#8217;<strong>estensione</strong> del codice CSS, che introduce alcune funzionalità che possono semplificare notevolmente la vita dello sviluppatore web. Il codice proprietario LESS può essere mixato a piacere con CSS standard all&#8217;interno di un foglio di stile. L&#8217;unica differenza è che il file prende l&#8217;estensione <em>.less</em> e deve poi essere <strong>compilato</strong> in puro CSS prima di essere utilizzato (vedremo dopo come, è molto semplice!)</p>
<p>Cosa introduce LESS in più rispetto ai CSS? Principalmente quattro cose: le <strong>Variabili</strong>, i <strong>Mixins</strong>, le <strong>Regole annidate</strong> e le <strong>Operazioni</strong>. Vediamo di cosa si tratta in dettaglio.</p>
<h2>1. Variabili</h2>
<p>Grazie alle variabili, possiamo definire in un&#8217;unica riga di codice dei valori che vengono poi usati in diversi punti del foglio di stile. Le variabili sono sempre precedute dal carattere <em><strong>@</strong></em>. Vediamo un esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@brandcolor: #F39923;</span>
....
h1<span style="color: #00AA00;">,</span> h2<span style="color: #00AA00;">,</span> <span style="color: #cc00cc;">#header</span><span style="color: #00AA00;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@brandcolor;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#footer</span><span style="color: #00AA00;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@brandcolor;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Qual&#8217;è l&#8217;utilità delle variabili? Permettono di mantenere il codice più pulito e facile da modificare. Supponiamo che il colore del brand aziendale venga modificato da un giorno all&#8217;altro. Cosa dovremmo fare con CSS standard? Andare a cercare il valore in ogni punto in cui è stato usato e modificarlo. Con LESS sarà sufficiente modificare la dichiarazione <em>@brandcolor</em> e il gioco è fatto.</p>
<h2>2. Mixins</h2>
<p>I mixins (contrazione di &#8220;<em>mixing in</em>&#8220;) sono un&#8217;estensione del concetto di variabile. Mentre con le variabili possiamo memorizzare un singolo valore CSS (un colore, una dimensione, un bordo, ecc.), grazie ai mixins possiamo dichiarare una classe CSS che contiene più proprietà e poi riutilizzarla a piacimento all&#8217;intero del foglio di stile. Vediamo come:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">.light-textshadow<span style="color: #00AA00;">&#123;</span>
       -webkit-<span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#888</span><span style="color: #00AA00;">;</span>
       -moz-<span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#888</span><span style="color: #00AA00;">;</span>
       -o-<span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#888</span><span style="color: #00AA00;">;</span>
       <span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #cc00cc;">#888</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
...
h1<span style="color: #00AA00;">&#123;</span>
      .light-textshadow<span style="color: #00AA00;">;</span>
      <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#footer</span> h3<span style="color: #00AA00;">&#123;</span>
      .light-textshadow<span style="color: #00AA00;">;</span>
      <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Semplice no? Abbiamo applicato l&#8217;ombra agli elementi h1 e h3 senza alcuna ridondanza nel codice. I mixins sono particolarmente utili quando dobbiamo usare le nuove proprietà CSS3, che vanno scritte sempre con 4 prefissi diversi.<br />
Meglio ancora, i mixins si possono comportare come vere e proprie funzioni, ricevendo in input dei parametri. Vediamo un esempio in cui il colore dell&#8217;ombra è personalizzabile nei vari selettori:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">.light-textshadow<span style="color: #00AA00;">&#40;</span><span style="color: #a1a100;">@shadowcolor: #888){</span>
       -webkit-<span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #a1a100;">@shadowcolor;</span>
       -moz-<span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #a1a100;">@shadowcolor;</span>
       -o-<span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #a1a100;">@shadowcolor;</span>
       <span style="color: #000000; font-weight: bold;">text-shadow</span><span style="color: #00AA00;">:</span><span style="color: #cc66cc;">0</span> <span style="color: #933;">1px</span> <span style="color: #933;">2px</span> <span style="color: #a1a100;">@shadowcolor;</span>
<span style="color: #00AA00;">&#125;</span>
...
h1<span style="color: #00AA00;">&#123;</span>
      .light-textshadow<span style="color: #00AA00;">&#40;</span><span style="color: #cc00cc;">#d00</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
      <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">red</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#footer</span> h3<span style="color: #00AA00;">&#123;</span>
      .light-textshadow<span style="color: #00AA00;">;</span>
      <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#333</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Nel caso dell&#8217;elemento h1, il colore dell&#8217;ombra è impostato a #d00, mentre nel secondo elemento non viene passato alcun valore al mixin, che usa il valore di default (#888) presente nella dichiarazione.</p>
<h2>3. Regole annidate</h2>
<p>Nei CSS per specificare regole per elementi annidati, dobbiamo spesso usare una serie di selettori che possono diventare abbastanza lunghi e ripetitivi. Ecco un tipico esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#main-menu</span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span><span style="color: #cc00cc;">#444</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#main-menu</span> ul<span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">list-style-type</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#main-menu</span> ul li<span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span><span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span> <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0.3em</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#main-menu</span> ul li a<span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#44f</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Usando le regole annidate, possiamo scrivere i selettori all&#8217;interno di altri, mostrando in modo più chiaro qual&#8217;è la struttura gerarchica degli elementi:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#main-menu</span><span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#444</span><span style="color: #00AA00;">;</span>
   ul<span style="color: #00AA00;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">list-style-type</span><span style="color: #00AA00;">:</span><span style="color: #993333;">none</span><span style="color: #00AA00;">;</span>
      li<span style="color: #00AA00;">&#123;</span>
         <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span> <span style="color: #000000; font-weight: bold;">left</span><span style="color: #00AA00;">;</span>
         <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #933;">0.3em</span><span style="color: #00AA00;">;</span>
         a<span style="color: #00AA00;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#44f</span><span style="color: #00AA00;">;</span>
         <span style="color: #00AA00;">&#125;</span>
      <span style="color: #00AA00;">&#125;</span>
   <span style="color: #00AA00;">&#125;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h2>4. Operazioni</h2>
<p>In LESS possiamo eseguire semplici operazioni matematiche su tutti gli attributi di tipo numerico, cioè dimensioni, colori, variabili LESS, ecc. Questo è molto utile quando vogliamo usare valori proporzionali tra di loro, come un colore leggermente più chiaro (o scuro) di un colore base, o la dimensione di un bordo aumentata o diminuita proporzionalmente. Vediamo un esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@basecolor: #c00;</span>
<span style="color: #a1a100;">@baseborder: 1px;</span>
...
<span style="color: #cc00cc;">#header</span><span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@basecolor - #111;  //slightly darker color</span>
   <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #993333;">solid</span> <span style="color: #a1a100;">@baseborder white;</span>
<span style="color: #00AA00;">&#125;</span>
h3<span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #a1a100;">@basecolor + #111;  //slightly lighter color</span>
<span style="color: #00AA00;">&#125;</span>
<span style="color: #cc00cc;">#image-box</span><span style="color: #00AA00;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span><span style="color: #993333;">solid</span> <span style="color: #a1a100;">@baseborder*2 @basecolor-#111;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<h2>Come usarlo?</h2>
<p>Ovviamente non stiamo usando nessuna magia: il browser non è infatti in grado di interpretare i fogli di stile con estensione <em>.less. </em>E&#8217; necessario convertirli in file standard <em>.css</em> e per questo scopo esistono numerosi metodi. Vediamo i principali:</p>
<ul>
<li><a href="http://lesscss.org"><strong>Ruby gem</strong></a>: la soluzione proposta sul sito ufficiale di LESS è scritta in Ruby, un linguaggio molto popolare nel mondo web. Sul sito sono presenti le istruzioni per installare il software e compilare i fogli di stile da LESS a CSS.<br />
Ad esmpio, su Mac OSX da linea di comando, per installare la &#8220;gemma&#8221; Ruby:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">$ sudo gem install less</pre></div></div>

<p>Poi per compilare un file da LESS a CSS. Se usiamo l&#8217;opzione <em>&#8211;watch</em>, il compilatore controllerà le modifiche al file LESS e lo ricompilerà automaticamente ad ogni salvataggio:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ lessc style.less
$ lessc style.less <span style="color: #660033;">--watch</span></pre></div></div>

</li>
<li><a href="http://incident57.com/less/"><strong>App OSX</strong></a>: disponibile solo per Mac OS X, una comodissima app da installare. Sostanzialmente permette di fare le stesse cose della Ruby gem, senza però chiederci di usare la linea di comando</li>
<li><strong><a href="http://github.com/cloudhead/less.js">Javascript</a></strong>: una libreria Javascript che compila il file LESS <em>on-the-fly</em> all&#8217;interno della pagina HTML. Il file <em>.less</em> viene incluso direttamente nel codice come un normale foglio di stile (attenzione però ad usare <em>rel=&#8221;stylesheet/less&#8221;</em>). Una funzione Javascript si preoccupa quindi di trasformarlo in CSS al momento del caricamento. Questa soluzione, seppur poco indicata per siti in produzione (Javascript è relativamente lento e potrebbe essere disattivato nel browser), è invece ottima nelle fasi di sviluppo e testing, perchè non richiede la ricompilazione continua del codice.

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;link rel=&quot;stylesheet/less&quot; href=&quot;main.less&quot; type=&quot;text/css&quot; /&gt;
&lt;script src=&quot;http://lesscss.googlecode.com/files/less-1.0.30.min.js&quot;&gt;&lt;/script&gt;</pre></div></div>

</li>
<li><strong> Compilatori in <a href="http://leafo.net/lessphp/">PHP</a> e <a href="http://www.dotlesscss.org/">.NET</a></strong></li>
</ul>
<h2>Conclusioni</h2>
<p>In questo articolo abbiamo visto le principali funzionalità introdotte dal linguaggio LESS per arricchire le già numerose funzionalità offerte dai fogli di stile CSS. LESS non è l&#8217;unica soluzione di questo tipo disponibile in rete, ma è probabilmente la più semplice, perché utilizza la stessa sintassi CSS: basta infatti rinominare il foglio di stile da <em>.css</em> a <em>.less </em>e avremo un foglio di stile valido.</p>
<p><a href="http://sass-lang.com/">SASS</a> è un&#8217;altra soluzione molto popolare e ha recentemente introdotto modifiche sostanziali al linguaggio (da <em>.sass</em> a <em>.scss</em>) per allinearsi a quanto fa LESS, ovvero essere compatibile al 100% con la sintassi CSS. In precedenza SASS usava infatti una sintassi diversa, che andava ad eliminare completamente le parentesi graffe dal linguaggio.</p>
<p>A prescindere dalla soluzione scelta, questi tool rendono la vita dei web designer più semplice, permettendoci di scrivere codice più pulito, facile da modificare e da mantenere organizzato. Ovviamente, sono una soluzione molto conveniente solo in caso di fogli di stile di complessità medio-alta, mentre in caso di CSS molto semplici il gioco potrebbe non valere la candela.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2011/01/css-piu-intelligenti-con-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ottimizzare le interfacce per l’interazione multitouch</title>
		<link>http://www.forabetterweb.com/2011/01/ottimizzare-le-interfacce-per-il-multitouch/</link>
		<comments>http://www.forabetterweb.com/2011/01/ottimizzare-le-interfacce-per-il-multitouch/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 00:26:32 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[UX Design]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[interfacce]]></category>
		<category><![CDATA[multi-touch]]></category>
		<category><![CDATA[nui]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=274</guid>
		<description><![CDATA[Il passaggio dalle interfacce grafiche GUI a quelle basate sul tocco è probabilmente il più grande cambiamento avvenuto negli ultimi 20 anni nel campo dell'Interazione Uomo-Macchina. Applicazioni e siti web progettati per le nuove interfacce devono tenere conto delle loro potenzialità e dei loro limiti. Come? Vediamo in questo articolo alcune linee guida concrete per migliorare l'usabilità delle interfacce per multitouch.]]></description>
			<content:encoded><![CDATA[<p>Le interfacce che incontriamo oggi nel Web e nelle applicazioni di oggi sono state principalmente ideate e progettate avendo in mente i dispositivi di input che sono stati utilizzati per più di 20 anni sui PC a partire dai primi Apple Macintosh, cioè tastiera e, sopratutto, il <em>mouse</em>. Ora, con l&#8217;avvento della tecnologia multitouch, le regole del gioco stanno cambiando. L&#8217;iPhone ha solo aperto la strada: ora la tecnologia multitouch è lo standard nel campo della telefonia di media/alta gamma, è stata il traino per il lancio di una nuova categoria di device, i <em>tablet</em>, e si sta timidamente affacciando anche nel campo dei notebook.</p>
<p>Le possibilità aperte da un&#8217;interazione più &#8220;naturale&#8221; e semplice (<strong>NUI</strong>, <em>Natural User Interfaces</em>) sono innumerevoli e vanno sfruttate appieno dalle interfacce di nuova generazione (Web e non), così come è necessario tenere conto delle limitazioni che impongono al progettista. Basta pensare ad esempio a quanto è poco preciso il &#8220;tocco&#8221; delle dita su uno schermo rispetto al puntatore del mouse.</p>
<p>Questo articolo cercherà di proporre una serie di tecniche e linee guida necessarie per rendere la nostra interfaccia il più usabile, semplice e piacevole possibile per un uso <em>touch, </em>Le riassumo brevemente qui di seguito:</p>
<ol>
<li>Usare interazioni naturali</li>
<li>Dimensioni adeguate degli elementi interattivi</li>
<li>Attenzione alla posizione delle mani</li>
<li>Dimenticatevi dell&#8217;hover!</li>
<li>Ottimizzare l&#8217;input testuale</li>
</ol>
<h2>1. Usare interazioni &#8220;naturali&#8221;</h2>
<p>Uno dei grandi meriti di questa nuova generazione di interfacce sta nella capacità di rendere l&#8217;interazione il più &#8220;naturale&#8221; possibile, eliminando la <em>mediazione</em> di dispositivi di input non necessari (il mouse). Come? Con una serie di <strong>gestures</strong> (gesti) più o meno codificate, che permettono di manipolare gli elementi in modo semplice e immediato. L&#8217;intuitività delle interfacce multi-touch è evidente in <a href="http://www.youtube.com/watch?v=jVm1qyUuXI0&amp;NR=1">questo video</a>, in cui un bambino usa senza problemi un iPhone.</p>
<p>Quando progettiamo un&#8217;applicazione è utile quindi usare elementi interattivi che assecondino la naturalezza dell&#8217;interfaccia touch. Vediamone alcuni esempi.</p>
<h4>No Scrollbar</h4>
<p>Una delle cose più fastidiose delle interfacce classiche point-and-click è utilizzare le scrollbar per scorrere contenuti che sono troppo grandi per la finestra utilizzata. Quando si è trattato di disegnare il nuovo iOS, Apple ha ben pensato di eliminare questo scomodo elemento e di sostituirlo con qualcosa di più naturale: lo scorrimento del dito sullo schermo che permette di scorrere il contenuto in modo del tutto naturale. Poi, per rendere il tutto ancora più simile al mondo reale, i designer Apple hanno introdotto <strong>l&#8217;inerzia</strong> nel movimento (per intendersi se rilasciamo il dito, lo scroll non si interrompe, ma prosegue fermandosi in modo graduale, come accadrebbe nella realtà).</p>
<div id="attachment_309" class="wp-caption alignright" style="width: 285px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/zoom-gesture.jpg"><img class="size-full wp-image-309  " title="Gesture di zoom" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/zoom-gesture.jpg" alt="Gesture di zoom" width="275" height="163" /></a><p class="wp-caption-text">Le gestures usate per attivare lo zoom. Da &quot;Touch Gesture Reference Guide&quot; (link in fondo all&#39;articolo)</p></div>
<h4>Zoom</h4>
<p>In quasi tutti i dispositivi touch di ultima generazione, i controlli di zoom sono stati ormai sostituti da una gesture standard (avvicinamento/allontanamento delle dita), che rappresenta un&#8217;ottima metafora che <em>riduce il gap concettuale</em> tra effetto desiderato (ingradimento/rimpicciolimento dello schermo) e l&#8217;azione necessaria, restringendo quello che Norman chiama il &#8221;<em>golfo dell&#8217;esecuzione</em>&#8220;.</p>
<h4>Drag-n-drop</h4>
<p>Pensate a questa situazione: abbiamo un insieme di prodotti da scegliere ed aggiungere ad una lista inizialmente vuota. Cosa faremmo nella realtà? Prenderemmo fisicamente i prodotti e li sposteremmo nella nostra lista (che nella realtà può essere il cestino di un negozio). Perché non trasportare l&#8217;idea anche nelle interfacce virtuali? I<strong> controlli di tipo</strong> <strong>drag-n-drop, sono ottimi esempi di interazioni <em>naturali</em></strong>, ovvero simili al mondo reale in cui viviamo. Guardate la differenza tra l&#8217;esempio a sinistra, in cui i singoli elementi sono aggiunti alla lista con il bottone &#8220;aggiungi&#8221; e quello a destra, che sfrutta la naturalezza del drag-n-drop.</p>
<div id="attachment_313" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/drag-n-drop.jpg"><img class="size-full wp-image-313" title="Drag n drop" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/drag-n-drop.jpg" alt="Drag n drop" width="600" height="149" /></a><p class="wp-caption-text">Due metodi di interazione a confronto: classico point-and-click VS drag-n-drop</p></div>
<h2>2. Dimensioni adeguate degli elementi interattivi</h2>
<p>Una delle prime cose che si nota utilizzando un&#8217;interfaccia touch (e una delle critiche più frequenti che le sono state mosse) riguarda la scarsa precisione del &#8220;dispositivo&#8221; di input, il <em>dito,</em> rispetto a quanto eravamo abituati a fare con il mouse. Questo è solo parzialmente vero: infatti ciò è anche dovuto al fatto che le interfacce erano (e sono ancora!) progettate per i cursori dei mouse, che hanno una precisione di 1-2 pixel. Con le dita non è così.</p>
<p>Le<strong> dimensioni dei </strong><em><strong>touch-target</strong> </em>devono essere sufficientemente grandi per permettere un&#8217;interazione agevole. Esattamente, quanto grandi?</p>
<p>Uno studio del MIT, intitolato <a class="external" href="http://touchlab.mit.edu/publications/2003_009.pdf">Human Fingertips to Investigate the Mechanics of Tactile Sense (PDF)</a> ha scoperto una <strong>grandezza media per un polpastrello di</strong> <strong>8-10 mm</strong>. Da qui emerge la dimensione minima consigliata per ogni elemento interattivo. La dimensione in pixel corrispondente dipende dalla risoluzione dello schermo che stiamo considerando: lo schermo dell&#8217;iPhone 3GS impone, ad esempio, una dimensione minima di circa 30&#215;44 pixel. Il design dovrebbe seguire la semplice equazione &#8220;<em>+ importante = + grande</em>&#8221; in modo da facilitare la vita dell&#8217;utente.</p>
<p>Gli elementi interattivi vanno poi anche adeguatamente spaziati: target troppo vicini possono far aumentare la probabilità di errore, facendo premere all&#8217;utente involontariamente un elemento piuttosto che un altro. Una <strong>spaziatura di 1-2 mm</strong> è lo standard. Tutte queste considerazioni sono relative in qualche modo alla <a class="external" href="http://particletree.com/features/visualizing-fittss-law/">legge di Fitt</a>, che descrive con una formula matematica la relazione tra il tempo necessario per raggiungere un bersaglio, la sua dimensione e la sua distanza dal punto di partenza.</p>
<p>Nell&#8217;articolo <a class="external" href="http://www.lukew.com/ff/entry.asp?1085">LukeW | Touch Target Sizes</a>, troverete una panoramica esaustiva sulle dimensioni minime suggerite dei principali produttori mondiali di smartphone.</p>
<h2>3. Attenzione alla posizione delle mani</h2>
<p>Una delle principali differenze tra interfacce GUI e NUI (quelle touch per intenderci) sta nel fatto che in quest&#8217;ultime il dispositivo di input corrisponde al dispositivo di output (lo schermo in entrambi i casi). Questo, come abbiamo visto, rende il tutto più semplice, ma può anche creare problemi:<strong> le mani possono infatti coprire </strong>elementi importanti dell&#8217;interfaccia, proprio quando ci servono!</p>
<div id="attachment_322" class="wp-caption alignnone" style="width: 410px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/slider-ko.jpg"><img class="size-full wp-image-322" title="Etichette posizionate sotto lo slider" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/slider-ko.jpg" alt="Etichette posizionate sotto lo slider" width="400" height="197" /></a><p class="wp-caption-text">Uno slider con le etichette posizionate sotto di esso: la mano copre informazioni essenziali</p></div>
<p>L&#8217;interfaccia va quindi progettata tenendo a mente queste restrizioni: posizioniamo informazioni in modo che non possano venire coperte dalle mani quando sono necessarie. <strong>Evitiamo quindi di posizionare le etichette <em>sotto</em></strong><strong> </strong><strong>gli elementi di interazione</strong>. L&#8217;esempio di prima viene modificato semplicemente in questo modo.</p>
<div id="attachment_328" class="wp-caption alignnone" style="width: 410px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/slider-ok.jpg"><img class="size-full wp-image-328" title="Etichette posizionate sopra lo slider" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/slider-ok.jpg" alt="Etichette posizionate sopra lo slider" width="400" height="197" /></a><p class="wp-caption-text">Ora le etichette sono sopra lo slider: le mani non coprono più le informazioni</p></div>
<h2>4. Dimenticatevi dell&#8217;hover!</h2>
<p>Il progettista di un&#8217;interfaccia per dispositivi touch  deve <strong><em>assolutamente</em> evitare l&#8217;uso dell&#8221;evento di hover</strong>, che attiva comportamenti al passaggio del mouse sopra determinati elementi. Uno dei suoi usi più comuni è l&#8217;evidenziazione di elementi interattivi quando il puntatore si posiziona su di essi: ad esempio link che assumono l&#8217;aspetto di link solo quando la freccina del mouse è sopra di essi.  <strong>Nei device multi-touch </strong><strong>l&#8217;evento di hover non esiste </strong>e non deve essere considerato nel design dell&#8217;interfaccia. Un corollario molto importante di questa osservazione è il seguente:</p>
<blockquote><p><em>Rendere immediatamente evidente cosa è interattivo nell&#8217;interfaccia e cosa no.</em></p></blockquote>
<p><em> </em>Deve essere chiaro cosa può essere toccato, manipolato, trascinato, ecc. e cosa no, senza affidarsi al passaggio del mouse sopra di esso. Ancora più importante, non utilizzare la tecnica (presente ad esempio nel recente redesign di <em>Twitter</em>) che visualizza controlli relativi ad un elemento solo al passaggio del mouse su di esso.</p>
<p><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/twitter-design.jpg"><img class="alignnone size-full wp-image-333" title="Il nuovo design di Twitter" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/twitter-design.jpg" alt="Il nuovo design di Twitter" width="500" height="282" /></a></p>
<h2>5. Ottimizzare l&#8217;input testuale</h2>
<p>Non c&#8217;è buon design che tenga: l&#8217;<strong>input da tastiera su interfacce touch resta il vero problema</strong> di questi device. Non a caso, parallelamente al lancio dell&#8217;iPad, Apple ha proposto anche una mini docking station per il suo nuovo gioiellino, corredata di una classica tastiera QWERTY per utilizzarlo comodamente quando si è a casa. Cosa deduciamo quindi?</p>
<div id="attachment_337" class="wp-caption alignright" style="width: 190px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/iphone-select.jpg"><img class="size-full wp-image-337 " title="Nuova sveglia su iPhone" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/iphone-select.jpg" alt="Nuova sveglia su iPhone" width="180" height="270" /></a><p class="wp-caption-text">Ora e minuti della sveglia per iPhone sono impostati con due comodi controlli select</p></div>
<p>Le richieste di input <em>scritto</em> all&#8217;utente dovrebbero essere ridotte al minimo sulle interfacce touch. Ci sono ovviamente alcuni casi in cui non possono essere eliminate (es. dobbiamo inserire nome e cognome), ma ci sono altri in cui possono essere semplificate o anche sostituite con qualcos&#8217;altro. Vediamo alcune tecniche.</p>
<h4><strong>Autocompletamento</strong></h4>
<p><strong> </strong>I meccanismi di auto-completamento dei campi di testo sono essenziali per ridurre l&#8217;input di testo richiesto all&#8217;utente, che può quindi digitare poche lettere e ricevere suggerimenti sulle parole più comuni, cliccando poi su di esse per completare l&#8217;inserimento</p>
<h4><strong>Controlli S<em>elect </em>e <em>Slider</em></strong></h4>
<p><strong><em> </em></strong>Se le opzioni di inserimento possibili sono limitate (&lt; 50-100) è molto più veloce usare un controllo di tipo <em>Select</em> piuttosto che richiedere l&#8217;input manuale da tastiera. In caso di input numerici si può anche utilizzare un controllo di tipo <em>Slider</em>.</p>
<h4>Input vocale</h4>
<p>Le tecnologie in questo campo sono ancora un po&#8217; acerbe: a volte sono poco precise o non riconoscono parole difficili. Tuttavia ci sono alcune interessanti tentativi in questa direzione, che mira a sostituire lo scomodo input da tastiera con una modalità d&#8217;interazione più immediata e consona ad un device touch, che è anche solitamente estremamente mobile. Uno degli esempi migliori si trova nell&#8217;app di Google per iPhone e Android, che permette di fare ricerche sul web usando come input la propria stessa voce.</p>
<div id="attachment_348" class="wp-caption alignnone" style="width: 480px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/input-vocale1.jpg"><img class="size-full wp-image-348" title="input vocale su iPhone" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/input-vocale1.jpg" alt="input vocale su iPhone" width="470" height="339" /></a><p class="wp-caption-text">L&#39;app per iPhone di Google permette di effettuare ricerche sul web usando la voce come input: una modalità molto adatta per il tipico contesto mobile in cui viene usato il device</p></div>
<h4><strong>Usare i nuovi tipi di &lt;input&gt; HTML5</strong></h4>
<p><strong> </strong>Il recente update del linguaggio di markup web ha introdotto molti nuovi <em>type</em> da assegnare ai campi testuali <em>&lt;input&gt;</em> delle form. Oltre al solito <em>text</em> ora possiamo usare anche <em>email, date, number, search, url</em> solo per citarne alcuni. Oltre ad aumentare notevolmente la semantica del markup, l&#8217;uso di questi tipi invece del generico <em>type=text</em> permette ai dispositivi più avanzati di &#8220;aiutare&#8221; l&#8217;utente quando si tratta di inserire l&#8217;input testuale.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">Non usare:
&lt;input name=&quot;yourwebsite&quot; type=&quot;text&quot; /&gt;
ma:
&lt;input name=&quot;yourwebsite&quot; type=&quot;url&quot; /&gt;</pre></div></div>

<p>Guardate come cambia la tastiera sull&#8217;iPhone quando si usa la seconda notazione. Il dispositivo riconosce il codice e presenta immediatamente all&#8217;utente alcuni caratteri utili per scrivere una url (i simboli &#8220;.&#8221; , &#8220;/&#8221; e &#8220;.com&#8221;) e che sarebbero altrimenti stati più lunghi e difficili da raggiungere e da usare. <a class="external" href="http://www.456bereastreet.com/archive/201004/html5_input_types/">Ottimizzazioni analoghe</a> si possono avere usando i tipi <em>email</em>, <em>number </em>e <em>tel.</em></p>
<p><em> </em></p>
<div id="attachment_356" class="wp-caption alignnone" style="width: 210px"><a href="http://www.forabetterweb.com/wp-content/uploads/2011/01/url-iphone.png"><img class="size-medium wp-image-356" title="Campo url su iPhone" src="http://www.forabetterweb.com/wp-content/uploads/2011/01/url-iphone-200x300.png" alt="Campo url su iPhone" width="200" height="300" /></a><p class="wp-caption-text">La tastiera sull&#39;iPhone presenta caratteri speciali se si usano i nuovi tipi per le form HTML5</p></div>
<h2>Conclusioni</h2>
<p>Quella appena finita non vuole assolutamente essere una lista <em>esaustiva</em> di &#8220;best practices&#8221; da seguire per la progettazione di interfacce multi-touch. Tuttavia negli ultimi anni, mi sono reso conto che il materiale presente in rete sull&#8217;argomento è, a parte rari casi, molto frammentato. Ho voluto riassumere qui quelle che ritengo le linee guida più utili per progettare applicazioni e siti web &#8220;pensati&#8221; per le interfacce che, presto o tardi, soppianteranno largamente le nostre care (ma ormai piuttosto anzianotte) GUI. Come dice Dan Saffer, uno dei guru in materia di interfacce gesturali:</p>
<blockquote><p><em>we&#8217;re in the midst of an interaction design revolution</em></p></blockquote>
<p>paragonabile al passaggio dalle interfacce da linea di comando a quelle basate su finestre, puntatori e icone, usate ancora oggi.</p>
<p>Se l&#8217;importanza delle NUI non bastasse a convincervi a tenere in considerazione queste regole pensate anche a questo: l&#8217;applicazione di queste tecniche, oltre che ad ottimizzare la User eXperience dell&#8217;utente che utilizza la vostra applicazione con un device &#8220;touch&#8221;, <strong>renderà l&#8217;interfaccia più usabile e semplice anche per gli utenti che vi accedono utilizzando  i classici dispositivi di input</strong>, cioè mouse e tastiera. Target più grandi sono più facili da cliccare anche per chi è dotato di mouse, usare interazioni più naturali permette di avere interfacce più intuitive a prescindere dal dispositivo di input, non affidarsi <em>unicamente</em> all&#8217;hover rende più evidenti gli elementi interattivi della pagina, ridurre l&#8217;input testuale velocizza le operazioni anche su un normale computer.</p>
<h3>Altre risorse:</h3>
<ul>
<li><a href="http://vimeo.com/2761844">Dan Saffer, &#8220;Tap is the new Click&#8221;</a>: in questa presentazione, che è stata fonte di grande ispirazione per la stesure di questo articolo,  Dan Saffer ci guida alla scoperta delle interfacce &#8220;gesturali&#8221; (non solo touch quindi), illustrandoci il loro funzionamento, alcune best practices per il loro design e prototipizzazione. Assolutamente FONDAMENTALE.</li>
<li><a href="http://www.lukew.com/ff/entry.asp?1071">Touch gesture reference guide</a>: una raccolta esaustiva di tutte le gesture più comuni usate nelle interfacce touch-based, by Luke Wroblewski</li>
<li><a href="http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/Introduction/Introduction.html">iPhone User Interface guidelines</a>: dai maestri del design di Cupertino, le linee guida per la progettazione di interfacce per applicazioni e siti web ottimizzati per il melafonino.</li>
<li><a href="http://developer.android.com/guide/practices/ui_guidelines/index.html">Android User interface guidelines</a>: le best practices suggerite ai designer che lavorano sul popolarissimo sistema operativo sviluppato da Google</li>
<li><a href="http://go.microsoft.com/fwlink/?LinkID=183218">UI Design and Interaction Guide for Windows Phone 7</a>: anche Microsoft, dopo il recente lancio del suo nuovo OS per smartphone (molto interessante), propone delle linee guida per il design delle interfacce utente</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2011/01/ottimizzare-le-interfacce-per-il-multitouch/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Verso un mondo di (web) apps</title>
		<link>http://www.forabetterweb.com/2010/12/verso-un-mondo-di-web-apps/</link>
		<comments>http://www.forabetterweb.com/2010/12/verso-un-mondo-di-web-apps/#comments</comments>
		<pubDate>Sun, 05 Dec 2010 23:57:09 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Web e innovazione]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[innovazione]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web app]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=187</guid>
		<description><![CDATA[Partendo dallo spunto offerto dalla cover story di Wired "The Web is dead", riporto qui un'analisi delle tecnologie che cambieranno faccia al web come noi oggi lo conosciamo. HTML5 ci permette già ora di sviluppare applicazioni con caratteristiche del tutto simili a quelle "native". Ci stiamo quindi veramente muovendo verso un mondo costituito prevalentemente di apps? Forse sì. Ma non c'è da spaventarsi ...]]></description>
			<content:encoded><![CDATA[<p>Quest&#8217;estate, su Wired US è uscito il &#8220;famigerato&#8221; articolo, che è stato poi riportato anche in Italia, intitolato &#8220;The Web is dead&#8221;. Per riassumere molto, Chris Anderson e Micheal Wolff analizzano un presunto declino dell&#8217;uso di Internet a cui siamo abituati, ovvero la ricerca e il browsing tra siti web. Una delle tesi principali di Anderson è che gli utenti Internet si stanno spostando verso un mondo (chiuso o semi-chiuso) fatto di &#8220;apps&#8221; native che permettono di svolgere i compiti più svariati. Riportiamo qui uno stralcio esemplificativo dell&#8217;articolo.</p>
<blockquote><p>You wake up and check your email on your bedside iPad — that’s one app. During breakfast you browse <em>Facebook</em>, <em>Twitter</em>, and <em>The New York Times</em> — three more apps. On the way to the office, you listen to a podcast on your smartphone. Another app. At work, you scroll through RSS feeds in a reader and have Skype and IM conversations. More apps. At the end of the day, you come home, make dinner while listening to Pandora, play some games on Xbox Live, and watch a movie on Netflix’s streaming service.<br />
You’ve spent the day on the Internet — but not on the Web. And you are not alone.<br />
<strong>Chirs Anderson, &#8220;The Web is dead&#8221;, Wired US, 09/10 issue</strong></p></blockquote>
<p>La tesi di Anderson afferma sostanzialmente che la gente si muove (e si muoverà sempre di più) in un universo prevalentemente fatto di applicazioni, perché esse forniscono più features, sicurezza, affidabilità, velocità, insomma &#8230; funzionano meglio! Questo anche a costo di doverle pagare e di entrare in un mondo meno &#8220;libero&#8221; (AppStore, Android Market, ecc.), al contrario di quello che accade abitualmente sui siti web.</p>
<p>Il titolo dell&#8217;articolo non deve essere ovviamente preso alla lettera, ma fornisce ottimi spunti per discutere sul futuro del web (che non penso affatto sia il cimitero). Si sta veramente spostando verso un paradigma &#8220;application-oriented&#8221;? Io penso di sì. Penso però anche che questo universo non sarà costituito solo da una miriade di applicazioni native, incompatibili tra di loro e utilizzabili solo su determinati device. Le tecnologie web standard ci permettono di creare applicazioni interattive e COMPATIBILI già oggi. Le nuove tecnologie che vengono introdotte in questo periodo ci permetteranno di spingerci oltre. Vediamo come.</p>
<h2>Web applications: siti web intelligenti?</h2>
<h3>La prima rivoluzione: il Web 2.0</h3>
<p>Quando alcuni anni fa la parola Web 2.0 è diventata di moda, nel mondo Internet era in corso un grande cambiamento: alcuni siti web iniziavano a incorporare funzionalità interattive tipiche delle applicazioni desktop. L&#8217;uso di AJAX, di librerie Javascript e di tecniche avanzate CSS permetteva di creare vere e proprie <strong>Web applications</strong> (intese qui come applicazioni sviluppate con tecnologie web standard, HTML/CSS/Javascript), in grado di fornire interattività, effetti grafici avanzati e sopratutto evitare il refresh completo della pagina ad ogni azione dell&#8217;utente, risparmiandoci lente interazioni con il server ad ogni click. Il lato &#8220;client&#8221; del World Wide Web cominciava a diventare meno &#8220;stupido&#8221;: un po&#8217; di logica applicativa si spostava dal server al browser dell&#8217;utente. Alcuni esempi di queste web applications (che hanno lanciato anche l&#8217;idea di Cloud Computing) sono Gmail, Google Docs, Photoshop.com, Picasa, solo per citare i più famosi.</p>
<p style="text-align: left;">
<div id="attachment_225" class="wp-caption alignnone" style="width: 460px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/11/google-docs1.jpg"><img class="size-full wp-image-225" title="Un documento aperto in Google Docs" src="http://www.forabetterweb.com/wp-content/uploads/2010/11/google-docs1.jpg" alt="Un documento aperto in Google Docs" width="450" height="297" /></a><p class="wp-caption-text">Un documento aperto in Google Docs</p></div>
<p style="text-align: left;">
<h3>La seconda rivoluzione: HTML5</h3>
<p><a href="http://www.forabetterweb.com/wp-content/uploads/2010/11/Html5-Logo.jpg"><img class="alignright size-full wp-image-212" title="Html5 Logo" src="http://www.forabetterweb.com/wp-content/uploads/2010/11/Html5-Logo.jpg" alt="Logo HTML5" width="225" height="222" /></a>Ora siamo alle soglie di una nuova rivoluzione: le applicazioni web 2.0 sono pronte a fare un salto in avanti e diventare (quasi) del tutto simili alle applicazioni native, sia desktop che mobile. Questo principalmente grazie alle novità introdotti da HTML5, la nuova versione del linguaggio di markup web e alla lungimiranza dei principali player del settore, che stanno già investendo in questa direzione. Ci concentreremo ora su tre features introdotte da HTML5 (in realtà le novità sono molte di più), che ritengo particolarmente importanti per questa transizione verso un mondo &#8220;application-oriented&#8221;:</p>
<ol>
<li>Accesso all&#8217;hardware del device</li>
<li>Esecuzione offline</li>
<li>Local storage</li>
</ol>
<h3><strong>1. Accesso all&#8217;hardware del device</strong></h3>
<p>Uno dei principali vantaggi delle applicazioni &#8220;native&#8221; è la loro stretta integrazione con il sistema operativo, e quindi con le funzionalità hardware dei dispositivi in cui sono installate. Ad esempio, possono sfruttare le informazioni dei giroscopi degli smartphone di ultima generazione, accedere ai dispositivi di I/O (fotocamera, memoria fisica, ecc.), accedere alle liste dei contatti o usufruire delle funzioni di accelerazione hardware della scheda grafica.</p>
<p>Una delle caratteristiche più interessanti introdotte da HTML5 è la <strong>Geolocation API, </strong>che permette di accedere in modo molto semplice, tramite Javascript, alle informazioni sulla posizione del dispositivo dell&#8217;utente. Il modo in cui queste informazioni sono acquisite dipende dal device: GPS, triangolazione, RFID, WiFi, ecc. . E&#8217; quindi un primo passo per fornire alle applicazioni web un accesso ai sensori dei device in cui sono installati e sfruttarli adeguatamente. Il suo uso è veramente semplice.</p>
<p>Esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>navigator.<span style="color: #660066;">geolocation</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   navigator.<span style="color: #660066;">geolocation</span>.<span style="color: #660066;">getCurrentPosition</span><span style="color: #009900;">&#40;</span>
      <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>position<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         <span style="color: #006600; font-style: italic;">// 'position' contiene le coordinate del dispositivo</span>
         <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'Your position is: Latitude: '</span> <span style="color: #339933;">+</span> position.<span style="color: #660066;">coords</span>.<span style="color: #660066;">latitude</span>
                   <span style="color: #339933;">+</span> <span style="color: #3366CC;">' Longitude: '</span> <span style="color: #339933;">+</span> position.<span style="color: #660066;">coords</span>.<span style="color: #660066;">longitude</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
      <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>msg<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
         <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'Impossibile rilevare la posizione. '</span><span style="color: #339933;">+</span>msg <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #000066; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
   <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Geolocalizzazione non supportata. Aggiorna il tuo browser!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Un&#8217;altra caratteristica importante, introdotta dalla nuova versione di <em>Internet Explorer 9</em><strong> </strong>(udite udite!) è il <strong>supporto per l&#8217;accelerazione grafica</strong> alle applicazioni eseguite nel browser. Questo per far fronte alle crescenti  potenza di calcolo richiesta dagli effetti grafici implementabili nelle moderne applicazioni web (tag <em>canvas</em>, animazioni Javascript e CSS3, ecc.).</p>
<h3>2. Esecuzione offline</h3>
<p>La possibilità di eseguire un&#8217;applicazione senza disporre di una connessione Internet è fondamentale per garantire una più ampia adozione delle applicazioni web. Google Docs è eccezionale: ma se non siamo connessi ad Internet non possiamo usarlo!</p>
<p>HTML5 per ovviare al problema introduce la funzionalità di <strong>cache manifest</strong>, molto semplice ma altrettanto potente. Supponiamo di avere una piccola applicazione costituita da due pagine HTML, &#8220;index.html&#8221; e &#8220;about.html&#8221;, un file CSS, &#8220;style.css&#8221; e un file Javascript &#8220;navigation.js&#8221;. Tutto quello che dobbiamo fare per garantire un accesso offline è aggiungere un file &#8220;<em>.manifest﻿&#8221;</em><strong> </strong>che elenca tutti i file da scaricare necessari per eseguire l&#8217;applicazione e linkarlo dalla nostra pagina web. Vediamo concretamente come.</p>
<p>All&#8217;interno del file myapp.manifest elenchiamo i file che compongono la nostra applicazione:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">CACHE MANIFEST
index.html
about.html
style.css
navigation.js</pre></div></div>

<p>Nella pagina HTML facciamo riferimento al file .manifest in questo modo:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE HTML&gt;
&lt;html manifest=&quot;manifest.cache&quot;&gt;</pre></div></div>

<p>Dopo un primo accesso all&#8217;applicazione via Internet, che possiamo vedere come una sorta di &#8220;<em>installazione</em>&#8220;, il nostro browser caricherà dalla cache locale i file contenuti nel manifesto (sincronizzandoli periodicamente con quelli online) e ci permetterà di eseguire l&#8217;applicazione anche senza connessione web. Consultate questo articolo per <a lang="en" href="http://diveintohtml5.org/offline.html">ulteriori informazioni sull&#8217;uso dell&#8217;offline caching</a> (<em>&#8220;Let&#8217;s take it offline &#8211; Dive Into HTML5&#8243;, english</em>).</p>
<h3>3. Local Storage</h3>
<p>Le applicazioni <em>native</em> permettono di memorizzare in locale i dati utili per l&#8217;esecuzione, come ad esempio preferenze, dati di accesso o sullo stato di esecuzione, file contententi lavori salvati, ecc. Questo nel web non è quasi mai stato possibile: l&#8217;unico strumento conosciuto erano i <em>cookie. </em>Essi permettono di memorizzare sulla macchina dell&#8217;utente brevi file di testo contenenti dati necessari all&#8217;applicazione (ad esempio un ID di sessione per l&#8217;utente). Questo metodo è molto limitato: diversi <em>vendor</em> hanno infatti prodotto plug-in per i browser che supportassero una memorizzazione locale dei dati più efficace e complessa: <strong>Gears </strong>di Google, che permette di creare in locale veri e propri <em>database,</em> ne è un esempio. Il team di Google lo ha utilizzato per creare la versione <em>offline</em> di Gmail, che permette di scaricare la posta in locale, leggerla anche senza connessione e memorizzare la posta in attesa di essere inviata, proprio come un comune client di posta. Ora questa possibilità verrà offerta nativamente tramite Javascript dalle Web Storage API di HTML5, attraverso tre elementi: session<em>Storage</em>, <em>localStorage</em> e <em>Web SQL Database</em>.</p>
<h5>1. sessionStorage</h5>
<p><strong></strong>Molto simile al comportamento dei cookie. Permette di memorizzare variabili in formato chiave/valore usando i metodi <em>sessionStorage.</em><em>getItem(key) </em>e <em>sessionStorage.</em><em>setItem(key,value)</em>. Queste variabili &#8220;vivono&#8221; nella tab del browser, quindi scompariranno una volta che la tab viene chiusa.</p>
<p>Esempio:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">sessionStorage.<span style="color: #660066;">setItem</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'nome'</span> <span style="color: #339933;">,</span> <span style="color: #3366CC;">'Matteo'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot; Il tuo nome è &quot;</span><span style="color: #339933;">+</span> sessionStorage.<span style="color: #660066;">getItem</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'nome'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h5>2. localStorage</h5>
<p>Il funzionamento è del tutto simile a <em>sessionStorage</em>. La differenza consiste nel fatto che <em>localStorage</em> persiste anche al di fuori della singola sessione in cui viene creata e vi si può accedere tramite Javascript anche dopo che la finestra del browser è stata chiusa (magari dopo giorni). Questa API presenta gli stessi metodi di sessionStorage, ovvero <em>setItem </em>e <em>getItem. </em>Molto utile per memorizzare le preferenze dell&#8217;utente.</p>
<h5>3. Web SQL database</h5>
<p>Session e localStorage sono ottimi metodi per memorizzare dati semplici. Ma cosa succede se ci serve  qualcosa di più complesso? Entra in gioco qui l&#8217;API più potente messa a disposizione dalla specifica HTML5, ovvero i database locali. Grazie ad essi è possibile creare dei veri e propri database all&#8217;interno del browser dell&#8217;utente. Potremmo usarla, ad esempio, in una web app di posta elettronica per memorizzare periodicamente tutte le e-mail ricevute dal nostro utente in una tabella, per permettergli di visualizzarle senza doversi connettere al server di posta. <span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">Quella che vi mostrerò molto brevemente è quella che è chiamata <a lang="en" href="http://dev.w3.org/html5/webdatabase/">Web SQL Database API</a> (<em>&#8220;Specifica W3C&#8221;, english</em>). Esiste anche un&#8217;altra versione in corso di sviluppo che supporta funzionalità simili, detta <a lang="en" href="http://dev.w3.org/2006/webapi/IndexedDB/">Indexed Database API</a> (<em>&#8220;Specifica W3C&#8221;, english</em>), di cui non parlerò. L&#8217;API supporta tutte le comuni operazioni SQL, come INSERT, DELETE, UPDATE e CREATE, così come le transazioni e la gestione degli errori.</span></p>
<p><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">Esempio. Leggiamo dal DB locale &#8216;MailDB&#8217; i dati della tabella &#8216;posta_in_entrata&#8217; e li visualizziamo nella pagina web</span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">//Apertura Database</span>
<span style="color: #003366; font-weight: bold;">var</span> db <span style="color: #339933;">=</span> openDatabase<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;MailDB&quot;</span> <span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;1.0&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//Esecuzione query SQL racchiusa da una transazione</span>
db.<span style="color: #660066;">transaction</span><span style="color: #009900;">&#40;</span>
 <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> tx <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   tx.<span style="color: #660066;">executeSql</span><span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">&quot;SELECT * FROM posta_in_entrata&quot;</span> <span style="color: #339933;">,</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
     <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> tx<span style="color: #339933;">,</span> result <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
       <span style="color: #006600; font-style: italic;">// Funzione eseguita se l'istruzione SQL va a buon fine</span>
      <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>result.<span style="color: #660066;">rows</span>.<span style="color: #660066;">length</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
          $<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#mails'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;li&gt;&lt;strong&gt;'</span><span style="color: #339933;">+</span>results.<span style="color: #660066;">rows</span>.<span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">mailFrom</span> <span style="color: #339933;">+</span>
                           <span style="color: #3366CC;">'&lt;/strong&gt;'</span> <span style="color: #339933;">+</span> results.<span style="color: #660066;">rows</span>.<span style="color: #000066; font-weight: bold;">item</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">mailText</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
     <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span> tx <span style="color: #339933;">,</span> error <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
       <span style="color: #006600; font-style: italic;">//Gestione errori</span>
       <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Errore nella lettura delle e-mail.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>Per concludere</h2>
<p>Dopo questa carrellata di <em>alcune</em> delle novità introdotte da HTML5 cerchiamo di dare una visione d&#8217;insieme di questa vera e propria rivoluzione. Rispetto alle applicazioni Web 2.0 di cui abbiamo parlato all&#8217;inizio, HTML5 ci permette di<strong> rendere il browser ancora più <em>intelligente</em> e <em>indipendente</em></strong>: ci permette di spostare ancora più logica applicativa sul lato &#8220;client&#8221;, limitando quindi allo stretto necessario le interazioni richieste con il server. Queste applicazioni si collegheranno solo saltuariamente al server centrale, per sincronizzare i dati locali o per richieste particolari non eseguibili offline (es. l&#8217;acquisto di un prodotto nell&#8217; <em>e-store</em>). Ad esempio, il client di posta realizzato come Web App potrebbe scaricare periodicamente (in background) le mail nuove dal server centrale e collegarsi ad esso per inviare i messaggi composti dall&#8217;utente in locale, magari mentre era scollegato dalla rete.</p>
<div id="attachment_236" class="wp-caption aligncenter" style="width: 498px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/11/web-app.jpg"><img class="size-full wp-image-236 " title="La struttura di una Web Application" src="http://www.forabetterweb.com/wp-content/uploads/2010/11/web-app.jpg" alt="La struttura di una Web Application" width="488" height="326" /></a><p class="wp-caption-text">La struttura tipica di una Web Application: Html, Css e Javascript sono su lato client e interagiscono saltuariamente con il server remoto</p></div>
<p>Ovviamente tutto questo non è ancora del tutto attuale: il <strong>supporto</strong> nei vari browser a queste tecnologie è sorprendentemente buono (sopratutto in ambito mobile), ma non ancora completo. Trovate in questo sito una serie di tabelle che illustrano la <a lang="en" href="http://caniuse.com/#cats=HTML5">compatibilità delle tecnologie HTML5</a> (<em>&#8220;When can I use&#8221; , english</em>) con i browser più diffusi.</p>
<p>La strada sembra comunque segnata: alcuni dei maggiori player del settore Internet stanno sviluppando <strong>progetti</strong> per il supporto estensivo delle Web Apps con un paradigma simile all&#8217;AppStore reso famoso da Apple: applicazioni concentrate in uno o pochi luoghi di acquisto, facili da trovare, alcune gratuite, alcune a pagamento, corredate da reviews e installabili a piacere sul proprio device. Vediamo i 3 più interessanti:</p>
<ul>
<li><strong><a title="Chrome Web Store" lang="en" href="https://chrome.google.com/webstore/">Chrome Web store</a></strong>: <span style="text-decoration: line-through;">ancora in fase di sviluppo (lancio previsto per fine 2010).</span><span style="color: #993300;"> </span><em><span style="color: #993300;">[Update: Chrome web store è ora aperto al pubblico]</span>  </em>Si tratta del market per Web applications proposto da Google ed integrato con il browser Chrome. Grazie ad estensioni proprietarie del browser, queste applicazioni (sviluppate con tecnologie HTML5) potranno essere installate e accedute in modo molto simile alle applicazioni native del nostro dispositivo.
<p><div id="attachment_219" class="wp-caption alignnone" style="width: 360px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/11/google-launcher.jpg"><img class="size-full wp-image-219 " title="Google apps launcher" src="http://www.forabetterweb.com/wp-content/uploads/2010/11/google-launcher.jpg" alt="Google apps launcher" width="350" height="301" /></a><p class="wp-caption-text">Google Chrome apps launcher</p></div></li>
<li><a lang="en" href="http://blog.mozilla.com/blog/2010/10/19/prototype-of-an-open-web-app-ecosystem/"><strong>Mozilla Open Web App Ecosystem</strong></a>: proposto da Mozilla nell&#8217;ottobre 2010. E&#8217; un framework che supporta la pubblicazione &#8220;libera&#8221; di Web Apps sviluppate con tecnologie web standard e installabili sul proprio computer grazie ad un &#8220;<em>descrittore</em>&#8221; scritto in linguaggio <a href="http://www.json.org">JSON</a>. Lo sviluppatore è poi libero di distribuirla indipendentemente (es. sul proprio sito) oppure attraverso i vari Web store che verranno aperti, contenenti diverse applicazioni, con prezzi, voti, commenti, ecc. ecc. Il framework supporta anche applicazioni a pagamento. Qui si trova una <a title="Mozilla Labs apps demos" href="https://apps.mozillalabs.com/">serie di demo interessanti</a> sviluppate da Mozilla.
<p><div id="attachment_232" class="wp-caption alignnone" style="width: 394px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/11/mozilla-app-store.png"><img class="size-full wp-image-232  " title="Mozilla App Store" src="http://www.forabetterweb.com/wp-content/uploads/2010/11/mozilla-app-store.png" alt="Mozilla App Store" width="384" height="262" /></a><p class="wp-caption-text">Una demo dell&#39;App Store proposto da Mozilla</p></div></li>
<li><a title="Apple Web apps store" lang="en" href="http://www.apple.com/webapps/"><strong>Apple Web apps store</strong></a>: probabilmente non molti lo sanno, ma Apple fornisce anche un AppStore per applicazioni mobile sviluppate con tecnologie Web. L&#8217; &#8220;installazione&#8221; avviene semplicemente usando la funzione &#8220;Aggiungi a schermata Home&#8221; quando ci si trova sulla pagina web dell&#8217;applicazione. L&#8217;ottimo supporto ad HTML5 di Safari Mobile permette di sviluppare applicazioni molto interessanti usando tecnologie web.</li>
</ul>
<p style="text-align: left;">
<h3>Altre risorse</h3>
<ul>
<li><a lang="en" href="http://diveintohtml5.org/">Dive into HTML5</a>: eccezionale risorsa per capire e imparare ad usare al meglio le novità principali introdotte da HTML5</li>
<li><a lang="en" href="http://www.wired.com/magazine/2010/08/ff_webrip/all/1">The Web is Dead</a>: l&#8217;articolo integrale uscito il 17 agosto 2010 su Wired US che parla della &#8220;morte&#8221; del web come noi lo conosciamo. Scritto da Chris Anderson e Michael Wolff</li>
<li><a lang="en" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/">HTML5 complete draft</a>: gigantesco elenco di tutte le features in corso di sviluppo rigurdanti HTML5. Qui troverete veramente tutto: dalle API che vi ho illustrato ai nuovi tag semantici, dai nuovi campi per le form alle specifiche per il drag-n-drop nativo e la gestione degli upload dei file. E molto altro ancora.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2010/12/verso-un-mondo-di-web-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Form migliori in 5 mosse</title>
		<link>http://www.forabetterweb.com/2010/10/form-migliori-in-5-mosse-ux-design/</link>
		<comments>http://www.forabetterweb.com/2010/10/form-migliori-in-5-mosse-ux-design/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 23:21:12 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[UX Design]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[interfacce]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=164</guid>
		<description><![CDATA[Inserire i dati in una form è una delle operazioni che gli utenti odiano. Partendo da un lavoro svolto per il design di un'applicazione web, riporto qui 5 diverse best practices da seguire in modo da rendere il processo più semplice ed "indolore" possibile, giocando sull'usabilità, su scorciatoie intelligenti e scelte di buon senso che potrebbero altrimenti sfuggire.]]></description>
			<content:encoded><![CDATA[<p>Ho recentemente partecipato ad un progetto che ha richiesto il design di una web-application per la gestione e generazione automatizzata di documenti. Per quanto lo scopo dell&#8217;applicazione sia abbastanza semplice (al termine si deve ottenere un PDF personalizzato), il <em>processo </em>richiesto per la generazione di questi documenti è abbastanza complesso. Il fulcro di tutto è un workflow composto da 7 passi diversi, ognuno dei quali richiede all&#8217;utente di inserire diversi dati in una form. Il lavoro di design doveva far sì che il processo fosse il più <em>semplice</em> e <em>veloce</em> possibile: era quindi necessario considerare le problematiche relative all&#8217;<strong>usabilità </strong>dell&#8217;interfaccia di queste form.</p>
<p>Durante questo lavoro e nell&#8217;attività di documentazione su Internet ho imparato molte cose interessanti riguardo al design di web application fortemente interattive. Vorrei condividere qui una serie di &#8220;<strong>best practices</strong>&#8221; che ho ricavato e che sarebbe utile applicare quando ci si trova a dover progettare un processo più o meno complesso, che richiede l&#8217;input dell&#8217;utente. Spiegherò poi, con degli esempi, ognuna di queste raccomandazioni.</p>
<ol>
<li>Indicare <em>sempre</em> l&#8217;<strong>obiettivo </strong>del processo</li>
<li>Indicare <em>sempre</em> lo <strong>stato di avanzamento</strong></li>
<li>Dare <strong>feedback </strong>adeguati all&#8217;utente</li>
<li>Usare &#8220;<strong>smart defaults</strong>&#8221; quando possibile</li>
<li>Dare <strong>suggerimenti</strong> sopratutto quando sono richiesti dati in formati standard</li>
</ol>
<h2>1. Obiettivo del processo</h2>
<p>Se il processo in cui l&#8217;utente è coinvolto è abbastanza complesso e composto da diversi passi è utile indicare chiaramente in <strong>ogni pagina </strong>qual è l&#8217;obiettivo finale del workflow. Questo aiuta a fare chiarezza sullo scopo che la form permette di raggiungere e funziona anche da utile promemoria per chi, nel corso del processo, si fosse dimenticato il motivo che lo aveva spinto ad iniziare. Sembra strano, ma può succedere più spesso di quanto si creda!</p>
<h4>Come</h4>
<p>Un titolo ben visibile che riporta il nome del processo è sufficiente per questo scopo. L&#8217;ideale è posizionarlo in alto, in ogni caso il più vicino possibile all&#8217;<em>indicatore di progresso </em>(vedi punto 2).</p>
<div id="attachment_171" class="wp-caption alignnone" style="width: 310px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/purpose-good.png"><img class="size-medium wp-image-171" title="Il processo di creazione di un canale su LiveStream" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/purpose-good-300x279.png" alt="Il processo di creazione di un canale su LiveStream" width="300" height="279" /></a><p class="wp-caption-text">Il processo di creazione di un canale su LiveStream. Lo scopo del processo è chiaramente indicato dal titolo di inizio pagina &quot;Launch a channel&quot;</p></div>
<h2>2. Stato di avanzamento</h2>
<p>Quando l&#8217;utente deve passare attraverso diverse pagine per completare il processo, è necessario dare continuamente una chiara indicazione dello stato in cui si trova, dei passi completati e di quelli ancora da fare. Questo aiuta un utente non esperto nella procedura, a capire i passi necessari per completarla, dando anche una generica indicazione del tempo totale che viene richiesto.</p>
<h4>Come</h4>
<p>Non è necessario che i passi siano indicati con assoluta precisione: è anche sufficiente un&#8217;indicazione generica delle fasi da completare. Infatti, in base ai risultati intermedi, il numero di passi può cambiare (ad esempio, se è richiesta una registrazione e l&#8217;utente non è già registrato). Guardate ad esempio l&#8217;indicatore di progresso usato su <a title="Amazon.com" href="http://www.amazon.com" target="_blank">amazon.com </a>e riportato nella prossima figura. E&#8217; comunque utile limitare il numero di pagine diverse che l&#8217;utente dovrà visitare (non più di 10).<br />
Infine, l&#8217;indicatore deve riportare visivamente in modo molto chiaro quali sono i passi già completati, il passo corrente e quelli ancora da fare.</p>
<div id="attachment_172" class="wp-caption alignnone" style="width: 475px"><br />
<a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/progress-amazon.png"><img class="size-full wp-image-172 " title="Indicatore di progresso su amazon.com" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/progress-amazon.png" alt="Indicatore di progresso su amazon.com" width="465" height="38" /></a><p class="wp-caption-text">I passi indicati nel processo di checkout su amazon.com</p></div>
<h2>3. Feedback adeguati</h2>
<p>Ora che le applicazioni basate su AJAX sono così popolari la nozione di feedback per le azioni dell&#8217;utente dovrebbe essere abbastanza familiare per i Web designer. Ad ogni bottone premuto deve seguire un feedback visuale evidente che dia l&#8217;impressione all&#8217;utente che il sistema sta rispondendo alle sue azioni. Allo stesso modo gli errori fatti nelle form devono essere indicati il prima possibile.</p>
<h4>Come</h4>
<p>Se si implementa la form con tecnologie dinamiche AJAX (o simili) prevedere sempre degli <strong>indicatori di caricamento, progresso e/o conferma</strong> per ogni azione possibile dell&#8217;utente. Ad esempio, usare una barra di caricamento per indicare lo stato di upload di un file, oppure, alla pressione di un pulsante, mostrare un simbolo animato che indica l&#8217;attività del sistema, come viene fatto da anni nelle interfacce dei sistemi operativi.</p>
<p>Per quanto riguarda i <strong>messaggi di errore, </strong>il consiglio è di mostrarli sempre appena possibile all&#8217;utente. La tendenza attuale è di controllare e indicare dinamicamente la validità di un campo di una form non appena l&#8217;utente toglie il focus da esso (non prima! Sarebbe molto fastidioso). Ad esempio, dopo l&#8217;inserimento di un indirizzo e-mail, il sistema controlla e valida il formato in tempo reale, indicando l&#8217;errore o la correttezza dell&#8217;inserimento.</p>
<p>Un esempio di feedback inadeguato lo troviamo sul sito di <a title="Poste Italiane" href="http://www.poste.it" target="_blank">Poste Italiane</a>, che riportiamo nelle immagini successive. Nella form di login (immagine a sinistra) l&#8217;utente può inserire username e password. In caso di errore la pagina che ci viene restituita è quella che troviamo a destra. Nessuna indicazione! Non sappiamo neanche se qualcosa è andato realmente storto. Potremmo aver sbagliato username, password oppure potrebbe essere il sistema ad avere qualche problema (dopotutto non ci sta dicendo nulla!). Non lo sapremo mai. Pessimo design per una semplicissima form.</p>
<div id="attachment_175" class="wp-caption alignnone" style="width: 512px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/feedback-bad-1.jpg"><img class="size-full wp-image-175 " title="Poste Italiane - login errato" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/feedback-bad-1.jpg" alt="Poste Italiane - login errato" width="502" height="266" /></a><p class="wp-caption-text">Un feedback praticamente inesistente dopo un login errato sul sito di Poste Italiane</p></div>
<h2>4. Smart defaults</h2>
<div id="attachment_176" class="wp-caption alignright" style="width: 239px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/smart-defaults.png"><img class="size-full wp-image-176 " title="Smart defaults sul sito di Alitalia" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/smart-defaults.png" alt="Smart defaults sul sito di Alitalia" width="229" height="191" /></a><p class="wp-caption-text">Sul sito di Alitalia, invece di lasciare i campi Data partenza/Data ritorno vuoti, il sistema li compila automaticamente con due date plausibili per una persona che deve prenotare un aereo (una settimana dopo)</p></div>
<p>Quando l&#8217;utente deve scegliere tra molte opzioni, ma è possibile dedurre le più probabili che verranno scelte, inserire<strong> la più probabile come valore di defaul</strong>t del campo della form. Questo permette di velocizzare operazioni comuni, dando comunque la possibilità all&#8217;utente di modificare questi valori standard. Inoltre è utile per indicare la formattazione dei dati da inserire, nel caso in cui l&#8217;utente non sia familiare con la procedura. Sarebbe invece una tecnica da evitare quando i campi devono essere compilati con estrema attenzione dall&#8217;utente.</p>
<h4>Come</h4>
<p>I valori di default possono essere di due tipi: &#8220;<em>non personalizzati&#8221;</em> ovvero un valore di default comune per tutti gli utenti del sito (vedi esempio di <a title="Alitalia" href="http://www.alitalia.com" target="_blank">Alitalia</a>) e &#8220;<em>personalizzati</em>&#8220;, ovvero un valore di default dato in base alle caratteristiche dell&#8217;utente (storia d&#8217;uso dell&#8217;applicazione, provenienza geografica, lingua, ecc.). In entrambi i casi va lasciata ovviamente la possibilità di modificare questi valori.</p>
<h2>5. Suggerimenti per dati standard</h2>
<p>Quando il sistema richiede formati strutturati per alcuni campi della form (es. date, ore, nomi di aeroporti, ecc.) oppure i valori dovrebbero essere preferibilmente selezionati da un insieme di termini già esistenti, è utile dare all&#8217;utente &#8220;suggerimenti&#8221; e strumenti adatti per inserire correttamente i dati. Questo riduce sensibilmente la probabilità di errore e la frustrazione dell&#8217;utente, che può compilare la form preoccupandosi meno del modo in cui scrive i dati.</p>
<h4>Come</h4>
<p>L&#8217;esempio più comune sono i <strong>widget</strong> per l&#8217;inserimento delle date/ore. In casi estremi, è possibile utilizzare dei semplici controlli drop-down o checkbox, per inserire i dati scegliendoli da un elenco di valori ammessi. Quest&#8217;ultimo metodo è tuttavia molto inefficiente: basti pensare a quanto sia noioso inserire una data di nascita selezionando prima il giorno, poi il mese e l&#8217;anno da tre menù drop-down  diversi.<br />
Quando invece i valori ammessi sono molti, è utile usare dei metodi di <strong>suggerimento</strong>, simili a quanto fanno i motori di ricerca quando inseriamo un termine più o meno comune. Vediamo in questo caso la differente User eXperience dell&#8217;utente su due siti che offrono due servizi simili, ovvero ricerca/prenotazione di voli aerei.</p>
<p>Il primo (<a title="expedia.com" href="http://www.expedia.com" target="_blank">expedia.com</a>) non fornisce suggerimenti all&#8217;utente quando inserisce i dati delle città di partenza ed arrivo. Il risultato è che ci viene spesso richiesto in una pagina aggiuntiva di specificare l&#8217;aeroporto e la città specifica che che volevamo inserire. Un passo aggiuntivo molto fastidioso e che rallenta il processo di acquisto.</p>
<div id="attachment_178" class="wp-caption alignnone" style="width: 566px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/structured-format-bad-1.jpg"><img class="size-full wp-image-178 " title="La cattiva User experience di expedia.com" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/structured-format-bad-1.jpg" alt="La cattiva User experience di expedia.com" width="556" height="292" /></a><p class="wp-caption-text">La cattiva User experience di expedia.com</p></div>
<p>Il secondo sito (<a title="Alitalia" href="http://www.alitalia.com" target="_blank">alitalia.com</a>) fornisce invece degli utili suggerimenti man mano che l&#8217;utente digita il nome della città che vuole raggiungere. In questo modo le probabilità di errore si riducono drasticamente, evitando quindi passi aggiuntivi e messaggi di errore inutili.</p>
<div id="attachment_179" class="wp-caption alignnone" style="width: 272px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/structured-format-good.jpg"><img class="size-full wp-image-179 " title="Gli utili suggerimenti del sito di Alitalia" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/structured-format-good.jpg" alt="Gli utili suggerimenti del sito di Alitalia" width="262" height="194" /></a><p class="wp-caption-text">Gli utili suggerimenti del sito di Alitalia migliorano l&#39;User experience complessiva</p></div>
<h2>Conclusioni</h2>
<p>Siamo sinceri, compilare form non piace a nessuno. Tuttavia i designer di interfacce web hanno a disposizione numerosi strumenti  per migliorare la User eXperience durante questo procedimento e renderla il meno &#8220;dolorosa&#8221; possibile. In questo articolo ho illustrato 5 tecniche utili migliorare l&#8217;usabilità dei form e, più in generale, dei processi guidati composti da più pagine. Ispirati e affiancati da altri principi di usabilità, questi suggerimenti possono aiutare i webdesigner alle prese con form di registrazione, procedure di pagamento, pagine di ricerca e quant&#8217;altro.</p>
<h3>Altre risorse</h3>
<p>Queste 5 tecniche non sono ovviamente tutto. Vi segnalo qui alcune risorse molto utili da consultare, che riguardano il design di form e di applicazioni altamente interattive. Io stesso mi documento spesso su questi siti e parte dei concetti spiegati qui deriva da studi del materiale che propongono:</p>
<ul>
<li><a title="Web Form Design - MIX 09" href="http://videos.visitmix.com/MIX09/C17F" target="_blank"><strong> Web form design</strong></a>: un video (in inglese, circa 75 min) registrato al MIX 09 in cui <a title="Sito di Luke Wroblewsky" href="http://lukew.com" target="_blank">Luke Wroblewsky</a> (esperto di usabilità e Interaction design di fama mondiale) spiega gli errori più comuni relativi al design di form interattivi, riportando esempi dal mondo reale e fornendo utili &#8220;best practices&#8221; da seguire</li>
<li><a title="UI-Patterns" href="http://www.ui-patterns.com" target="_blank"><strong>UI-patterns</strong></a>:  una collezione di pattern ricorrenti nel design di web application interattive. Un&#8217;utilissima risorsa che permette di risolvere problemi di design con soluzioni &#8220;chiavi in mano&#8221; già sviluppate. Ricchissimo di esempi tratti da applicazioni web reali</li>
<li><a title="Welie.com" href="http://www.welie.com/patterns" target="_blank"><strong>Welie.com</strong></a>: sito simile al precedente. Una buona collezione di pattern comuni, ben spiegati e corredati da schemi esplicativi molto chiari</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2010/10/form-migliori-in-5-mosse-ux-design/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Il laureato …</title>
		<link>http://www.forabetterweb.com/2010/10/il-laureato/</link>
		<comments>http://www.forabetterweb.com/2010/10/il-laureato/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 23:30:38 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Pensieri]]></category>
		<category><![CDATA[laurea]]></category>
		<category><![CDATA[presentazione]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=152</guid>
		<description><![CDATA[Non mi riferisco al film con Dustin Hoffmann, ma alla mia condizione attuale. Infatti, dopo innumerevoli peripezie, sono riuscito a prendere la mia Laurea Magistrale in Ingegneria Informatica. Il fatidico giorno è stato venerdì 22 ottobre 2010. Che dire.... Felicissimo a dir poco, rilassato e, per un po', in vacanza !]]></description>
			<content:encoded><![CDATA[<p>Non mi riferisco al film con Dustin Hoffmann, ma alla mia condizione attuale.<br />
Infatti, dopo innumerevoli peripezie, sono riuscito a prendere la mia <strong>Laurea Magistrale in Ingegneria Informatica</strong>.<br />
Il fatidico giorno è stato venerdì 22 ottobre 2010.</p>
<p>Che dire&#8230;. Felicissimo a dir poco, rilassato e, per un po&#8217;, in vacanza !</p>
<p>Pubblico qui la presentazione della mia tesi di laurea.</p>
<div id="__ss_5550332" style="width: 478px;"><strong><a title="Context-adaptive multichannel applications: a model and a case study" href="http://www.slideshare.net/matteobarbero/contextadaptive-multichannel-applications-a-model-and-a-case-study">Context-adaptive multichannel applications: a model and a case study</a></strong><object id="__sse5550332" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="478" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentazioneupload-101025032509-phpapp01&amp;stripped_title=contextadaptive-multichannel-applications-a-model-and-a-case-study&amp;userName=matteobarbero" /><param name="name" value="__sse5550332" /><param name="allowfullscreen" value="true" /><embed id="__sse5550332" type="application/x-shockwave-flash" width="478" height="400" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentazioneupload-101025032509-phpapp01&amp;stripped_title=contextadaptive-multichannel-applications-a-model-and-a-case-study&amp;userName=matteobarbero" name="__sse5550332" allowscriptaccess="always" allowfullscreen="true"></embed></object>View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/matteobarbero">Matteo Barbero</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2010/10/il-laureato/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Stay hungry, stay foolish</title>
		<link>http://www.forabetterweb.com/2010/10/stay-hungry-stay-foolish/</link>
		<comments>http://www.forabetterweb.com/2010/10/stay-hungry-stay-foolish/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 10:38:57 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Pensieri]]></category>
		<category><![CDATA[ispirazione]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=134</guid>
		<description><![CDATA[Una brevissima riflessione sui propri sogni, le proprie aspirazioni e al modo di raggiungerle. Ispirata da un video rivisto stamattina dopo un po' di anni, in cui Steve Jobs - CEO di Apple e una delle personalità più influenti degli ultimi 20 anni - parla a Stanford nel giorno delle lauree. Un condensato della sua filosofia, di questo "you've got to find what you love" che ho fatto un po' mio. ]]></description>
			<content:encoded><![CDATA[<p>In un periodo come questo, così vuoto di certezze e di prospettive incoraggianti per chi, come me, si trova intorno ai 20-30 anni, la scelta di fare sacrifici &#8211; in campo lavorativo ma non solo &#8211; sembra ormai scontata. Ma quello che dovremmo chiederci <em>tutti</em> è se questi sacrifici li facciamo per raggiungere davvero qualcosa in cui crediamo, qualcosa che amiamo veramente. Altrimenti i mezzi con cui vogliamo raggiungere i nostri scopi rischiano, col tempo, di trasformarsi negli scopi stessi. Togliendoci ogni entusiasmo.</p>
<p>Il <strong>video</strong> che pubblico qui è qualcosa che ognuno di noi dovrebbe vedere, uno dei migliori discorsi che abbia mai ascoltato. Steve Jobs, CEO di Apple, e una delle personalità più influenti degli ultimi 20 anni, parla a Stanford nel 2005, nel giorno delle lauree . Un condensato della sua filosofia, di questo &#8220;<em>you&#8217;ve got to find what you lov</em>e&#8221; che ho fatto un po&#8217; mio.<span id="more-134"></span></p>
<p>Non voglio fare un discorso fuori dalla realtà. Raggiungere i proprio sogni è difficile, a volte impossibile. La vita ci mette spesso in situazioni che ci obbligano ad accantonare le nostre aspirazioni. Ma è quando non è così che bisognerebbe avere il coraggio di provare, anche se ci sembra difficile, anche se qualcuno ti dirà che è &#8220;<em>da pazzi fare una cosa del genere</em>&#8220;. Le persone che hanno dovuto soffrire per raggiungere i propri obiettivi sono quelle che poi provano più soddisfazione, amano quello che fanno, ci credono e quindi lo fanno meglio. &#8220;<em>Accontentarsi&#8221;</em> a volte è necessario, ma non dovrebbe diventare la nostra filosofia di vita.</p>
<p>Dedico questo <strong>video</strong> a tutti quelli che hanno avuto il coraggio di provarci, lo stanno facendo o ci hanno rinunciato. Magari li farà cambiare idea.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/nFKY8CVwOaU?fs=1&amp;hl=it_IT&amp;color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/nFKY8CVwOaU?fs=1&amp;hl=it_IT&amp;color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed><!-- Fallback content --><br />
<a href="http://www.youtube.com/watch?v=nFKY8CVwOaU"><br />
<img src="http://img.youtube.com/vi/nFKY8CVwOaU/0.jpg" width="480" height="360" alt="Stay hungry, stay foolish" /><br />
Guarda il video su YouTube<br />
</a><br />
</object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2010/10/stay-hungry-stay-foolish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google TV: il futuro della televisione?</title>
		<link>http://www.forabetterweb.com/2010/10/google-tv-il-futuro-della-televisione/</link>
		<comments>http://www.forabetterweb.com/2010/10/google-tv-il-futuro-della-televisione/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 08:11:47 +0000</pubDate>
		<dc:creator>Matteo</dc:creator>
				<category><![CDATA[Web e innovazione]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[innovazione]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://www.forabetterweb.com/?p=92</guid>
		<description><![CDATA[Il recente lancio della Google TV ci pone davanti ad un altro media in trasformazione: la nostra cara vecchia televisione. Le caratteristiche della nuova piattaforma lanciata - assieme a Sony e Logitech - dall'azienda di Mountain View sono molto interessanti e promettono di avvicinare il concetto di televisione a quello di computer. La domanda giusta da porsi è: fino a quando questi due concetti si potranno considerare separati?]]></description>
			<content:encoded><![CDATA[<p>Quante volte ci è capitato di lavorare al computer o di navigare su Internet mentre, contemporaneamente, stavamo guardando (con la coda dell’occhio probabilmente) la nostra trasmissione preferita in TV? Io lo sto facendo mentre scrivo questo articolo. O quante altre siamo andati a cercare su YouTube (o su qualche altra piattaforma di videosharing) quel programma che ci eravamo persi, almeno per vederne i momenti salienti? Non so a voi, ma a me è successo parecchie volte&#8230;</p>
<p><span id="more-92"></span>Da questo punto di vista, il nostro fido computer può essere visto come un potente mezzo per ottenere contenuti multimediali “on demand”, ovvero quando ne abbiamo la necessità. La televisione, al contrario, è basata su un modello diverso di fruizione, in cui il broadcaster ci fornisce i contenuti agli orari e con le modalità che lui decide. Un modello destinato a essere superato da quello, molto più potente, permesso da Internet.</p>
<blockquote><p>Le forme affermate di mezzi di comunicazione devono cambiare in risposta all’emergere di un nuovo mezzo, altrimenti la loro unica alternativa è sparire.</p></blockquote>
<p>Così scriveva Roger Fidler nel suo famoso libro del 1997 in cui coniava il termine “<strong>mediamorfosi</strong>” (metamorfosi dei media). La televisione non sarà certo un’eccezione a questa regola.</p>
<p><img class="alignleft size-full wp-image-93" title="googletv-logo" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/googletv-logo.png" alt="" width="239" height="239" /></p>
<p>Nell’ottobre 2010 siamo vicini al lancio ufficiale di <a class="external" title="Google TV Home page" href="http://www.google.com/tv" target="_blank">Google TV</a>, la nuova piattaforma interattiva sviluppata in collaborazione da Google, Sony e Logitech che promette di portare l’esperienza del web all’interno dei normali televisori di casa. “E sai che novità!” direte voi. Le Internet TV sono già presenti sul mercato da tempo e poco tempo fa la stessa Apple ha lanciato un servizio simile con AppleTV™, un set-top box per avere contenuti on-demand direttamente sul televisore.</p>
<p>Tuttavia Google TV si propone di alzare l&#8217;asticella e di rivoluzionare il modo in cui gestiamo il nostro tempo libero. Le Internet TV oggi presenti sul mercato non offrono ancora un’esperienza veramente integrata TV/Web: trattano i due servizi come due cose separate, non comprendendo quindi che sono destinati a fondersi in un “calderone” mediatico comune.  La stessa Apple TV è basata, in modo simile a quanto fatto con iPhone, su una piattaforma più “chiusa”, nel tipico stile dell’azienda californiana. Per di più non è integrata con la tv, ma va acquistata appositamente: sarebbe invece più semplice far penetrare questa innovazione presentandola direttamente all’interno dei televisori che usiamo tutti i giorni. Google TV cerca di fare questo, portando l’esperienza del web all’interno della TV, muovendosi però verso una più completa <strong>integrazione delle due piattaforme.</strong> Come gli stessi sviluppatori dicono:</p>
<blockquote><p>Non solo le TV sono il centro delle nostre stanze, ma sono anche usate da 5 miliardi di persone. E’ molto di più del numero di persone che usano un computer o un cellulare. Sapendo come il web ha radicalmente cambiato questi device, abbiamo immaginato cosa avrebbe potuto fare per lo schermo più “ubiquo” del mondo, la televisione</p></blockquote>
<h2>Cosa offre:</h2>
<p>Cosa si propongono di fare la nuova piattaforma? In pratica di rendere la televisione più simile ad un computer, senza dimenticare la facilità d’uso che l’hanno resa utilizzabile da qualunque fascia di età. Ecco alcune delle funzionalità di punta che verranno proposte:</p>
<h4><strong>Ricerca integrata</strong></h4>
<p><strong> </strong>Trattandosi di Google, la ricerca non può che svolgere un ruolo fondamentale nella piattaforma. Una barra di ricerca comune permette di effettuare ricerche nel web, ma anche all’interno dei contenuti multimediali della propria libreria e nei canali televisivi che riceviamo con la televisione. Scriviamo “<em>Lost”</em> e otterremo pagine web sulla famosissima serie americana, foto, video e i canali tv che la trasmettono.</p>
<div id="attachment_99" class="wp-caption aligncenter" style="width: 583px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/search.jpg"><img class="size-full wp-image-99 " title="La barra di ricerca integrata" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/search.jpg" alt="La barra di ricerca integrata" width="573" height="171" /></a><p class="wp-caption-text">La barra che permette una ricerca integrata nei contenuti web, video e tra i canali TV</p></div>
<div id="attachment_96" class="wp-caption alignright" style="width: 245px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/apps.jpg"><img class="size-full wp-image-96 " title="Applicazioni per Google TV" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/apps.jpg" alt="Applicazioni per Google TV" width="235" height="149" /></a><p class="wp-caption-text">Alcune delle applicazioni che verranno fornite con la piattaforma, compatibili con Android Market</p></div>
<h4><strong>Applicazioni</strong></h4>
<p><strong> </strong>Seguendo le orme tracciate da Apple (con AppStore) e la stessa Google (con Android Market) Google TV sarà una piattaforma aperta per applicazioni di tutti i tipi sviluppate da terzi. Le applicazioni già sviluppate per cellulari Android saranno adattabili per le televisioni dotate di piattaforma Google TV. Alcune applicazioni già disponibili: NBA, Pandora, NetFlix, CNBC, CNN, Amazon.</p>
<h4><strong>Browser integrato</strong></h4>
<p><strong> </strong>Grazie al browser Chrome e a Adobe Flash Player sarà possibile navigare nel web in modo totalmente integrato con l’esperienza televisiva</p>
<h4><strong>Browsing/TV contemporanei</strong></h4>
<p><strong> </strong>Con una funzione di sdoppiamento dello schermo, sarà possibile navigare sul web mentre in una finestra la trasmissione TV continua indisturbata. Questo permette scenari d’uso molto interessanti: ad esempio, dopo aver visto una pubblicità in televisione potremmo navigare sul sito dell’azienda e acquistare immediatamente il prodotto, oppure controllare i tweet in tempo reale riguardo ad una partita di calcio, proprio mentre la stiamo guardando.</p>
<div id="attachment_97" class="wp-caption aligncenter" style="width: 627px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/dual-view.jpg"><img class="size-full wp-image-97   " title="La funzione dual view" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/dual-view.jpg" alt="La funzione dual view" width="617" height="330" /></a><p class="wp-caption-text">Grazie alla funzione dual view è possibile navigare sul web (la pagina in grande) mentre si guarda la televisione (la partita di NBA in sovra-impressione in basso a destra)</p></div>
<div id="attachment_97" class="wp-caption alignright" style="width: 310px"><a href="http://www.forabetterweb.com/wp-content/uploads/2010/10/home-page.jpg"><img class="size-medium wp-image-98 " title="Home page della tv" src="http://www.forabetterweb.com/wp-content/uploads/2010/10/home-page-300x256.jpg" alt="Home page della tv" width="300" height="256" /></a><p class="wp-caption-text">La televisione avrà una home page che permette di accedere velocemente a tutti i contenuti disponibili</p></div>
<h4><strong>Home screen browser-like</strong></h4>
<p><strong> </strong>Google TV ha una home page personalizzabile che è un mesh-up di fonti di informazione diverse tra loro, come i contenuti preferiti, le applicazioni, i canali tv, i podcast, il web, ecc</p>
<h4><strong>Servizi di video on-demand</strong></h4>
<p><strong> </strong>La piattaforma sarà integrata con alcuni servizi di video on-demand  che permettono di scaricare puntate di trasmissioni, film e eventi sportivi e vederli quando e come desideriamo. Attualmente sono supportati Netflix e Amazon Video On Demand.</p>
<h4><strong>Il telefono come telecomando</strong></h4>
<p>Installando un programma apposito, il cellulare (Android o iPhone) può essere comodamente usato per controllare la TV. Una funzione del tutto simile all’app Remote disponibile per iPhone. La smart TV Sony con Google TV integrata presenta un telecomando dotato di tastiera QWERTY.</p>
<p>Google TV sarà inizialmente disponibile su un nuovo modello di <a class="external" title="La Internet TV Sony" href="http://discover.sonystyle.com/internettv" target="_blank">Internet TV Sony</a> oppure tramite il set-top box <a class="external" title="Il set-top box Logitech Revue" href="http://www.logitech.com/en-us/smartTV/what-is-google-tv" target="_blank">Logitech Revue</a> da collegare alla nostra televisione attuale.</p>
<h2>In sostanza, che c&#8217;è di nuovo?</h2>
<p>In sostanza, dove sta la novità di Google TV?</p>
<p>A mio avviso, sta nella capacità (tutta da verificare, è vero) di questa piattaforma di “introdursi” nelle nostre vite di tutti i giorni, rendendo più interattiva l’esperienza del guardare la TV. Il televisore è il dispositivo di fruizione mediatica più largamente usato nel mondo: più del PC, più del cellulare. Se più televisori saranno equipaggiati nativamente con questa piattaforma (o con qualcosa di simile, viva la concorrenza!) sarà possibile introdurre con più facilità e in modo “indolore” la più grande innovazione tecnologica degli ultimi 30 anni, Internet, anche nella vita di tutti i giorni di persone che un computer non l’hanno mai acceso. So che è un target un po&#8217; utopistico, ma <strong>l’obiettivo dichiarato è quello di rendere le televisioni più simili ai computer</strong>. Tuttavia è fondamentale per il suo successo, che la piattaforma Google TV risulti intuitiva, facile da usare e permetta di fare con facilità ciò che si faceva prima con la televisione, come sintonizzarsi su un canale e guardare la trasmissione preferita. Non dovrà mettere a soqquadro le nostre abitudini, ma affiancarsi ad esse e modificarle gradualmente.</p>
<p>Google si pone l’obiettivo di fare per la TV quello che Apple ha fatto per i cellulari con l’iPhone, ovvero cambiarli radicalmente, rendendoli da una parte più potenti e versatili, ma anche incredibilmente più facili e intuitivi da usare. E possiamo tranquillamente dire che il mondo televisivo avrebbe proprio bisogno di una rivoluzione simile.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.forabetterweb.com/2010/10/google-tv-il-futuro-della-televisione/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

