WebP: una alternativa a JPG y PNG

Los formatos JPEG y PNG son muy populares para el diseño de páginas web, pero fueron creados para una web muy diferente a la que usamos hoy. Nuevos formatos de imágenes como WebP ofrecen mejor calidad con archivos más pequeños para sitios web que cargan más rápido.

El formato JPEG fue creado en 1992, y actualizado a la versión que conocemos hoy en 1994. El formato PNG, que agrega un canal de transparencia, fue creado en 1996 y liberado en 1997. Ambos formatos fueron creados para hacer más sencilla la publicación de imágenes con calidad fotográfica en la web, cuando la gente aún se conectaba utilizando un modem y una línea telefónica.

Tanto JPG como PNG ofrecían una relación calidad-tamaño mucho mejor que otros formatos de esa misma época, como BMP o TIF, y esto ayudó mucho a su rápida adopción. Sin embargo, 25 años después el uso de la web ha cambiado, y los usuarios ahora tienen pantallas de super alta resolución (desde Retina Display hasta 4K) en sus PCs, smartphones y smartTVs, aunque el ancho de banda no ha crecido en la misma proporción ni al mismo ritmo.

Sabemos que el tiempo de carga de un sitio afecta su experiencia de usuario y reduce la tasa de conversiones en él. Al mismo tiempo, sitios con imágenes de mala calidad o de baja resolución también son percibidos de manera negativa por sus usuarios. ¿Cómo crear sitios con imágenes de buena calidad sin aumentar el tiempo de carga?

WebP, un nuevo formato para imágenes digitales

En el año 2010, la empresa On2 Technologies estaba trabajando en un nuevo codec de video llamado WebM (Web Multimedia) como una opción más abierta para la distribución de video en la web, en contraste con otros codecs de video que tienen restricciones legales por uso de patentes para migrarlas a múltiples plataformas.

Uno de los trabajos derivados del grupo de trabajo de WebM fue WebP, anunciado por primera vez el 30 de septiembre de 2010 como un nuevo estándar abierto para gráficos de color (true color) con compresión para la web, capaz de producir archivos más pequeños con una calidad de imagen similar al esquema JPEG.

En 2010 Google adquirió a On2 Technologies y a finales de 2011 anunció el soporte de WebP para imágenes animadas (como hace el formato GIF), transparencia (canal alfa), perfil ICC, soporta para metadatos en estándar XMP y soporte para creación de imágenes de mosaico (teselado) de hasta 16384×16384 unidades.

Características y ventajas de WebP

De acuerdo a Google, las imágenes WebP lossless son 26% más pequeñas en tamaños comparadas con su equivalente en PNGs. Las imágenes WebP lossy son entre 25 y 34% más pequeñas que imágenes JPEG con la misma calidad.

Imagen en formato PNG: 1.15 Mb. Misma imagen en formato WebP: 75 Kb.
Crédito: Luc Viatour

Las imágenes WebP lossless tienen soporte para transparencia (también conocido como canal alfa) al costo de solo 22% bytes adicionales. Para los casos en que la compresión RGB es aceptable, las imágenes WebP lossy también soportan transparencia, proveyendo archivos hasta tres veces más pequeños comparados con imágenes PNG de la misma calidad.

Comparativa de imágenes PNG con WebP lossless y lossy con transparencia.
Fuente:Galería WebP de Google

Soporte de WebP

A pesar de que WebP ya tiene casi 10 años de publicado, no había sido una alternativa viable para sustituir archivos JPG o PNG debido a la falta de soporte en los navegadores web, aunque eso está cambiando rápidamente.

WebP es soportado actualmente por Google Chrome para desktop y mobile, Firefox, Opera y Edge; solo Internet Explorer y Safari no ofrecen soporte nativo para WebP todavía.

Una opción para dar soporte a navegadores que no soportan WebP nativamente, es utilizar la etiqueta HTML picture, con un respaldo de la imagen en JPG o PNG:

<picture>
<source srcset="img/tesseractspace.webp" type="image/webp">
<source srcset="img/tesseractspace-old.jpg" type="image/jpeg">
<img src="img/tesseractspace-old.jpg" alt="Texto Alt de la imagen">
</picture>

