Google Cloud se asoció con The New York Times para ayudarlos a digitalizar su vasta colección de fotos. Para ello, utilizan numerosas herramientas dentro de Google Cloud Platform que les permiten almacenar de forma segura sus imágenes, acceder a una mejor interfaz para encontrar fotos y descubrir nuevas perspectivas a partir de los datos escritos en el reverso de las imágenes.Read More
Google Cloud se asoció con The New York Times para ayudarlos a digitalizar su vasta colección de fotos. Para ello, utilizan numerosas herramientas dentro de Google Cloud Platform que les permiten almacenar de forma segura sus imágenes, acceder a una mejor interfaz para encontrar fotos y descubrir nuevas perspectivas a partir de los datos escritos en el reverso de las imágenes.
Durante más de 100 años, The Times ha archivado aproximadamente de cinco a siete millones de sus fotos antiguas en un lugar llamado la "morgue", un depósito que alberga cientos de archivadores ubicado tres pisos bajo tierra cerca de sus oficinas, en Times Square. Muchas de las fotos se han almacenado en carpetas y no se han vuelto a usar en años. Si bien hay un catálogo de tarjetas que proporciona una visión general del contenido del archivo, hay muchos detalles en las fotos que no se pueden indexar.
Foto de Earl Wilson para The New York Times
Preservando la historia visual
La morgue contiene fotos de finales de siglo XIX que representan un enorme valor histórico que no se encuentra en ningún otro lugar del mundo. En 2015, una tubería rota inundó la biblioteca de archivos, lo que puso en riesgo a toda la colección. Afortunadamente, el daño fue menor, pero ese suceso desencadenó la siguiente pregunta: ¿cómo se pueden almacenar de manera segura algunos de los recursos físicos más preciados de la empresa?
"La morgue es un tesoro de documentos perecederos que son una crónica invaluable, no solo de la historia de The Times, sino de casi más de un siglo de eventos internacionales que han definido al mundo moderno", afirma Nick Rockwell, director de Tecnología de The New York Times.
No solo las imágenes contienen información valiosa. En muchos casos, la parte posterior de las fotos incluye la hora y el lugar donde se tomó. Rockwell agrega: "Durante años, el personal del departamento de fotografía y el área de negocios han estado explorando posibles formas de digitalizar las fotos de la morgue. Pero hasta el año pasado, la idea de un archivo digitalizado parecía fuera de alcance".
Para preservar esta historia invaluable y darle a The Times la posibilidad de mejorar sus informes con incluso más narraciones visuales y contexto histórico, The Times está digitalizando su archivo con Cloud Storage para almacenar escaneos en alta resolución de todas las imágenes de la morgue.
Cloud Storage es nuestro sistema para almacenar objetos que brinda a clientes como The Times una solución de administración automática, almacenamiento en diferentes regiones geográficas y una interfaz y API de administración fáciles de usar.
Creando un sistema de administración de recursos
Almacenar imágenes de alta resolución no es suficiente para crear un sistema que los editores de fotos puedan usar fácilmente. Para que un sistema de administración de recursos funcione correctamente, debe permitir que los usuarios puedan navegar y buscar fotos sin complicaciones. The Times creó una canalización que almacena y procesa las fotos, y usará la tecnología de la nube para procesar y reconocer texto, escritura a mano y otros detalles que se pueden encontrar en las imágenes.
Así es como funciona. Una vez que se ingiere una imagen en Cloud Storage, The Times utiliza Cloud Pub/Sub para iniciar el procesamiento y realizar varias tareas. Las imágenes se redimensionan a través de los servicios que se ejecutan en Google Kubernetes Engine (GKE), y los metadatos de la imagen se almacenan en una base de datos PostgreSQL que se ejecuta en Cloud SQL, el servicio de base de datos totalmente administrado de Google.
Cloud Pub/Sub ayudó a The New York Times a crear esta canalización sin necesidad de crear API complejas o sistemas de procesos empresariales. Además, como es una solución totalmente administrada, no se pierde tiempo manteniendo la infraestructura subyacente.
Para cambiar el tamaño de las imágenes y modificar sus metadatos, The Times utiliza los programas de línea de comandos de código abierto "ImageMagick" y "ExifTool". Agregaron estas herramientas con servicios de Go a las imágenes de Docker para ejecutarlas en GKE de forma escalable y con un mínimo esfuerzo administrativo. Agregar más capacidad para procesar más imágenes es algo trivial, y The Times puede detener o iniciar su clúster Kubernetes cuando no es necesario. Las imágenes también se guardan en depósitos multirregionales de Cloud Storage para que estén disponibles en varias ubicaciones.
La última pieza del archivo es el seguimiento de ambas imágenes y sus metadatos a medida que avanzan a través de los sistemas de The Times. Cloud SQL es una gran opción. Para los desarrolladores del reconocido periódico, esta herramienta proporciona una instancia estándar de PostgreSQL, como un servicio totalmente administrado, que elimina la necesidad de instalar nuevas versiones, aplicar parches de seguridad o configurar opciones de replicación complejas. Cloud SQL les permite a los ingenieros utilizar una solución SQL estándar de forma sencilla.
Aprendizaje automático para obtener información adicional
Almacenar las imágenes es solo la mitad de la historia. Para hacer que un archivo como la morgue de The Times sea más accesible y útil, se deben aprovechar las funciones adicionales de GCP. En el caso de The Times, uno de los mayores desafíos al escanear un archivo fotográfico ha sido agregar datos sobre el contenido de las imágenes. La API de Cloud Vision puede ayudar con es tarea.
A modo de ejemplo, echemos un vistazo a esta foto de The Times de la antigua Penn Station. Aquí se puede apreciar el frente y el reverso de la foto:
Es una hermosa imagen en blanco y negro, pero al no tener contexto adicional, no puede apreciarse bien el frente. La parte posterior contiene una gran cantidad de información útil, y la API de Cloud Vision puede ayudarnos a procesarla, almacenarla y leerla. Cuando enviamos la parte posterior de la imagen a la API sin procesamiento adicional, podemos ver que detecta el siguiente texto original en inglés:
NOV 27 1985JUL 28 1992Clock hanging above an entrance to the main concourse of Pennsylvania Station in 1942, and, right, exterior of the station before it was demolished in 1963.PUBLISHED IN NYCRESORT APR 30 ‘72The New York Time THE WAY IT WAS - Crowded Penn Station in 1942, an era “when only the brave flew - to Washington, Miami and assorted way stations.”Penn Station’s Good Old Days | A Buff’s Journey into Nostalgia( OCT 3194RAPR 20072PHOTOGRAPH BY The New York Times Crowds, top, streaming into the old Pennsylvania Station in New Yorker collegamalan for City in 1942. The former glowegoyercaptouwd a powstation at what is now the General Postadigesikha designay the firm of Hellmuth, Obata & Kassalariare accepted and financed.Pub NYT Sun 5/2/93 MetroTHURSDAY EARLY RUN o cos x ET RESORTEB 11 1988RECEIVED DEC 25 1942 + ART DEPT. FILESThe New York Times Business at rail terminals is reflected in the hotelsOUTWARD BOUND FOR THE CHRISTMAS HOLIDAYS The scene in Pennsylvania Station yesterday afternoor afternoothe New York Times (Greenhaus)
Este es el resultado real de nuestra API de Cloud Vision sin procesamiento previo de la imagen. Por supuesto, la transcripción de texto digital no es perfecta, pero es más rápida y económica que las alternativas para procesar millones de imágenes.
Llevando el pasado al futuro
Esto es solo el comienzo de lo que las empresas pueden hacer con archivos físicos, ya que la API de Vision permite identificar objetos, lugares e imágenes. Por ejemplo, si analizamos la foto en blanco y negro de arriba usando la API de Cloud Vision con detección de logotipo, podemos ver que se reconoce Pennsylvania Station. Además, se puede usar AutoML para identificar mejor las imágenes de las colecciones utilizando un corpus de imágenes ya analizadas.
Podría utilizarse la API de Cloud Natural Language para agregar información semántica al texto reconocido. Por ejemplo, si analizamos el texto "The New York Time THE WAY IT WAS - Crowded Penn Station in 1942, an era when only the brave flew - to Washington, Miami and assorted way stations.", identifica correctamente "Penn Station", "Washington" y "Miami" como ubicaciones, y clasifica toda la oración en la categoría "viaje" y la subcategoría "autobús y tren".
Ayudar a The New York Times a transformar su archivo fotográfico encaja perfectamente con la misión de Google de organizar la información del mundo y hacer que sea universalmente accesible y útil. Esperamos que al compartir lo que hicimos, podamos inspirar a más organizaciones (no solo a editores) a recurrir a la nube y a utilizar otras herramientas, como la API de Cloud Vision, Cloud Storage, Cloud Pub/Sub y Cloud SQL, para preservar y compartir su valiosa historia.
Visita nuestro sitio para obtener más información sobre la IA y el aprendizaje automático en Google Cloud.
Si estás compilando o quieres compilar una app visual, te encantará la nueva detección de contorno de rostros de ML Kit. Con esta herramienta, puedes aprovechar muchos casos prácticos comunes del aprendizaje automático (AA), como la detección de rostros mediante visión artificial. ¿Tienes una foto y necesitas saber dónde colocar un sombrero en la cabeza de una persona? ¿Quieres colocar anteojos sobre los ojos de alguien? ¿O, quizás, solo un monóculo en el ojo izquierdo? Todo esto es posible con la detección de rostro de ML Kit. En esta entrada, hablaremos sobre la nueva función de contorno de rostros que permite compilar mejores apps visuales, tanto en Android como en iOS.Read More
Christiaan Prins
Gerente de producto
Si estás compilando o quieres compilar una app visual, te encantará la nueva detección de contorno de rostros de ML Kit. Con esta herramienta, puedes aprovechar muchos casos prácticos comunes del aprendizaje automático (AA), como la detección de rostros mediante visión artificial. ¿Tienes una foto y necesitas saber dónde colocar un sombrero en la cabeza de una persona? ¿Quieres colocar anteojos sobre los ojos de alguien? ¿O, quizás, solo un monóculo en el ojo izquierdo? Todo esto es posible con la detección de rostro de ML Kit. En esta entrada, hablaremos sobre la nueva función de contorno de rostros que permite compilar mejores apps visuales, tanto en Android como en iOS.
Detecta contornos faciales
Con solo unas pocas opciones de configuración, ahora puedes detectar el contorno detallado de un rostro. Un contorno es un conjunto de más de 100 puntos que perfilan el rostro y rasgos comunes como los ojos, la nariz y la boca. Puedes verlos en la siguiente imagen. Observa cómo, cuando la persona levanta las cejas, los puntos del contorno se mueven para acompañarlas. Estos puntos muestran cómo hacen las apps de cámara avanzadas para configurar filtros creativos y gafas artísticas en el rostro de un usuario.
A fin de configurar el detector de rostros para que detecte estos puntos, solo se necesitan unas pocas líneas de código.
lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.contourMode = .all
let faceDetector = vision.faceDetector(options: options)
Los puntos de contorno también se pueden actualizar en tiempo real. Con el objetivo de lograr un índice de fotogramas ideal, el detector de rostros está configurado en modo fast de manera predeterminada.
Cuando estés listo para detectar puntos en un rostro, envía una imagen o un búfer a ML Kit para su procesamiento.
faceDetector.process(visionImage) { faces, error in
guard error == nil, let faces = faces, !faces.isEmpty else { return }
for face in faces {
if let faceContour = face.contour(ofType: .face) {
for point in faceContour.points {
print(point.x) // the x coordinate
print(point.y) // the y coordinate
}
}
}
ML Kit te especificará una matriz de puntos, que son las coordinadas X e Y de los contornos ubicados en la misma escala que la imagen.
Detecta la ubicación de rasgos faciales
El detector también puede detectar puntos de referencia en rostros. Un "punto de referencia" es un término amplio que se usa para definir rasgos faciales, como la nariz, los ojos, las orejas y la boca. Hemos mejorado drásticamente su rendimiento desde que lanzamos ML Kit en I/O.
Para detectar puntos de referencia, configura el detector de rostros con la opción landmarkMode:
lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.landmarkMode = .all
let faceDetector = vision.faceDetector(options: options)
Luego, pasa una imagen por el detector para recibir y procesar las coordenadas de los puntos de referencia detectados.
faceDetector.process(visionImage) { faces, error in
guard error == nil, let faces = faces, !faces.isEmpty else { return }
for face in faces {
// check for the presence of a left eye
if let leftEye = face.landmark(ofType: .leftEye) {
// TODO: put a monocle over the eye [monocle emoji]
print(leftEye.position.x) // the x coordinate
print(leftEye.position.y) // the y coordinate
}
}
}
Estamos ansiosos por ver tus compilaciones con ML Kit
Esperamos que estas nuevas funciones te permitan compilar fácilmente funciones más inteligentes en tus apps visuales. Consulta nuestros documentos para iOS o Android, y descubre más sobre la detección de rostros con ML Kit. ¡Suerte en el proceso de compilación!
Todos lo desarrolladores usan programadores de trabajos como cron, ya que ayudan a ejecutar tareas programadas y automatizar el mantenimiento del sistema. Sin embargo, muchos de estos programadores presentan los mismos desafíos que otros servicios de TI tradicionales: la necesidad de administrar la infraestructura subyacente, la sobrecarga operativa de reiniciar manualmente los trabajos con errores y la falta de visibilidad del estado de un trabajo.
Hoy, nos complace anunciar Cloud Scheduler, un servicio de trabajo cron completamente administrado que permite a cualquier aplicación invocar operaciones de infraestructura de nube, macrodatos y por lote.
Cloud Scheduler brinda todos los beneficios de un servicio cron, incluidos los siguientes:
Entrega confiable: Cloud Scheduler permite que el trabajo se entregue a su destino al menos una vez, lo que garantiza que los trabajos esenciales se invoquen para su ejecución.
Ejecución tolerante a errores: Cloud Scheduler permite automatizar los reintentos y ejecutar un trabajo de una manera tolerante a errores mediante la implementación en diferentes regiones para eliminar el riesgo de un único punto de error de un cron alojado.
Experiencia de administración unificada: Cloud Scheduler permite invocar programaciones mediante la IU, la CLI o la API, y aun así tener una experiencia de administración de panel único. Para definir programaciones de trabajos, también admite el formato cron de Unix ya conocido.
Por último, Cloud Scheduler logra todo esto de manera completamente administrada, sin servidores ni necesidad de administrar la infraestructura subyacente o intervenir manualmente, ya que reintenta ejecutar los trabajos con errores. Además, solo pagas por las operaciones que ejecutas, ya que GCP se ocupa de todo el aprovisionamiento de recursos, la réplica y el escalamiento necesarios para el funcionamiento de Cloud Scheduler. Como desarrollador, simplemente creas tus programaciones y Cloud Scheduler se encarga del resto. Nomanini, una startup sudafricana que ofrece servicios de pago para mercados informales, es usuario pionero de Cloud Scheduler. "Confiamos en Cloud Scheduler para programar trabajos por lote y generar informes esenciales que se envían por correo electrónico a nuestros clientes todas las mañanas. Nos gustó la manera en que Cloud Scheduler nos permite definir a la perfección un trabajo programado mediante la IU y la CLI. La capacidad de invocar Google Cloud Functions para una programación ayudó a unir nuestro sistema de informes". —Dave Humby, director de Tecnología, Nomanini
Cloud Scheduler en acción
Puedes usar Cloud Scheduler para diferentes casos prácticos. Piensa, por ejemplo, en programar actualizaciones de bases de datos y notificaciones push, activar canalizaciones de IC/EC, programar tareas como cargas de imágenes y envíos de correo electrónico, e invocar Cloud Functions mediante Cloud Pub/Sub. Para programar un trabajo, puedes usar la CLI, la API o la IU de Cloud Scheduler para invocar tu extremo HTTP/S, tema de Pub/Sub o aplicación de App Engine favoritos.
Cloud Scheduler ejecuta un trabajo mediante el envío de una solicitud HTTP o mensaje de Cloud Pub/Sub a un destino especificado con una programación recurrente. El controlador del destino ejecuta un trabajo y devuelve una respuesta. Si el trabajo tiene éxito, se devuelve un código de éxito (2xx para HTTP/AppEngine y 0 para Pub/Sub) a Cloud Scheduler. Si no lo tiene, se devuelve un error a Cloud Scheduler, que luego reintenta hacer el trabajo hasta alcanzar la cantidad máxima de intentos. Una vez que se programó el trabajo, puedes supervisarlo en la IU de Cloud Scheduler y comprobar su estado.
Comienza hoy
Con Cloud Scheduler, ahora tienes una solución moderna y sin servidores para tus necesidades de programación de trabajos. Para comenzar a usar Cloud Scheduler ahora mismo, consulta la guía de inicio rápido. Luego, crea y configura tus propias programaciones con la documentación o comienza con una prueba gratuita en GCP.
AreaTreses el HUB del ecosistema emprendedor de Buenos Aires, una experiencia de coworking que tiene como propósito conectar comunidades emprendedoras. En mayo de 2017 lanzamos un partnership con Google for Startups para potenciar las oportunidades y los beneficios de los equipos emprendedores que forman parte de nuestra comunidad y los resultados son increíbles.
LaunchPad Accelerator
Además de ser partners de Google for Startups, trabajamos desde 2016 codo a codo junto a Google Developers y sus contenidos locales. El año pasado, tuvimos la oportunidad de nominar a aquellas startups que considerábamos podrían sacarle el mayor provecho al 4° Launchpad Accelerator. Y, en el mes de julio, cuatro miembros de Increase -un startup argentino que potencia los negocios a través de soluciones tecnológicas y los conecta entre sí, y que forma parte de la Comunidad A3- viajaron a Silicon Valley para recibir tutorías uno a uno con mentores de la red de expertos de Google.
Google Demo Day
Más tarde llegó la nominación y posterior galardón del Google Demo Day que se celebró en San Francisco y del que participaron los líderes de 11 startups innovadores de toda América. Sebastián Cadenas, CEO de Increase, presentó su pitch de cuatro minutos frente a un grupo de inversores de primer nivel y recibió el premio mayor: una inversión de US$250 mil. Una nueva muestra de que los startups argentinos están muy preparados para competir en las grandes ligas y listos para iluminar el camino de la mano de la innovación y las buenas ideas.
En marzo de este año, de la mano de Google Developers e Increase, organizamos en conjunto un Launchpad Start Fintech en Buenos Aires, un programa intensivo de aceleración de cinco días, adaptado a las necesidades de los startups financiero-tecnológicos.
BlackBox Connect
Hace tan solo un par de semanas, Gonzalo Sisack Novillo, Founder y CEO de Mis Pichos, quien es miembro de la #ComunidadA3, viajó a San Francisco para participar de BlackBox Connect: “Fue una experiencia transformadora que nos ayudó a cambiar el chip para repensar nuestra empresa desde un óptica más global y estratégica. Además, colaboró para afianzar nuestra estrategia a la hora de armar equipos de trabajo, basándonos más en los valores y el potencial de las personas, que en sus capacidades técnicas. Esto último fue clave porque es la base para el armado de nuestra cultura y el ADN de MisPichos”. Y en ediciones anteriores, Nur Malek, CEO de EnvioPack, y Sebastián Cadenas fueron seleccionados para disfrutar de esta experiencia tan enriquecedora. En las tres oportunidades, fueron becados, es decir, Google cubrió el 100% de los costos de las estadías y el entrenamiento
Google Mentor Hours
Desde AreaTres también colaboramos con una iniciativa junto a Google Argentina, llamada Google Mentor Hours, que consiste en reunir emprendedores de nuestra comunidad con Googlers para que éstos los ayuden en sesiones de mentorías 1:1 en temas como Online Marketing, UX, Social Media, Finanzas, Business Development y muchas otras áreas más.
De esta manera A3 se hace presente en todas las etapas de las startups argentinas, y con el apoyo de aliados estratégicos como Google los ayuda a alcanzar sus objetivos y acelerar sus procesos de expansión a través de contenido y oportunidades de internacionalización.
Hace algunas semanas en Google Colombia tuvimos la visita de laFundación Haiko, una organización que trabaja por y con los niños, las niñas y jóvenes de Colombia, propiciando espacios de aprendizaje significativo, que les permitan desarrollarse integralmente, para ser agentes de cambio y generar transformaciones en dentro del país. Ellos saben que todos los niños y jovenes tienen talentos; sin embargo necesitan oportunidades para desarrollarlos, potenciarlos y usarlos como herramientas para la transformación de sus comunidades y el país.
Por Sonia Ardila, Gestion de Transformacion Digital en Datelligence, Voluntaria dentro de laFundación Haiko.
En la semana de visita a Bogotá, los niños de la fundación Haiko, dentro de Google hablamos a los jóvenes sobre algoritmos y la parte de matemáticas que mueven a nuestra compañía, y además propiciamos inspiración al mostrarles un poco de la carrera profesional que cada uno de nosotros tenemos. A los niños les encantó. Los niños estuvieron haciendo un taller de innovación en el ViveLab Bogotá, en Ecopetrol aprendiendo cómo usar las matemáticas para identificar los sitios en donde hay petróleo y cómo usan también los números para hacer pronósticos. En Huge aprendieron de la relación de las matemáticas con la programación y programaron Arduinos y Raspberry pi, en el laboratorio de Computer Vision de la Universidad de los Andes. Hablaron con ingenieros biomédicos y experimentaron con un simulador operando a un paciente con realidad virtual. Y en Google, les hablamos de algunos productos y las matemáticas que hay detrás, mientras los niños disfrutaban del recorrido por las instalaciones. Nota: El Android quedó bautizado como "el paisano".
Estas visitas son de un gran impacto para estos niños. Para casi todos, era su primera vez en un avión. Así que toda la experiencia les abre la mente y ayuda a que tengamos profesionales muy talentosos que aporten al crecimiento de nuestro querido país.
A mí, como voluntaria de la fundación Haiko me encantaría seguir con este tipo de visitas y que los niños vean cómo funcionan algunas herramientas de Cloud para que se sigan inspirando en un mundo lleno de futuro.
En la industria cinematográfica, el éxito depende de la habilidad de un estudio para atraer a los cinéfilos, pero, a veces, es más fácil decirlo que hacerlo. Los cinéfilos son un grupo diverso, con una amplia gama de intereses y preferencias. Históricamente, los estudios cinematográficos se han basado mucho en la experiencia a la hora de decidir si invertir en un guion en particular, pero esto puede provocar grandes riesgos, en especial, cuando invierten en historias nuevas y originales. El proceso iterativo y complejo de unir las historias y los públicos es algo que Julie Rieger, presidenta, jefa de estrategia de datos y jefa de medios, y Miguel Campo-Rembado, vicepresidente sénior de ciencia de datos, junto con su equipo de científicos de datos en 20th Century Fox, decidieron esclarecer con datos.
Un desafío de datos adecuado para el aprendizaje automático
Comprender la segmentación de mercado del público que va al cine es una función central de los estudios cinematográficos. Con el paso de los años, los estudios han invertido en procesos de datos de alto nivel para intentar definir segmentos de clientes y realizar predicciones para películas futuras. Sin embargo, hasta hoy, las predicciones granulares en el nivel de los segmentos, por no mencionar el nivel de los clientes, siguen siendo imprecisas debido a barreras tecnológicas e institucionales.
Miguel y su equipo pudieron derribar algunas de estas barreras gracias a trabajar con socios como Google Cloud. Juntos, creamos sociedades de datos con privacidad sólida para comprender mejor a los cinéfilos y desarrollamos modelos internos de aprendizaje profundo que se capacitan con datos granulares de clientes y guiones de películas con el fin de identificar los patrones básicos en las preferencias de los públicos para diferentes tipos de películas. En el transcurso de 18 meses, estos modelos se han convertido en consideraciones de rutina para las decisiones comerciales importantes y proporcionan uno de los barómetros más objetivos, eficaces y basados en datos para evaluar el tono de una película, su afinidad con el público principal y el expandido, y su posible desempeño financiero.
Hablemos de estos métodos más detalladamente. En materia de películas, analizar texto extraído de un guion es limitante porque solo proporciona un esqueleto de la historia, sin nada del dinamismo adicional que puede atraer a un público a ver una película. El equipo se preguntó si había alguna manera de usar una visión artificial avanzada y moderna para estudiar los tráileres de las películas, que continúan siendo el elemento más central de toda la campaña de marketing de una película. El lanzamiento del tráiler de una película nueva es un evento muy esperado que puede ayudar a predecir el éxito futuro, por lo que la empresa debe asegurarse de que este dé en la tecla para los cinéfilos. Para lograr este objetivo, el equipo de ciencia de datos de 20th Century Fox se asoció con Advanced Solutions Lab de Google para crear Merlin Video, una herramienta de visión artificial que aprende representaciones densas de tráileres de películas para ayudar a predecir el público de cine futuro de un tráiler específico.
Diseño de una canalización de datos
El primer paso del equipo fue identificar qué tecnología debía alimentar a esta herramienta. La opción obvia fue Cloud Machine Learning Engine (Cloud ML Engine), junto con el marco de trabajo del aprendizaje profundo de TensorFlow. Dado que es un servicio administrado, Cloud ML Engine automatiza todo el aprovisionamiento y la supervisión de recursos para que el equipo pueda enfocarse en crear un modelo de aprendizaje profundo para Merlin en vez de configurar infraestructura. Su integración con Cloud Dataflow también permite la generación de informes sin inconvenientes en Data Studio, lo que proporcionó al equipo un entendimiento más profundo de cómo funciona el proceso. El mantenimiento diario del sistema (mayormente, la transferencia de datos) es simple y fácil, y pueden controlarlo por completo científicos de datos en vez de requerir la intervención de ingenieros de otras unidades comerciales.
Diagrama de flujo de la arquitectura para Merlin
Con la infraestructura adecuada implementada, el equipo inicia su análisis en YouTube 8M, un conjunto de datos disponible públicamente de videos de YouTube. Este conjunto de datos incluye un modelo preparado con anterioridad por Google que puede analizar características de video específicas como color, iluminación, diversos tipos de rostros, miles de objetos y varios paisajes. Como se ve en el gráfico anterior, el primer paso en la arquitectura de Merlin es analizar estas características predefinidas, como un precursor para determinar qué elementos del tráiler predicen mejor las preferencias de los cinéfilos.
Por ejemplo, si las películas que una persona ya vio fueron mayormente películas de acción con un protagonista hombre, ¿es más probable que vea otra película de acción con un protagonista hombre? Analicemos Logan, una película de acción lanzada por 20th Century Fox en la que Hugh Jackman interpreta a Wolverine. A continuación, puedes ver una instantánea del segundo 12 del tráiler oficial.
Tráiler oficial de Logan, segundo 12
Para esta instantánea, Merlin devuelve las siguientes etiquetas: vello_facial, barba, captura_de_pantalla, mentón, humano, película. Después de analizar el tráiler completo, segundo por segundo, Merlin revela que las principales etiquetas para Logan son las siguientes:
Captura de pantalla de la herramienta de Fox, Merlin: etiquetas ordenadas por frecuencia descendente
Después de asignar el análisis de etiquetas de Logan, el equipo de 20th Century Fox quiso comparar este nuevo análisis con las etiquetas generadas con anterioridad de otros tráileres de películas para identificar películas similares. Aparentemente, existe cierta superposición entre los públicos de Logan y otras películas de acción, pero el desafío aquí es doble. El primer desafío es la posición temporal de las etiquetas en el tráiler: es importante cuándo aparecen las etiquetas en el tráiler. El segundo desafío es la alta dimensionalidad de estos datos. Para cualquier película determinada, puede haber varios elementos en el tráiler que puedan predecir el interés del público, y Merlin tiene el objetivo de analizarlos todos de manera simultánea. La elasticidad de Cloud ML Engine permitió al equipo de ciencia de datos iterar y probar rápidamente sin comprometer la integridad del modelo de aprendizaje profundo. Esto ayudó a Merlin a convertirse en una herramienta lista para la producción en cuestión de días, en vez de meses o años.
En concreto, la canalización del análisis alimenta estos componentes individuales (etiquetas) en una red neuronal personalizada desarrollada por el equipo de ciencia de datos. Este modelo personalizado aprende la secuencia temporal de las etiquetas en el tráiler de la película. La secuencia temporal (por ejemplo, una toma larga de un objeto versus tomas cortas intermitentes) puede transmitir información sobre el tipo de película, su argumento, los roles de los personajes principales y las elecciones cinematográficas de los cineastas. Cuando esto se combina con datos de clientes históricos, el análisis de secuencias puede utilizarse para crear predicciones del comportamiento de los clientes. La canalización también incluye un modelo de "filtrado colaborativo" basado en la distancia y una capa de regresión logística que combina todos los resultados del modelo para generar la probabilidad de concurrencia de una película. Este modelo se capacita de extremo a extremo, y la pérdida de la regresión logística se propaga hacia atrás a todos los componentes que se pueden capacitar (ponderaciones). La canalización de datos de Merlin se actualiza semanalmente para tener en cuenta los lanzamientos de nuevos tráileres. La canalización de la estructura se muestra en el siguiente diagrama:
Como paso final, el equipo utiliza BigQuery y BigQueryML para combinar las millones de predicciones de clientes de Merlin con otras fuentes de datos para crear informes útiles y elaborar rápidamente un prototipo de planes de medios para campañas de marketing.
Validación del modelo
Volvamos a nuestro ejemplo de Logan para ver si los datos corroboran nuestra intuición de que los cinéfilos que ya han visto una película de acción con un protagonista hombre "rudo" probablemente también vean Logan. Después del lanzamiento de una película, podemos procesar los datos respecto de los cuales ese público ya vio películas. La siguiente tabla muestra los principales 20 públicos reales de películas (Comp ACTUAL) comparados con los principales 20 públicos predichos (Comp PREDICTED). Enfoquémonos en las principales cinco películas reales (que aparecen en verde a continuación) y veamos si también figuran en la columna de nuestra predicción: de las principales cinco, todas están representadas por las predicciones.
Resultados de Merlin Video con los públicos reales versus predichos.
A simple vista, nuestra intuición era correcta. Los principales públicos para Logan fueron en realidad una combinación de superhéroe (lo que ya sabíamos) y un "protagónico de acción con hombre rudo" (lo que no sabíamos con certeza). Esto puede apreciarse mejor si notamos que las predicciones clave de "protagónico de acción con hombre rudo" como Los siete magníficos (en azul arriba), John Wick (en verde arriba) y Terminator: Génesis (en azul arriba) también estuvieron presentes en la lista de los principales 20 públicos reales. Este resultado es toda ganancia, porque el público nuevo "se suma" al público principal de superhéroes, y puede utilizarse para extender el alcance de la película más allá de ese público principal.
El impacto de estas herramientas en los equipos de marketing y datos de 20th Century Fox es importante. En lugar de depender únicamente de resultados de encuestas de públicos de alto nivel, el equipo ahora puede implementar instrumentos más precisos para determinar la intención del público. Las estadísticas son, como mínimo, dos órdenes de magnitud más detallados que los conjuntos anteriores de análisis en los que se basaba el estudio. 20th Century Fox utiliza esta herramienta desde el lanzamiento de El gran showman en 2017, y continúa utilizándola para informar sobre sus últimos lanzamientos. Ahora también está incorporando datos de compras y alquileres de fuentes de entretenimiento en el hogar para identificar correlaciones más sólidas entre un miembro del público y las películas que vio.
Por último, dado que los datos son más granulares, el equipo puede consultar el desempeño real de la boletería en comparación con sus predicciones internas para ver qué predicciones en el nivel de los segmentos se hicieron realidad. Ahora, el equipo de ciencia de datos de Miguel crea fichas de evaluación todos los lunes a la mañana, las cuales luego se envían por correo electrónico al resto de la organización.
Si te interesa aprender más sobre la investigación detrás de Merlin, puedes consultar el informe de investigación original aquí.
Dan Lavelle, director de Operaciones de Aprendizaje (Google Play)
Pensar en una excelente idea para un juego o una app es solo el primer paso. En Google Play, nuestro objetivo es brindarte las herramientas y habilidades que te permitan desarrollar un negocio exitoso de apps y juegos para dispositivos móviles. Como las capacitaciones siguen siendo una de las solicitudes principales de los desarrolladores de Android, tuvimos en cuenta sus comentarios.Read More
Dan Lavelle, director de Operaciones de Aprendizaje (Google Play)
Pensar en una excelente idea para un juego o una app es solo el primer paso. En Google Play, nuestro objetivo es brindarte las herramientas y habilidades que te permitan desarrollar un negocio exitoso de apps y juegos para dispositivos móviles. Como las capacitaciones siguen siendo una de las solicitudes principales de los desarrolladores de Android, tuvimos en cuenta sus comentarios.
Por este motivo, lanzaremos una plataforma de aprendizaje en línea sin costo para que puedas aprovechar al máximo el potencial de tu negocio en Google Play.
Presentamos la Academia para crear apps exitosas de Google Play
No importa si quieres atraer a un público más amplio, analizar tus métricas de rendimiento o aumentar tus ingresos, ya que Play Academy te ayudará a implementar recomendaciones y funciones de Play Console para tener éxito en Google Play. Creamos Play Academy para que se adapte a tu ocupada agenda. Aprende desde la computadora de tu casa u oficina, o toma cursos sin importar dónde estés desde tu dispositivo móvil.
Funciones principales de Play Academy
Vías de aprendizaje
Elige entre 10 colecciones de cursos rápidos que se diseñaron teniendo en cuenta funciones y recomendaciones como Prueba tus apps antes de lanzarlas, Analiza el rendimiento técnico de tus appsy Monetiza el contenido de tus apps.
Lecciones interactivas
Aprende mediante una experiencia educativa gracias a contenido multimedia e interactivo.
Evaluaciones
Pon a prueba tu conocimiento sobre las principales funciones de Play Console y las recomendaciones que se pueden implementar en apps para dispositivos móviles.
Logros
Obtén reconocimiento por tus nuevas habilidades. Muestra tus insignias de logros con orgullo en tu perfil de Play Academy.
Comienza a aprender ahora
Es muy sencillo comenzar a aprender con el contenido gratuito de Google Play. Accede a g.co/play/academy para registrarte e iniciar tu carrera como desarrollador. También recuerda consultar las noticias de Play Academy, ya que actualizaremos regularmente nuestros cursos para que puedas estar al día con las novedades sobre funciones y programas, así como enterarte de todo lo necesario para hacer crecer tu negocio de apps o juegos.
¿Qué tan útil te resultó esta entrada de blog?
★★★★★
Por Marcus Change, gerente de programa (Relaciones con Desarrolladores)
O’Reilly AI Conference, San Francisco
En septiembre, el equipo de TensorFlow presentó charlas sobre esta plataforma durante dos días en la O’Reilly AI Conference de San Francisco, y se trataron temas como TensorFlow Lite, TensorFlow.js, TFX (Extended) y Hub, Distributed TensorFlow y muchos más. Ya puedes ver las grabaciones de las sesiones en nuestro canal de YouTube dedicado a TensorFlow.Read More
Por Marcus Change, gerente de programa (Relaciones con Desarrolladores)
O’Reilly AI Conference, San Francisco
En septiembre, el equipo de TensorFlow presentó charlas sobre esta plataforma durante dos días en la O’Reilly AI Conference de San Francisco, y se trataron temas como TensorFlow Lite, TensorFlow.js, TFX (Extended) y Hub, Distributed TensorFlow y muchos más. Ya puedes ver las grabaciones de las sesiones en nuestro canal de YouTube dedicado a TensorFlow.
Consulta la lista de reproducción completa aquí. Sesiones: Cómo crear IA con TensorFlow: Descripción general
TensorFlow es uno de los proyectos de código abierto más grandes del mundo, y cada vez tiene más adopción y funcionalidades. No solo compartimos los principales avances que desarrollamos recientemente y destacamos algunas medidas que implementaremos en el futuro, sino que también discutimos cómo puedes involucrarte más en la comunidad de TensorFlow. TensorFlow: Aprendizaje automático para programadores
En esta charla, Laurence Moroney, desarrollador de Google, habló sobre el aprendizaje automático, la IA, el aprendizaje profundo y otros temas, así como el lugar que deben ocupar en el kit de herramientas de los programadores. Explicó qué implicaba cada tema, cuáles son sus beneficios y qué se puede lograr con el aprendizaje automático. También introdujo TensorFlow, su función como marco de trabajo diseñado para facilitar el acceso del aprendizaje automático y cómo las apps inteligentes que usan AA pueden ejecutarse en varias plataformas, como dispositivos móviles, la Web o IoT. TensorFlow para JavaScript
TensorFlow.js es la versión de JavaScript para TensorFlow lanzada recientemente que se puede ejecutar en navegadores y Node.js. En esta charla, el equipo presentó el marco de trabajo de AA para TensorFlow.js y explicó, mediante una demostración, cómo realizar el flujo de trabajo completo de aprendizaje automático, lo que incluye la capacitación, la implementación por parte del cliente y el aprendizaje por transferencia. Swift para TensorFlow
Swift para TensorFlow combina la flexibilidad de la función Eager Execution con el alto rendimiento de Graphs y Sessions. Swift analiza tu código de Tensor en segundo plano y crea gráficos automáticamente. Swift también detecta errores de tipeo y desajustes de forma antes de ejecutar el código, puede importar cualquier biblioteca de Python e incluye diferenciación automática de lenguaje integrada. Creemos que las herramientas de aprendizaje automático son tan importantes que merecen un lenguaje y un compilador de alta calidad. TensorFlow Lite
TensorFlow Lite es un marco de trabajo de aprendizaje automático ligero que puede hacer inferencias en una gran variedad de dispositivos móviles y otros más pequeños (como teléfonos celulares, Raspberry Pis y microcontroladores). También proporciona una abstracción simple que permite acceder a aceleradores de IA. El equipo habló sobre los fundamentos de los marcos, el estado actual de desarrollo y los últimos avances. En esta sesión, aprenderás a preparar un modelo para dispositivos móviles y a escribir código que pueda ejecutarse en varias plataformas. TensorFlow Extended (TFX) y Hub
En esta sesión, el equipo presentó TensorFlow Extended (TFX), la plataforma de aprendizaje automático de extremo a extremo para TensorFlow que potencia todos los productos de Alphabet. A medida que el aprendizaje automático evoluciona de la experimentación a las cargas de trabajo de producción, también lo hace la necesidad de administrar eficazmente el flujo de trabajo de formación y producción de extremo a extremo, lo que incluye la administración de modelos, el control de versiones y la publicación. Cloud TPU
Esta charla es una inmersión técnica profunda sobre los aceleradores de Cloud TPU de Google, así como de la forma de programarlos. También abarca las abstracciones de programación que permiten ejecutar modelos en CPU, GPU y Cloud TPU, desde dispositivos individuales hasta pods completos de Cloud TPU. TensorFlow Autograph
TensorFlow Autograph convierte automáticamente el código Python sin formato en sus equivalentes de TensorFlow utilizando la transformación del código fuente. Nuestro enfoque se complementa con el nuevo proyecto de TensorFlow Eager y permitirá utilizar el estilo imperativo del modo Eager, manteniendo los beneficios del modo gráfico. Mediante el uso de la conversión automática de código, los desarrolladores pueden escribir código más conciso, eficaz y estable. TensorFlow Probability
TensorFlow Probability (TFP) es una biblioteca de TF/Python que ofrece una visión moderna de las herramientas de estadística y probabilidad emergentes y tradicionales. Los estadísticos y científicos de datos encontrarán funciones similares a las de la programación en r que aprovechan de forma natural el hardware moderno. Los investigadores y especialistas en AA encontrarán bloques de construcción sólidos para especificar y desarrollar modelos probabilísticos profundos. En esta charla, presentaremos abstracciones centrales de TFP y demostramos parte de su poder de modelado y conveniencia. Aprendizaje profundo para las ciencias fundamentales mediante el uso de la informática de alto rendimiento
Las ciencias fundamentales (incluidas la física de partículas y la cosmología) generan exabytes de datos de instrumentos complejos y los analizan para descubrir los secretos del universo. El aprendizaje profundo permite la explotación directa de los datos de instrumentos de mayor dimensión que antes, lo que mejora la posibilidad de obtener nuevos descubrimientos. En esta charla, nuestro orador invitado Wahid Bhimji (NERSC) describe la actividad reciente en este campo, especialmente en NERSC, el centro de supercomputación para la ciencia fundamental de EE.UU., con sede en Berkeley National Lab. Este trabajo aprovecha Tensorflow para explorar nuevos métodos y aplicaciones, emplear escalas informáticas de alto rendimiento y proporcionar entornos de aprendizaje profundo y productivo para científicos fundamentales. Tensor2Tensor
Tensor2Tensor es una biblioteca de modelos de aprendizaje profundo y conjuntos de datos que facilita la creación de modelos de última generación para una amplia variedad de aplicaciones de AA, como la traducción, el análisis y la generación de descripciones de imágenes, entre otros usos, lo que permite explorar ideas mucho más rápido que antes. Distributed TensorFlow
Esta charla demuestra cómo realizar la capacitación distribuida de TensorFlow utilizando las API de Keras de nivel superior. El equipo te guiará a través de la arquitectura distribuida de TensorFlow, te enseñará a configurar un clúster distribuido usando Kubeflow y Kubernetes, y te mostrará cómo distribuir modelos creados en Keras.
Ha transcurrido más de un año desde que se publicó What’s Revolutionary about Flutter (todavía sigue siendo una buena introducción). Cuando escribí ese artículo, pocos desarrolladores de dispositivos móviles habían oído hablar de Flutter. Sin embargo, la realidad actual es muy diferente. Ahora, no puedo mantenerme al día con todos los artículos y videos de Flutter que son creados por una comunidad activa, vibrante e incluso ...Read More
Ha transcurrido más de un año desde que se publicó What’s Revolutionary about Flutter (todavía sigue siendo una buena introducción). Cuando escribí ese artículo, pocos desarrolladores de dispositivos móviles habían oído hablar de Flutter. Sin embargo, la realidad actual es muy diferente. Ahora, no puedo mantenerme al día con todos los artículos y videos de Flutter que son creados por una comunidad activa, vibrante e incluso explosiva . Los desarrolladores han descubierto Flutter y lo adoran. Aquí hay un GIF animado de solo una de las maravillosas apps creadas con Flutter, que pertenece a Reflectly:
Reflectly, la app de diario inteligente creada con Flutter
Los desarrolladores suelen decir que uno de sus mayores desafíos actuales es convencer a la gerencia de su empresa (o si trabajan en una agencia o de modo independiente, a sus clientes) para que prueben Flutter. A estas personas que toman decisiones no les entusiasma tanto la idea de adoptar lo último en tecnología solo por capricho. Por el general, son expertos en esta área, pero esa no es su única preocupación. Quieren saber si usar un producto nuevo ayudará a su empresa a tener éxito; por ejemplo, atrayendo a nuevos clientes o reduciendo riesgos.
Este artículo está dirigido a dos grupos:
A los desarrolladores que quieran ayudar a sus jefes a comprender por qué deben usar Flutter. Incluso si un desarrollador está familiarizado con Flutter, incluiremos argumentos sólidos para presentar como evidencia.
A los desarrolladores que quieran decidir por sí mismos si deberían desarrollar un producto con Flutter.
Este artículo también explicará las razones por las que una app para dispositivos específica podría no ser un buen proyecto para Flutter.
¿Qué es Flutter?
El eslogan de Flutter (a modo de presentación breve) es
Diseña increíbles aplicaciones nativas en tiempo récord
Desglosemos esta frase en cuatro partes y discutamos una por una:
Diseña
Increíbles
Aplicaciones nativas
En tiempo récord
1. Diseña
Por el momento, Flutter se enfoca en la creación de aplicaciones móviles para iOS y Android.
Sin embargo, hay una visión más amplia y a largo plazo que diferencia a Flutter de los marcos de trabajo para dispositivos móviles actuales: Flutter no es solo un marco de trabajo, sino un SDK completo para crear apps que interactúen mediante una pantalla. Eso significa que Flutter contiene todo lo necesario para crear una interfaz de usuario, incluido el procesador y los elementos que se procesarán (lo que Flutter llama widgets).
En muchos sentidos, Flutter es similar a los motores de juegos como Unity o Unreal, que también proporcionan su propio procesador y elementos (además de otro tipo de software). Sin embargo, en lugar de crear juegos, Flutter sirve para diseñar apps.
El hecho de que Flutter sea un SDK completo significa que puede portarse para que se ejecute en prácticamente cualquier hardware que incluya una pantalla. El procesador de Flutter utiliza Skia, un popular motor gráfico de código abierto que se puede usar fácilmente en diferentes dispositivos.
Flutter en una computadora de escritorio y una Raspberry Pi
Si bien en Google nos hemos enfocados en las apps para dispositivos móviles, varios terceros han conectado puertos de Flutter a computadoras de escritorio (macOS que se muestran a la izquierda, Windows, Linux y otras), TVs (aquí hay un video de Flutter ejecutándose en una TV Nvidia Shield) y Raspberry Pis (que se muestra en la parte inferior izquierda). De forma interna, Flutter también se utiliza a fin de crear interfaces de usuario para Fuchsia.
Las apps se seguirán expandiendo más allá de los teléfonos celulares. Será común acceder a apps en múltiples dispositivos, como asistentes domésticos (Google Home Hub, Lenovo Smart Display, etc.), pantallas interactivas de vehículos, electrodomésticos (refrigeradores), wearables (relojes o ropa) y otros dispositivos de IoT. En 2017, había 8,400 millones de esos dispositivos en línea. En 2020 (menos de dos años), IDC estima que habrá más de 30,000 millones (en comparación con 5,000 millones de teléfonos celulares). Muchos de estos dispositivos tendrán pantallas interactivas. La arquitectura de Flutter tiene todo lo necesario para crear interfaces de usuario robustas y atractivas que puedan adaptarse a estos nuevos dispositivos.
Pantallas por todas partes
Y, por supuesto, Flutter es gratuito y de código abierto.
Alibaba (izquierda) y Topline (derecha)2Dimensions
Los estudios demuestran que es muy importante incluir un diseño atractivo. Si analizas las apps para dispositivos móviles más populares de los últimos años, notarás que cada una tiene su propia estética visual. Además, las apps atractivas ganan premios, lo que también sirve como publicidad.
A modo de ejemplo, entre las apps creadas con Flutter que se muestran a la izquierda, aparecen Alibaba (la empresa de comercio electrónico más grande del mundo), Topline (la app de grabación de Abbey Road Studios) y una demostración de 2Dimensions, que incluye increíbles animaciones en tiempo real.
Cada vez más, las empresas quieren que las apps que diseñan complementen su marca, al igual que lo hacen con su sitio y aplicaciones web, lo que requiere un alto grado de personalización.
Por último, los diseñadores suelen tener grandes ideas que, para el momento en que se implementan, están muy diluidas debido a las limitaciones del kit de herramientas. Flutter te permite decirle a tu diseñador que podrá crear apps que implementen su visión.
Puedes ver más apps creadas con Flutter en el escaparate (y muchísimas otras en el sitio de It’s All Widgets). Entre estas, se incluye la visualmente increíble app de diario Reflectly, que se muestra al principio de este artículo con un GIF animado, pero que deberías instalar en tu dispositivo desde la tienda de aplicaciones correspondiente a tu teléfono Android o Apple. Asegúrate de leer acerca de qué ocurrió cuando implementaron Flutter en su app.
3. Aplicaciones nativas
Es posible que, a esta altura, haya desarrolladores sorprendidos. En el mundo de las apps para dispositivos móviles, se usa el término "aplicación nativa" con el objetivo de definir a la aplicación que se orienta a las API de plataformas de forma directa usando lenguajes específicos. Y solo para confundirte aún más, los marcos de trabajo como React Native y Xamarin usan el término "nativo" para indicar que pueden usar los widgets de la plataforma.
Otras áreas de la informática no usan el término "nativo" con el significado que se le atribuye en el campo de los dispositivos móviles. Por ejemplo, puedes instalar Linux en computadoras Windows y macOS (y muchos otros tipos), pero no llamarías "nativo" a un sistema operativo como Windows o macOS, ni solución "multiplataforma" o "híbrida" a Linux. Se considera que Linux es un sistema tan nativo como Windows o macOS porque realmente lo es.
Una definición más precisa de "nativo" en el campo de la informática es:
"Diseñado para un sistema específico o integrado en este, que denota el lenguaje asociado con un procesador, computadora o compilador determinado, junto con los programas escritos en él".
Las apps de Flutter se compilan en código de máquina nativa (ARM), tanto en iOS como en Android.
Las apps nativas ofrecen muchísimas ventajas. Se inician más rápido y, lo que es más importante, se ejecutan de forma fluida y son menos propensas a sufrir fallas o bloqueos (lo que no es atractivo). Las aplicaciones nativas también le dan al desarrollador más control sobre el comportamiento de su contenido.
Para aprovechar las ventajas de las aplicaciones nativas, los desarrolladores suelen crear dos apps separadas utilizando herramientas y lenguajes diferentes. A menudo, esto implica tener equipos de desarrolladores distintos para cada plataforma, que luego deben coordinarse, lo que encarece los costos significativamente, aumenta los riesgos y ralentiza el tiempo de comercialización. Por el contrario, Flutter permite a los desarrolladores consolidarse en un solo código base, unificar sus equipos de desarrollo, reducir riesgos y acelerar el tiempo de comercialización mientras se aprovechan los beneficios de una aplicación nativa.
¿Cuál es "nativa"? ¡Ambas!
¿Qué ocurre con los widgets? Debido a que Flutter proporciona sus propios widgets, es posible que tengas miedo de que las apps se vean o se sientan diferentes a las desarrolladas con los widgets y herramientas de la plataforma.
A la izquierda, la pantalla de configuración de la plataforma iOS se compara con la misma pantalla creada con Flutter. A pesar de que hay algunas pequeñas diferencias en el nivel de píxeles, se puede concluir que Flutter facilita la creación de pantallas que se ven y se sienten como las de la plataforma.
Debido a que las plataformas cambian entre las diferentes versiones del sistema operativo, incluso una aplicación nativa de la plataforma se verá diferente en las distintas versiones de un SO. Por lo tanto, no tiene sentido que Flutter intente "mostrar los píxeles de forma perfecta".
Los widgets de Flutter se adaptan a la plataforma en la que se ejecutan para proporcionar la apariencia adecuada, incluidos los íconos, los colores, el diseño, las fuentes, el comportamiento de desplazamiento, etc. En lugar de "mostrar los píxeles de forma perfecta", un objetivo aún más importante para una app de Flutter es cumplir con los lineamientos de diseño de la plataforma y que el usuario la sienta cómoda.
Las apps de Flutter logran una alta fidelidad porque este es un SDK completo que se procesa directamente en el lienzo de la plataforma. Tu app no depende de los widgets, las fuentes y demás elementos de la plataforma que podrían modificarla en segundo plano.
Flutter también evita la necesidad de usar bibliotecas de compatibilidad. Por ejemplo, aquí hay una app de Flutter que usa widgets de Material Design en un teléfono con Android Jelly Bean (4.1.2). Como este teléfono salió al mercado dos años antes de que se creara Material Design, no tiene widgets incorporados. Sin embargo, tu app de Flutter se ejecutará de la misma manera que en un teléfono más moderno con un sistema operativo más reciente, y se verá genial.
Sin Flutter, tendrías que resolver estos problemas por tu cuenta, lo que implicaría realizar más pruebas en versiones anteriores del sistema operativo e implementar soluciones alternativas para plataformas que no proporcionan las funciones que utiliza tu app. Según los desarrolladores, es mucho más fácil ejecutar pruebas usando Flutter.
En resumen, Flutter no solo ofrece las ventajas de las aplicaciones nativas, sino que también proporciona importantes beneficios adicionales:
Las apps de Flutter se ejecutan en versiones anteriores del SO de todas las plataformas. Por ejemplo, si el desarrollador prueba su app en una versión reciente de Android, se verá igual en versiones anteriores. Esto permite que, con muchas menos pruebas, las apps de Flutter se ejecuten correctamente en teléfonos antiguos.
Las nuevas versiones del SO de la plataforma no romperán tus apps, a menos que un cambio afecte a un elemento del que dependa Flutter (sería un caso extremadamente raro de un error de Flutter, no de tu app).
Tu app no se verá diferente debido a las modificaciones hechas al sistema operativo por fabricantes o proveedores (un ejemplo común son los cambios en las fuentes predeterminadas).
Lo más importante es que Flutter le da al desarrollador un control completo sobre el aspecto de su app, hasta en lo relacionado a píxeles, en todas las plataformas y versiones.
Si lo deseas, puedes hacer que una app de Flutter tenga un aspecto diferente en iOS y Android. Incluso si no lo quieres, los widgets de Flutter se adaptan a los lineamientos de diseño de cada plataforma.
Por último, aunque no menos importante, Flutter te permite desarrollar mejores apps más rápido. La función más popular (e incluso publicitada) de Flutter es su recarga de estado en caliente. No solo es increíblemente rápida (por lo general, tarda menos de un segundo), sino que es estable, lo que significa que si cambias líneas de código en lo más profundo de tu app, después de recompilar no tendrás que navegar de nuevo al mismo lugar o recrear de forma manual el estado para ver el efecto del cambio.
Recarga de estado en caliente
La recarga de estado en caliente de Flutter es posible gracias a la tecnología de compilación avanzada (desarrollada por algunas de las mismas personas que crearon el compilador V8 para JavaScript y Strongtalk para Smalltalk) y al hecho de que Flutter es nativo y se basa en vistas reactivas.
Además de acelerar los procesos, muchos desarrolladores informan que Flutter cambia drásticamente la forma en que codifican, ya que pueden probar nuevas ideas y diseños rápido, lo que les permite implementar los cambios solicitados por las partes interesadas delante de estas.
También descubrimos que ayuda a los diseñadores a obtener exactamente lo que quieren. Pueden jugar con varios parámetros hasta que ese contenido se vea bien. De hecho, los diseñadores que saben cómo usar CSS en aplicaciones web nos dicen que les resulta fácil aprender a modificar diseños en Flutter.
A modo ilustrativo, mira una app de Flutter codificada en tiempo real, o prueba Flutter para crear una aplicación de verdad. Únete a un hackatón de Flutter y descubre qué tan rápido puedes dominarlo y crear apps en su plataforma.
Como se discutió en la sección anterior, las apps de Flutter también requieren menos pruebas, lo que significa que puedes probar y publicar nuevas funciones para tu app mucho más rápido. Por ejemplo, JD.com nos dice lo siguiente:
Desarrollamos las mismas funciones con la mitad de los recursos que solíamos usar. Con la misma cantidad de ingenieros, cada versión ahora puede tener más funciones.
Del mismo modo Alibaba nos dice que al usar Flutter, el tiempo promedio para agregar una nueva función pasó de un mes a dos semanas.
Hamilton, la app
En la app de Hamilton, los desarrolladores hicieron un cambio importante en ella la noche anterior a su lanzamiento, seguros de que sería estable. Esa app, diseñada en solo tres meses, fue destacada en ambas tiendas de aplicaciones. Además, Flutter hace que sea más fácil para ellos continuar agregando nuevas funciones con frecuencia, lo que permite mantener activos a sus usuarios y con ganas de más.
Así se diseña una app para dispositivos móviles exitosa.
Con Flutter, no solo es fácil y rápido construir y modificar apps, sino que también es sencillo actualizar sus widgets. Una preocupación común acerca de que Flutter no use los widgets de la plataforma es que tendrá dificultades para mantenerse al día con las plataformas a medida que lancen nuevos widgets o mejoren los antiguos.
Sin embargo, cuando Apple anunció el iPhone X y su recorte, Flutter agregó compatibilidad con esa pantalla antes de que se lanzara el teléfono.
Y esto no solo se aplica a funciones de iOS. Cuando Google anunció una renovación significativa de Material Design en I/O 2018, Flutter ya estaba actualizado para implementar las nuevas funciones. Todo fue posible gracias a la capacidad de personalizar Flutter rápidamente.
A modo de conclusión, los desarrolladores nos cuentan que son entre dos y tres veces más productivos con Flutter, y que crean mejores apps que tienen más éxito.
Riesgos y limitaciones
Todas las herramientas tienen aspectos negativos, y Flutter no es la excepción. Estas son algunas de las razones por las que Flutter podría no ser la mejor herramienta para una app específica.
Debido a que las apps de Flutter incluyen los widgets y el procesador de este SDK, son un poco más grandes que las apps que utilizan los widgets y el procesador de la plataforma. Hasta hace unos meses, una app de Flutter tenía un tamaño mínimo de 6.7 MB, pero se redujo a poco más de 4 MB y tenemos pensado hacer más optimizaciones en el futuro.
Una de las principales ventajas de Flutter es que se puede usar un código base único para lanzar apps en ambas plataformas móviles (aunque Flutter también se usa para crear aplicaciones en una sola plataforma). Sin embargo, hay algunas apps que están estrechamente ligadas a una plataforma específica o que funcionan como contenedor de una vista proporcionada por la plataforma, como un servicio en segundo plano que se usa para enviar notificaciones. Si bien es posible escribir estas apps en Flutter, no se apreciarán tanto los beneficios de ello.
Una pregunta que nos suelen hacer es si Flutter está aquí para quedarse. Hay varias razones por las que la respuesta es un enfático sí. Primero, Google usa Flutter, incluso para apps internas y orientadas al cliente (y está desarrollando muchas más). Por ejemplo, la app para dispositivos móviles recientemente lanzada de Google Ads (antes llamada AdWords) está escrita en Flutter. Por lo tanto, Google está detrás de Flutter y bastante comprometido con su éxito.
En segundo lugar, el hecho de que las apps principales se hayan construido en dos plataformas separadas significa que las empresas consideran que es menos riesgoso, por ejemplo, crear primero una app para iOS y, luego, una para Android más adelante si hay suficiente demanda. Con Flutter, las apps pueden lanzarse simultáneamente en ambas plataformas con funciones prácticamente idénticas, evitando ese riesgo y aumentando el mercado potencial de una app. Esto puede ser un gran beneficio para Android.
Otro problema potencial es que Flutter es relativamente nuevo. Por lo tanto, le llevará tiempo ponerse al día con las herramientas establecidas, tanto en términos de funciones como de asistencia comunitaria. En la actualidad, hay algunas funciones proporcionadas por las plataformas que Flutter tardará en implementar. Sin embargo, Google está haciendo todo lo posible para que Flutter las incorpore.
Para obtener información más detallada sobre por qué vale la pena probar Flutter, lee What’s Revolutionary about Flutter y Why Flutter uses Dart. También te recomendamos que consultes los resultados de nuestro último estudio de usuarios para ver qué se piensa sobre Flutter.
Cómo comenzar
Cuando estés listo para probar Flutter, ten en cuenta lo siguiente:
Consulta https://flutter.io/get-started/, una guía que te ayudará a instalar Flutter, configurar el editor, realizar una prueba y escribir tu primera app.
Del mismo modo, consulta las apps disponibles en It’s All Widgets. Muchas de estas son de código abierto, por lo que podrás ver el código de las apps publicadas. Y, una vez que escribas las tuyas, asegúrate de enviarlas para que se las incluya.
Para obtener una lista de los mejores artículos sobre Flutter en tu bandeja de entrada semanalmente, suscríbete a Flutter Weekly.
Para participar en la comunidad de Flutter, encuéntranos en Twitter, Gitter y Stack Overflow. También te recomendamos que te suscribas a la lista de distribución de Flutter Dev y que busques encuentros locales, como Flutter Meetup o Study Jam, y veas si hay algún hackatón de aplicaciones móviles al que puedas asistir.
Conclusiones
Flutter proporciona un proceso de desarrollo de alta velocidad que aumenta tu productividad y te ayuda a crear mejores apps. Es un conjunto de herramientas expresivas, altamente flexibles y personalizables que te brinda un amplio control. También permite crear, desde un solo código base, aplicaciones nativas para iOS y Android que son rápidas y fluidas.
Con Flutter, ahorrarás dinero y reducirás riesgos. Es gratis, de código abierto y te ayudará a obtener más ingresos. Puedes orientar tu contenido simultáneamente a iOS y Android, así como crear mejores apps en menos tiempo.
Según los desarrolladores (y este es uno de mis aspectos favoritos), Flutter hace que desarrollar contenido para dispositivos móviles sea divertido. Un destacado 92% de los desarrolladores que usan Flutter dicen que están satisfechos o muy satisfechos con él. Este número ha ido aumentando constantemente, y recuerda que estos resultados corresponden a las versiones Alfa y Beta de Flutter, anteriores a la versión 1.0.
Por último, Flutter mira hacia el futuro. Es el único kit de herramientas que admite vistas reactivas, que permite crear mejores apps y que incluye funciones como la recarga de estado en caliente superrápida. Y, debido a que es un SDK completo, puede seguir siendo relevante, ya que podrá portarse a nuevas plataformas a medida que se vuelvan populares.