Resumen de la Keynote Platforms State of the Union, la interesante para desarrolladores
En esta entrada veremos el resumen de la conferencia principal para desarrolladores de las plataformas de Apple durante la #WWDC18
- Accesibilidad: Enfoque para que las aplicaciones peudan ser utilizadas por parte de cada ve más personas
- Seguridad: hacen especial incapié en la manera de pedir permisos al usuario indicando claramente para qué se van a utilizar. 2 de cada 3 usuarios tienen activada la autenticación en dos pasos
- En iOS 12 van a incluir una funcionalidad para que en iCloud se guarden de manera segura las contraseñas de safari y de las aplicaciones nativas, sincronizable entre dispositivos. Será necesario asociar la aplicación con un dominio, asociar los campos de usuario y contraseña. Realizará un seguimiento de las contraseñas para educar al usuario en la necesidad de no repetir contraseñas entre servicios. Recomendando contraseñas fuertes para la autenticación. Un golpe muy fuerte para los usuarios de Apple de 1-password. que tratarán de resolver con la extensión de teclado explicada más adelante.
- Además pondrá más facil el escribir los típicos códigos que se envían por SMS para la autenticación justo encima del teclado cuando vayamos a teclearlo. (Security code autofill). También se permitirán crear estensiones de teclado para facilitar a los servicios de terceros a permitir este tipo de presentación de los códigos, por ejemplo de 1-password.
Herramientas de desarrollo
- Hablan de os_log como la nueva manera en la que el año pasado se presentó para evitar los printf 😉
- os_singpost es la nueva manera de integrar estos logs en Instruments. Se usa la categoría pointOfInterest. Utiliza os_log definiendo un punto de begin y otro de end para monitorizar partes del código, Después es Instrumentes lo podremos ver en el apartado “Points”. Se podrán utilizar patrones customizables instalables en Instruments que ayuden a perfilar el código con una nueva plantilla por ejemplo. Esto permitiría descubrir peticiones duplicadas, usos inapropiados del hilo principal de ejecución.
MacOS
- High Sierra será la última release que tendrá soporte de 32 bits. Mojave será la primera release con el único soporte de 64 bits. Será la posibilidad de colocar las dos arquitecturas? intel y ARM?
- Notoried apps: Es una extensión del programa de desarorllo de aplicaciones (Developer ID Program). Permite la manera de poder revocar versiones concretas de una aplicación en vez de una aplicación entera de la App Store por temas de seguridad. Una vez subida la app se le asigna una escpecie de certificado diferente al que usa el desarrollador para subirla y así poder verificar si la aplicación instalada ha sufrido algún tipo de cambio por parte de terceros hostiles sobre la aplicación (Mediante inyección de código). Está implementado como una manera de verificar las aplicaciones no debería cambiar los requisitos que pone apple a las aplicaciones, simplemente bastaría con activar una opción en Xcode. Está en beta a partir de hoy.
- Quick Actions: Serán acciones disponibles desde Finder que nuestras aplicaciones pueden poner a sus disposición dependiendo del tipo de ficheros. Se parece bastante a los añadidos al menú conextual de Windows. Éstas acciones también estarán disponibles para la TouchBar. Será una manera de potenciar el uso de esta barra por parte de los desarrolladores de las aplicaciones.
- Migración de aplicaciones iOS a Mac. Quieren ahcer que los desarrolladores de apps de iOS empiecen a migrar sus aplicaciones a MacOS. Los eventos de click se convertirán en eventos de ratón. Los ViewControllers de iOS tendrán una conversión a MacOS, incluyendo la redimensión de pantalla. Se podrá hacer Copiar y Pegar de aplicaciones iOS a apps de Mac. Enlaces pulsado en Mac podrán llevarme a partes de una aplicación iOS. Las barras de ventana tendrán una sincronización de color dependiendo del color del contenido de los VC que tengan debajo. Al compartir un objeto desde la aplicación iOS se integrará con las aplicaciones Mac que tengas soporte. Todas estas funcionalidades estarán disponibles en 2019.
- Dark Mode: Para integrar funcionalidad en las apps será necesario duplicar los elementos visuales (imágenes) que se usarán en el darkmode desde Assets.xcassets podemos añadir estas imágenes para cada resolución de pantalla (1x, 2x, etc..) para el modleo light y el dark cambiando la apariencia en los atributos del catálogo de ese objeto. Será necesario el uso de NSColor, backgroundColor de los : NSBox, NSScrollView, NSCollectionView y TableView, NSVisualEffectView y Material, is Template en NSmage y contentTintColor en NSImageView. Desde el catálogo podremos ver estos colores y poder asignarlos desde el Interface Builder fácilmente a los objetos del VC. Si se utilizan los controles por defecto ya deberían incorporar estas nuevas funcionalidades y propiedades. Desde el Interface Builder podremos cambiar el modo light al dark para ver cómo quedan las interfaces con cada modo. Desde el menú de depuración podemos cambiar el modo de lanzamiento de la aplicación indicando si queremos utilizar el valor por defecto del sistema o el modo light o dark, incluso los modos de alto contraste.
- Herramientas de diseño: Se podrán gestionar las tablesViews como si fuera una hoja de cálculo, añadiendo filas o columnas a placer. Arrastrasndo objetos desde el catálogo directamente como una ventana flotante que se puede redimensionar y posicionar donde queramos.
- Xcode 10: Se han mejorado el completado de código, la navegación por la documentación (Definitions), refactorización de código (includo Swift). Se ha colocado una barra de cambios la lado de los número de linea del fichero editable, de esta manera podremos ver los colores del sistema de control de versiones viendo cómo sincroniza con el servidor según vayamos colocando los cambios en el fichero. De esta manera podremos ver si nuestro cambios pueden dar conflicto con el código ya subido al servidor incluso antes de guardar nuestro commit . Se ha mejorado la manera en que podemos “plegar el código”(code folding). También permite cambiar varias líneas a la vez (control+shift, multi-cursor editing), también permite seleccionar “columnas” , por ejemplo cambiar todos los modificadores de algunas propiedades a la vez (option y seleccionando con el ratón).
- Git: Se ha mejorado la integración con Git, permitiendo reoslver más fácilmente los conflictos incluso resolviendo los pulls con rebase. Se ha incorporado una funcionalidad para permitir generar una clave ssh automáticamente subida al servidor de Git. Se ha mejorado la integración con Github y se ha colocado una nueva integración con Bitbucket Cloud y Server y con Gitlab.
- Depuración: Se ha mejorado la velocidad de descarga desde el dispositivo de los Device Symbols (funciones). Nuevos informes de energía para las aplicaciones, tanto de procesos en primer y segundo plano, integrable con TestFlight, integrado con el acceso al código que provoca dicho uso de energía.
- Testing: soporte de cobertura de código de los test. ahora podremos ejecutar los test de tres maneras nuevas: incluyendo o nó los nuevos test, paralelizando las pruebas en varios dispositivos o emuladores y colocar aleatoriedad a la ejecución de las pruebas para mejorar su independencia. Los test en paralelo, atendiendo a la máquina en la que se ejecuta para poder utilizar todos los recursos posibles de la máquina. Ejecutable en pruebas de unidad incluso en pruebas de UI.
- Nuevo sistema de compilación: creado enteramente en swift, debería mejorar el rendimiento de ejecución incremental y de nuevas versiones en algunos casos reduciendo a la mitad el tiempo de compilación. La optimización de tamaño puede reducir el tamaño del fichero ipa en un 30%. . La nueva versión de iOS .
- Swift 5: Se dispondrán de una nueva versión de los playgrounds para su uso con SceneView. El runtime de Swift será incluido en las nuevas versiones de SO para queno se tenag que incluir en los ipa’s reduciendo el espacio ocupado por las aplicaciones y mejorando las descargas. El runtime estará dispoible el proximo año. Esto seguramente tenga que ver con el anuncio de que el próximo año las aplicaciones iOS será posible migrarlas a MacOS. Estos cambios tratan de sugerir cambios más profundos del sistema de complicación de los siguientes sistemas operativos en relación a nuevas plataformas o arquitecturas.
Machine Learning
- Core ML es el framework principal de Ml en Apple. Reconocimiento de objetos, reconocimiento de caras y reconocimiento de líneas faciales y códigos de barras. Segmentación de personas para poder substituir el fondo de una foto de uan persona.
- Se da soporte a detección de idioma natural (natural language). Vectorización de palabras, detección de empresas o lugares, análisis sintáctico de las frases. Soportado en inglés, francés, alemán, Japonés, incluso en chino simplificado. Español? Para qué? Si somos del tercer mundo 🙁
- Soporte de la mayor parte de bibliotecas de ML: Watson, TensorFlow, Turi, ONNX, Yandex Catboost, XGBoost, Keras, Caffe, sklearn, libsvm, mxnet
- Core ML 2: Ejecución más rapida de los modelo, reduciendo su tamaño(quantization) y de manera más personalizable. Nuevo Batch API, ahora se puede aprovechar la GPU al máximo nivel gracias a Metal. Se ha mejorado en algunos casos (imagenet) 4 veces el rendimiento.
- Create ML: Features: natural languaje, image recognition; Algortimos: linear, logistic, SVM, árboles de decisiones, árboles boosted???; Procesado de datos, tablas y columnas.
- Lenguaje natural: modelos customizables, clasificación de texto, clasificación de palabras, soporte multilenguaje. Por ejemplo un texto podría clasificarse como bueno o malo en una crítica de una película en texto. Cogiendo un texto puede determianrse una categoría, indicando si habla de hoteles, restaurantes, vuelos, etc…
- Clasifiación de Imágenes: nos ofrecerán modelos ya entrenados para que los modelemos a nuestras necesidades añadiendo nuevas capas a las redes neuronales. Esto permitirá reducir el tamaño de los modelos que nosotros entrenemos, ya que el sistema proveerá el modelo original antes de nuestras modificaciones. En el bundle sólo deberemos incluir nuestras modificaciones y no el modelo completo.
- Integración con Xcode: dentro del editor podremos entrenar y probar el nuevo modelo con datasets que nosotros les ofrezcamos. Una vez generado el modelo simplemente lo incluiremos en el proyecto de Xcode substituyendo el fichero original (de inception v3, por ejemplo) reduciendo al máximo el bundle. Imagino que inception v3 estará ya incluido en el SO y sólo hará los cambios en runtime de la aplicación. Lo hará esto Google también u obligarán a usar los Google Paly Services???
- Shortcuts: pueden ser ejecutados con la voz (siri), las sugerencias se ejecutarán sólo dentro del dispositivo para mejorar la privacidad. ¿Verdad Google??? Ésto se activa configurando la propiedad isElegibleForPrediction a true en el NSUserActivity.
- Shortcuts in Intents: permite acciones inline de Siri, respuestas personalizadas de Siri y predicciones más acertadas. Debería mejorar el enganche con el el usuario.
- Workflow de shortcuts: Definir, donar a Siri, Manejar las acciones que manden desde Siri. De esta manera si un usuario pregunta algo a Siri, una aplicación puede responder a esa pregunta. Mirar la clase INRelevantShortcut para integrar con la nueva watch face de siri en el reloj.
Metal:
- Es el API que acelera el rendimiento de los gráficos a bajo nivel. Optimizando la ejecución entre CPU y GPU, quitando cuellos de botella de la CPU delegando trabajos a la GPU, incluso de manera paralela con varias tarjetas gráficas.
- Fornite por ejemplo se aprovecha de Metal para el uso en todos los dispositivos de Apple. Cinema 4D y Maya hacen lo propio gracias al Radeon (AMD) proRender.
- Aplicaciones como Becasso o Pixelmator Pro hacen uso de Metal para acelerar el ML. Por ejemplo Tensorflow permite ejecutarse 20 veces más rápido usando Metal.
- Metal ahora es soportado por parte de todos los dispositivos iOS 12 (2013) y de Mac Mojave (2012)
- En la siguiente versión de SO’s se deprecarán OpenCL, OpenGL y OpenGLes.
- Desde las herramientas de desarrollo se ha incluido: Profiler de Shades, Metal debugger, Trace de Metal, nuevo Visualizador de dependencias de Metal, nuevo Metal Shader Debugger.
- Se ha añadido soporte de raytracing a Metal, cogiendo las nuevas características de las nuevas tarjetas gráficas que usan machine learning para mejorar temas de iluminación, sombras, etc…, con la aceleración de las tarjetas en vez de utilizar la cpu para ello permite realizar las tareas treméndamente más rápidas, hasta 10 veces más rápido. Se le dará soporte tanto a iOS como a Mac.
- Aquí es donde entra el soporte de gráficas GPU externas en paralelo gracias al puerto thunderbolt 3 y el soporte incluido en 11.4 y que estará mejorado en Mojave
AR:
- USDZ es el nuevo formato de descripción de una escena AR. Donde van los modelos, texturas y animaciones.
- Se han asociado con Adobe para la creación de estos nuevos contenidos creativos.
- Lanzan el proyecto Aero un wysiwyg para AR.
- Estos fichero estarán dispoibles no sólo desde apliactivos móviles, sino también desde navegadores.
- Se podrán salvar, compartir y cargar los estados de los modelos 3D para no perderlos en el caso de que se interrumpa la experiencia, por ejemplo para una llamada. Esto permite juegos compartidos de AR como SwiftShot, está abierto a modificaciones.
- ARKit 2: mejoras en el reconicimiento de gestos de caras (ies lo que usan en los animojis), texturas dependiendo del entorno (ejemplo una esfera espejada); detección de imágenes incluso en 3D y seguimiento de dichas imágenes; detección y reconocimiento de objetos en 3D.
Comments