Los navegadores más antiguos que no soporten la etiqueta picture usarán la referencia de la etiqueta img.

Muchas aplicaciones de diseño gráfico ya soportan el formato WebP tanto para edición como para exportación. Sketch tiene soporte nativo para Web; en Adobe Photoshop aún es necesario instalar un plug-in para esta funcionalidad.

El panel para exportar recursos en Sketch, configurado para WebP. Crédito: Jeremy Wagner

Herramientas para conversión a WebP

WebP es un formato para imágenes digitales de código abierto, lo que facilita la creación de herramientas para crear imágenes en este formato.

La principal herramienta para conversión de imágenes JPG o PNG a WebP o viceversa es la herramienta de línea de comando cwebp, disponible sin costo para Windows, Mac o Linux precompiladas, usando Git o un gestor de paquetes como Chocolatey (Windows) o HomeBrew (Mac)

Por ejemplo, para convertir todas las imágenes en una carpeta a WebP, se hace con este comando:

  • Para Windows:
 > for /R . %I in (*.jpg) do ( cwebp.exe %I -o %~fnI.webp )
  • Para Mac / Linux:
$ for F in *.jpg; do cwebp $F -o basename ${F%.jpg}.webp; done

También es posible hacer conversión de imágenes por lotes usando node.js, instalando antes los módulos imagemin y imagemin-webp:

npm install imagemin imagemin-webp

El script en node.js sería algo así:

const imagemin = require("imagemin");
const webp = require("imagemin-webp");
imagemin(["originales/*.png"], "imagenes", {
use: [
webp({
quality: 75
})
]
}).then(function() {
console.log("Todas la imágenes fueron convertidas");
});

Para Safari en Mac o en iOS, o para los usuarios de Internet Explorer, se pueden utilizar servicios en la Nube como Cloudinary, que ofrece conversión de imágenes con un API REST que automáticamente ofrece una imagen en formato WebP si el navegador del usuario la soporta, o la cambia a JPG/PNG si el navegador no la soporta, conservando la extensión de los archivos.

  • URI para WebP en Cloudinary:
https://res.cloudinary.com/drp9iwjqz/image/upload/f_auto,q_auto/v1508291830/jeremywagner.me/using-webp-images/tacos-2x.jpg

Referencias

Además de la documentación oficial en el sitio de WebP, el libro «The WebP Manual» de Jeremy Wagner ofrece muchas técnicas para crear, convertir e implementar el formato WebP en sitios web y apps móviles.

Tiempo de carga en la experiencia del usuario

No todo lo que tiene que ver que Experiencia de Usuario es visual. Un factor invisible como el tiempo que tarda en cargar una página web es críticos en el diseño de UX para hacerla más usable y aumentar sus conversiones.

Aunque los usuarios pueden tener acceso a conexiones a Internet cada vez más rápidas y a dispositivos con mejores procesadores, el tiempo de carga de una página web todavía se encuentra en un promedio de 12 segundos de carga, en la mayoría de los casos por malas prácticas de diseño y desarrollo. Mejorar este tiempo de carga y las causas que lo origina impacta la usabilidad percibida del usuario.

Un estudio de Google encontró una relación inversamente proporcional entre el tiempo de carga de una página y la probabilidad de que su usuario la abandone. Si la página tarda:

  • 1 a 3 segundos la probabilidad de abandono aumenta un 32%
  • 1 a 5 segundos la probabilidad de abandono aumenta un 90%
  • 1 a 6 segundos la probabilidad de abandono aumenta un 106%
  • 1 a 10 segundos la probabilidad de abandono aumenta un 123%

De forma similar, si el número de elementos en la página -texto, títulos, imágenes— sube de 400 a 6,000, la probabilidad de conversión (de que el usuario termine lo que está haciendo) cae un 95%.

Existe una relación inversamente proporcional entre el tiempo de carga de una página y la probabilidad de que sea abandonada. Fuente: Google

Como se puede notar en la gráfica, el tiempo de carga ideal para un usuario es debajo de los 3.3 segundos, que corresponde con el mayor índice de conversiones.

Factores del tiempo de carga de una página web

Aunque el ancho de banda juega un papel importante, es necesario reconocer que no es posible para los dueños del sitio (y a veces tampoco para el usuario) controlar el ancho de banda al que tiene acceso. Es mejor asumir que los usuarios tendrán anchos de banda lentos o limitados y enfocarnos en los factores que están bajo nuestro control.

Al contrario de lo que se asume comúnmente, el tiempo de carga de un sitio aumenta debido a malas prácticas de diseño y desarrollo web, y a una mala gestión del servidor donde la página se hospeda. Entre los errores y problemas más comunes se encuentran:

  • Imágenes demasiado grandes o poco optimizadas,
  • Carga de elementos visuales con contenido como imágenes de carruseles o publicidad,
  • Falta de uso del cache del usuario para reducir la carga en sesiones subsecuentes,
  • Carga de scripts de JavaScript muy grandes,
  • Hojas de estilo CSS sin optimizar,
  • Falta de compresión desde el servidor web,
  • Carga de elementos de sitios de terceros que son más lentos,

Un factor importante es que no todos los sitios están correctamente optimizados para dispositivos móviles, a pesar que sabemos que más de la mitad del tráfico de un sitio web se origina en smartphones:

Porcentaje de las páginas web que solicitan desde dispositivos móviles de 2009 a 2018. Fuente: Statista

Consciente del aumento del tráfico desde dispositivos móviles, Google anunció la liberación de su Mobile-First Index, lo que significa desde 2018 las páginas web optimizadas para móviles tendrán una mejor posición en los resultados orgánicos del buscador que las que estén enfocadas a pantallas grandes en computadoras de escritorio.

Métricas de medición de tiempo de carga

La medición y optimización del tiempo de carga de un sitio no depende de un factor único. Para poder darle seguimiento y de la misma manera en que se hace en los estudios de usabilidad, es necesario definir métricas de desempeño que nos ayuden a planear de manera cuantitativa.

Algunas métricas indispensables son:

  • Tiempo de interacción. Es el tiempo que tarda la página en reaccionar a una acción del usuario, por ejemplo, clic o tap en un botón para mostrar contenido, para comenzar a abrir una página nueva o para descargar un archivo.
  • Tiempo de carga mínimo (primer byte). Mide el tiempo que tarda en establecerse la conexión entre el usuario y el servidor y comenzar a descargar los elementos estáticos de la página, después del rederizado en el servidor.
  • Peso de la página. Es el tamaño completo de los elementos estáticos de la página (en Kilobytes) que se necesitan descargar para ver la página completa.
  • Tiempo para iniciar renderizado. Es el tiempo que le toma al navegador interpretar los elementos que ha descargado (HTML, CSS, JavaScript, imágenes, etc.) para comenzar a «dibujar» la página web.
  • Número de solicitudes. Mide el número de peticiones que una página hace a un servidor (propio o de un tercero) durante su carga.
  • Tiempo de carga. Es el tiempo total promedio que toman todos los elementos de una página para descargarse al usuario.
  • SpeedRank. Es una medida del tiempo de carga de la página comparado con otros sitios similares, que se mide en puntos porcentuales (0-100%).

Herramientas para medición y optimización de sitios web

Google ha creado algunas herramientas para poder hacer análisis del tiempo y la experiencia de carga de una página web para optimizarlas:

PageSpeed Insights

PageSpeed Insights analiza el contenido de una página web y crea sugerencias para hacerla más rápida, además de que permite medir algunas métricas de tiempo de carga.

Google Test My Site

Test My Site mide la velocidad de todas las páginas que conforman tu sitio en función de datos del mundo real recopilados mediante el Informe sobre la experiencia de usuario en Chrome (Chrome User Experience Report). Este informe se actualiza todos los meses y está disponible de forma pública y es la fuente de datos históricos y actuales. Los datos se muestran por país y tipo de conexión efectiva.

Conclusión

Comprendiendo de manera cuantitativa los factores que aumentan el tiempo de carga de una página, podremos trabajar en un plan de mejora para llevar nuestras páginas y aplicaciones a más usuarios en menos tiempo para ayudarlos a lograr sus objetivos.

Diseño de microinteracciones

No basta que un producto o sistema digital funcionen, el diseño de la experiencia de usuario se nota en los detalles. Las microinteracciones son la diferencia entre un producto ordinario y uno extraordinario.

Una microinteracción se define como un momento autocontenido de un producto que se desarrolla alrededor de un caso de uso específico. Es un detalle funcional e interactivo de un producto.

Microinteracción en un FAB

Las microinteracciones difieren de las funcionalidades (features) de un sistema en tamaño y alcance. Las microinteracciones son práctica o literalmente invisibles, y pocas veces son la razón para comprar de un producto.

A pesar de su tamaño y poca visibilidad, son increíblemente importantes en el diseño de la experiencia de usuario. Una de las microinteracciones más famosas y utilizadas, por ejemplo, son las funciones de Copiar y/o Pegar, diseñadas por Larry Tesler en 1971 y que se utilizan en muchísimos sistemas y apps.

Ejemplos de microinteracciones en un formulario de registro. Crédito: Hijin Nam para Upwork

Si las microinteracciones son pobres, no importa que tan bien estén hechas las funcionalidades principales, estarán rodeadas de frustración y molestia.

«Las microinteracciones están a nuestro alrededor. Son un caso de uso
único que hace una sola cosa. La diferencia entre un producto que amamos y un producto que sólo toleramos son a menudo las microinteracciones que tenemos con él.»

Donald Norman

Las microinteracciones se utilizan para:

  • Lograr una sola tarea,
  • Conectar dispositivos o servicios,
  • Interactuar con un único dato,
  • Controlar un proceso en ejecución,
  • Ajustar una configuración,
  • Ver o crear contenido puntual,
  • Activar o desactivar una función.

Estructura de una micro interacción

Hay tres formas de integrar micro interacciones en un sistema:

  1. Identificarlas y darles un tratamiento individual.
  2. Reducir una funcionalidad a una micro interacción clave.
  3. Tratar cada funcionalidad como una serie de microinteracciones encadenadas.

Dave Saffer explica en su libro Microinteractions que para el diseño de una micro-interacción se definen cuatro componentes de la misma:


Estructura de una micro-interacción. Crédito: Dan Saffer

1. Disparadores

Un disparador (trigger) es cualquier evento o control que activa una micro-interacción. Puede ser un control, un icono, un formulario, un comando de voz o un gesto en una superficie táctil, y puede ser visible, invisible o un componente del sistema que se activa en ciertas condiciones. El disparador de una microinteracción debe verse como algo que el usuario entiende que es un disparador y siempre debe iniciar la misma acción cada vez que se utilice.

2. Reglas

Las reglas (rules) determinan el comportamiento de la microinteracción. Hay que recordar que las reglas no siempre van a ser obvias para el usuario, y éstas se le revelan de dos maneras: por lo que puede hacer y por lo que no puede.

Las reglas de una microinteracción afectan la experiencia de usuario al determinar qué pasa y en qué orden y sin no son claras pueden convertirse en fricción para el usuario. Se recomienda utilizar diagramas de flujo para diseñarlas.

3. Retroalimentación

El propósito de la retroalimentación (feedback) en una microinteracción es ayudar al usuario a entender sus reglas. La retroalimentación no explica las reglas pero debería ser un apoyo para que el usuario construya un modelo mental sobre el funcionamiento del producto que está usando.

El principio de la usabilidad para retroalimentación es que menos es más: no hay que saturar al usuario con información.

La animación es una excelente manera de dar retroalimentación al usuario. Chet Hasse y Romain Guy del equipo de diseño de Android definieron las características para el diseño de animaciones en interfaces visuales. Estas deberían ser:

  • Rápidas: entre 0.01 y 0.5 segundos.
  • Orgánicas: el movimiento torpe o cortado hacen que la micro-interacción se siente rota.
  • Natural: debería seguir las leyes naturales de gravedad e inercia.
  • Simple: debe tener un sentido y un propósito.
  • Intencional: no debe ser un adorno.

4. Ciclos y modos

Los ciclos y modos (loops & modes) controlan el meta-comportamiento de la micro interacción y determinan la duración de las microinteracciones también si el usuario necesitará repetirlo o cambiarlo con el tiempo. En microinteracciones hay cuatro estilos de ciclos: ciclos controlados (for-loop), ciclos condicionales (while-loop), ciclos basados en colecciones y ciclos infinitos.

Las microinteracciones se han vuelto elementos clave en el diseño de interactivo y de experiencia de usuario para dar claridad a las funcionalidades y hacerlas agradables y memorables.

Los 12 principios de animación

La animación se ha vuelto un componente indispensable en el diseño interactivo. En el diseño de UX, la animación debe agregar valor, en lugar de ser un adorno, y los 12 principios de animación de Disney son una buena guía sobre el diseño de animaciones.

Los llamados «doce principios básicos de la animación» fueron presentados en 1981 por los animadores Ollie Johnston y Frank Thomas de Walt Disney Animation Studio en su libro The Illusion of Life: Disney Animation basándose en el trabajo de los animadores de Disney desde 1930 en adelante.
Muchos animadores llaman a este libro la «biblia de la animación» y en 1999 fue votado como el mejor de los libros de animación de todos los tiempos.

El objetivo de documentar estos principios fue crear guías para producir animaciones más realistas y que las animaciones se apegaran un poco más a las leyes básicas de la física, aunque también se tratan temas más abstractos, como la sincronización emocional y el atractivo de un personaje.

Aunque los 12 principios originalmente fueron desarrollados para usarse en animación tradicional, estos también pueden utilizarse como guías en diseño interactivo para la creación de transiciones y microinteracciones en productos digitales:

1. Estirar y encoger

1. Estirar y encoger (Squash & stretch). Crédito: cento lodigiani

El principio de estirar y encoger agrega a una animación la idea de peso y flexibilidad. Puede ser aplicado a objetos simples, como un círculo rebotando o algo más complejo como tarjeta o una pantalla completa.​ Lo más importante de este principio es que el volumen del objeto no cambia cuando se estira o se encoge.

2. Anticipación

2. Anticipación (anticipation). Crédito: cento lodigiani

La anticipación se usa para preparar al observador para una acción y que la animación se sienta más realista. Esta técnica también se utiliza en momentos en que va a ocurrir un evento importante para preparar al observador y que éste preste atención a lo que está a punto de suceder.

3. Puesta en escena

3. Puesta en escena (staging). Crédito: cento lodigiani

Este principio está basado en lo que en teatro y en cine se conoce como «puesta en escena«. El propósito es dirigir la atención del observador y definir qué es lo más importante en su campo de visión.​ Esto puede hacerse de diferentes maneras, como colocar lo que queremos que el usuario centre su atención dentro del cuadro, usando luces y sombra, o la perspectiva del punto de visión del observador.​

Lo importante es mantener la atención del observador en lo que es relevante, evitando los detalles innecesarios. En diseño interactivo, la definición de affordances es parte de la puesta en escena.

4. Animación directa y pose a pose.

4. Animación directa y pose a pose (Straight ahead & pose to pose). Crédito: cento lodigiani

Estas son dos aproximaciones distintas al proceso de crear una animación: la animación directa significa dibujar directamente una escena cuadro por cuadro de principio a fin. La animación directa crea una ilusión de fluidez y dinamismo en el movimiento y es mejor para producir secuencias realistas, aunque en esta técnica es más difícil mantener proporciones y perspectivas precisas.

La animación pose a pose implica empezar el proceso de animación dibujando los cuadros clave y posteriormente llenando los espacios (algo que los diseñadores familiarizados con Adobe Flash conocen como tweetning). ​Por lo general, se usa una combinación de ambas técnicas para mejores resultados.

5. Acciones complementarias y superpuestas

5. Acciones complementarias y superpuestas (Follow through & overlapping). Crédito: cento lodigiani

Las acciones complementarias y las superpuestas son técnicas de animación que se relacionan estrechamente, ya que ambas ayudan a que el movimiento sea más realista y dé la ilusión de que un objeto se mueve respetando el principio físico de la inercia:

  • La acción complementaria significa que las piezas desvinculadas del objeto deben continuar su movimiento incluso después de que el objeto dejó de moverse, y deben mostrar el movimiento de amortiguación.
  • La acción superpuesta se aplica cuando las partes de un objeto se mueven en diferentes rangos o momentos según su relación con el objeto principal y a la velocidad en que éste se mueva.

6. Acelerar y desacelerar

6. Acelerar y desacelerar (Slow in & slow out). Crédito: cento lodigiani

En el mundo real ningún objeto pasa del reposo absoluto al movimiento continuo en un paso: todos los objetos necesitan tiempo para acelerar o disminuir su velocidad. En animación, los objetos se mueven más despacio al principio y más lentamente al final de una acción, para crea un efecto de arranque y frenado que haga la animación más realista.

7. Arcos

7. Arcos (Arcs). Crédito: cento lodigiani

Casi nada en el mundo real se mueve en línea recta, y tampoco en la animación. La de los objetos, incluyendo seres vivos y personas se mueven en caminos circulares llamados arcos.

Los arcos operan a lo largo de una trayectoria curva que agrega la ilusión de vida a un objeto animado en acción. Sin arcos, las animaciones se sienten rígidas y mecánicas.

8. Acción secundaria

8. Acción secundaria (Secondary action). Crédito: cento lodigiani

Agregar movimientos adicionales a la acción principal le agrega más vida y la enfatiza en lugar de desviar la atención de ellas. Las acciones secundarias funcionan mejor si se agregan al principio y al final del movimiento principal.

9. Sincronización

9. Sincronización (Timing). Crédito: cento lodigiani

La sincronización en animación se refiere a los momentos (o tiempos) en que ocurre algo en ella. El éxito de una animación depende de cómo se represente el paso del tiempo, ya que una buena sincronización le agrega ritmo y emoción.

En ocasiones es bueno agregar un sonido incidental temprano, ya que el oído está más en sintonía con las sutilezas de la sincronización que el ojo.

10. Exageración

10. Exageración (Exaggeration). Crédito: cento lodigiani

En animación, a veces más es mejor. La exageración presenta las características y acciones de un objeto de una manera extrema para obtener un efecto cómico o dramático. Esto puede incluir distorsiones en la forma del objeto o en su movimiento.

La exageración es una excelente recurso para aumentar el atractivo emocional de la animación y mejorar su narrativa.

11. Dibujo sólido

11. Dibujo sólido (Solid drawings). Crédito: cento lodigiani

El principio de dibujo sólido significa representar formas de manera tridimensional dando la ilusión de volumen y peso en una pantalla plana.

Para lograrlo es necesario comprender y aplicar correctamente conceptos básicos de perspectiva, volumen, peso, equilibrio, iluminación, etc. en referencia de la experiencia del observador en el mundo real.

12. Atractivo

12. Atractivo (Appeal). Crédito: cento lodigiani

Las personas recuerdan a los personajes que sienten reales, interesantes y atractivos. Los objetos y personajes animados deben ser agradables a la vista y tener un aspecto placentero. El atractivo en un objeto animado es lo que en los actores humanos se llama carisma.

El atractivo en la animación puede ser difícil de cuantificar porque cada persona tiene una idea y expectativas diferentes sobre lo que consideran atractivo, y esta percepción también cambia entre culturas y con el paso del tiempo.

Animación en sistemas de diseño

Dada la importancia de la animación en el diseño interactivo, y la necesidad de mantener consistencia de la misma en un mismo proyecto o en una familia de productos, es importante agregarlo como parte de un sistema de diseño.

Patrones de animación en Material Design. Crédito: Ehsan Rahimi

Existen guías y estilos muy claros para crear animaciones en sistemas de diseño como Material Design, Apple Human Interface Guidelines o Fluent Design System y que son parte de su filosofía de diseño, que se pueden utilizar para no comenzar a diseñar animaciones desde cero.