Post invitado - Pikura

https://www.windowsphone.com/es-es/store/app/pikura/9f006679-6eb1-43bc-a4e1-2bef800a848d

Hoy os queremos hablar de nuestra app Pikura con la que hemos querido dar un paso más dentro de las apps de fotografía. Esta es una de las categorías de apps más populares, pero creemos que para llegar a destacar es necesario aportar elementos diferenciadores con respecto a otras apps ya existentes. Pikura es una app de retos fotográficos. Cualquier usuario puede proponer un reto (por ejemplo, fotografía la camiseta más chula, hazte una foto en bañador un día nevado). Se participa en estos retos subiendo fotos que demuestren que se ha completado el reto y la foto más votada dentro de cada reto, gana el reto.

¿Cómo empezar?

Una app como Pikura requiere de dos componentes, la app en sí y un servidor en donde almacenar y operar con los datos de usuarios, retos, fotos, manejo de las notificaciones push, entre otros.

App

Una de las primeras decisiones a tomar es en qué plataformas lanzar nuestra app: iOS, Android, Blackberry o Windows Phone. iOS y Android son actualmente las plataformas con mayor cuota de mercado, y sus respectivas tiendas de apps cuentan con un gran número de aplicaciones. Esto hace que a pesar de poder contar con una idea innovadora, sea difícil destacar en estas nada más subir una app nueva sin necesidad de recurrir a campañas de marketing o de comunicación.

Aunque en Pikura creíamos que la idea de retos fotográficos era muy buena e iba a gustar a mucha gente, necesitábamos probar esta hipótesis con un número grande de usuarios para comprobar que realmente la idea gusta y tiene el potencial de escalar. Vimos que conseguir un número grande de usuarios para testear la idea en poco tiempo sería complicado en iOS y Android por la dificultad de destacar en estas tiendas. Microsoft en cambio ofrece unos programas muy interesantes para conseguir que ideas innovadoras lleguen ser conocidas por un gran público. Programas como App Campus (https://www.appcampus.fi/), el programa BizSpark para emprendedores (https://www.microsoft.com/bizspark/) o la posibilidad de poder contar de primera mano con el soporte del equipo de MSDN España. Además hay que sumarle que Windows Phone es una plataforma con un énfasis especial en la fotografía y que cuenta con terminales como el Nokia Lumia 1020 que ofrece la mejor tecnología óptica de fotografía del mercado de los smartphones. La posibilidad de poder destacar nuestra idea ante un gran número de personas, para testarla y recopilar métricas y además siendo un público potencial con un gran interés por la fotografía nos hizo decantarnos por desarrollar Pikura en Windows Phone.

¿Cómo empezar el desarrollo de la app?

Empezar a desarrollar en Windows Phone es sencillo, tan sólo es necesario descargar el SDK de Windows Phone que incluye todas las herramientas necesarias para empezar a programar: Visual Studio Express, las librerías de Windows Phone y los distintos emuladores de Windows Phone.

Una vez descargado e instalado el SDK ya solo queda arrancar Visual Studio y crear un nuevo proyecto de Windows Phone. Tanto en la ayuda de Visual Studio como online (https://dev.windowsphone.com) hay abundante información sobre cómo empezar a desarrollar una app en Windows Phone. Otro buen recurso para adquirir rápidamente unas bases sólidas de desarrollo en Windows Phone es el libro: "Introducción al desarrollo en Windows 8 y Windows Phone 8" de Josué Yeray, Rafael Serna e Ibon Landa.

Al desarrollar apps en Windows Phone hay dos componentes importantes: por un lado la parte de interfaz de usuario que se programa en XAML, y la parte de la lógica de la app que puede programarse en C# o Visual Basic. Esto fuerza la separación de la parte de interfaz de usuario de la parte del código de la lógica de la app, lo que produce código más mantenible y reutilizable, pudiendo, por ejemplo, el equipo de diseño trabajar sobre la interfaz visual independientemente del trabajo del equipo de programadores de la parte lógica de la app. Esto también permite que se pueda reutilizar la misma lógica con cambios mínimos en el código para desarrollar una versión adaptada a Windows 8 solamente cambiando la parte de interfaz de usuario.

Para lograr un código reutilizable y bien estructurado existe un patrón de diseño que marca una serie de directrices para lograr este objetivo. Se trata del patrón MVVM. El patrón MVVM (Model-View-ViewModel) es una evolución del patrón MVC (Model-View-Controller). Con este patrón se consigue independizar la vista de interfaz del usuario (View), del código dónde se defina la lógica de la aplicación (ViewModel) que se encarga de procesar los datos del modelo (Model).

 

clip_image002

 

Un ejemplo de cómo usamos el modelo MVVM en Pikura es el siguiente. Una foto en Pikura es un modelo (Model). Existe una vista (View) en la que podemos votar la foto, y comentar la foto. Los métodos de votar y comentar se programan en el Modelo de la Vista (View Model). Estos métodos se invocan desde la vista usando Commands, y datos como el número de votos y los comentarios se pasan del Modelo de la Vista a la Vista usando los Data Binding.

Teniendo las herramientas y el patrón MVVM como base, ya podemos empezar a desarrollar la app. En el caso de Pikura lo primero que hicimos fue pensar en todas las posibles funcionalidades que queríamos que tuviese la app, y a partir de allí seleccionar aquellas que eran las fundamentales para tener una versión 1.0 completa de la app pero que a su vez fuese sencilla para el usuario. De este proceso tomamos varias decisiones:

Primeramente, queríamos que el usuario pudiera experimentar y entender Pikura nada más descargase la app. Que lo primero que viese fuese Pikura en acción, antes que un formulario de registro. Por ello optamos por un enfoque en el que el usuario nada más descargarse y abrir la app pudiera ver los retos y fotos que hay en Pikura y a la hora de que el usuario interactuase (por ejemplo, al votar una foto o al crear un reto) entonces pedirle que se registre o inicie sesión. Con este enfoque hemos obtenido un alto porcentaje de registros sobre el número de usuarios que se han descargado la app.

Los dos elementos que consideramos más importantes en Pikura son el muro de los retos, y el perfil del usuario. Gracias al control panorama (https://msdn.microsoft.com/en-us/library/windowsphone/develop/ff941104(v=vs.105).aspx) podemos mostrar estos dos elementos en una misma altura jerárquica. También son importantes acciones como la de crear reto, estas acciones las hemos podido poner claramente visibles en una App Bar (https://msdn.microsoft.com/en-us/library/windowsphone/develop/ff431813(v=vs.105).aspx).

clip_image004

Queremos que Pikura tenga un impacto global, por lo que en el lanzamiento hicimos que la aplicación estuviera disponible tanto en español como en inglés. Gracias al ‘Multilingual App Toolkit’ incluido en Visual Studio es sencillo y rápido manejar e incorporar traducciones a la app.

Aunque la fotografía es un idioma universal, sí que vimos que la descripción de los retos puede suponer una barrera para aquellos usuarios que no hablen el idioma en el que está escrita la descripción del reto. Para solventar esta situación, tradujimos la descripción al idioma del usuario que vea el reto de manera automática gracias a la API de Microsoft Translator (https://www.microsoft.com/en-us/translator/developers.aspx). En este enlace puede verse como invocar la API de Microsoft Translator desde apps de Windows Phone: https://blogs.msdn.com/b/translation/p/windowsphone8.aspx

clip_image006

Para destacar en los rankings de la Windows Phone Store, es importante que los usuarios valoren la app en el Store. Para ello es interesante la opción de recomendar al usuario que valore nuestra app. Existen varias librerías que permiten incorporar muy fácilmente esta funcionalidad, nosotros usamos el control RateAppReminder de Telerik (https://www.telerik.com/products/windows-phone/overview/all-controls/rateappreminder.aspx).

En Pikura necesitamos realizar varias operaciones con las fotos: cambiar de tamaño, comprimir, rotar. Para simplificarnos esta labor hacemos uso del potente Imaging SDK de Nokia. (https://developer.nokia.com/Develop/Windows_Phone/nokia_apis/imaging.xhtml) A parte de transformaciones sobre imágenes, este SDK también ofrece un gran número de filtros para aplicar a imágenes (https://developer.nokia.com/Resources/Library/Lumia/#!nokia-imaging-sdk.html).

Servidor

El otro elemento importante de la aplicación es el servidor dónde centralizar todos los datos y la lógica. Buscábamos un servicio dónde alojar nuestra aplicación servidor, base de datos, fotos, y web de información sobre la app y que además nos permitiese poder escalar rápidamente y fácilmente según incrementasen nuestras necesidades.

Después de comparar varios servicios de cloud computing y hosting, nos decantamos por Windows Azure al ofrecer una gran variedad de servicios, con robustas opciones de escalados y a un precio competitivo. Además al ser Pikura una startup del programa BizSpark, contamos con $150 de uso de Windows Azure de forma gratuita al mes (https://blogs.msdn.com/b/esmsdn/archive/2013/08/23/bizspark-y-los-beneficios-de-windows-azure.aspx).

En Azure tenemos toda nuestra infraestructura de backend centralizada en un mismo sitio y manejable desde un mismo panel de control. Usamos el servicio Web para alojar nuestra página web, la podemos actualizar rápidamente en cualquier momento desde WebMatrix (https://www.microsoft.com/web/webmatrix/). Nuestra base de datos y aplicación servidor se encuentran en una máquina virtual fácilmente escalable, y las fotos de los retos y backups se encuentran almacenadas en el servicio de Storage de Windows Azure, que entre otras ventajas ofrece redundancia de datos en localizaciones separadas para mayor seguridad. Toda esta infraestructura se puede desplegar rápidamente sin necesidad de contar con conocimientos específicos en administración de sistemas.

Crecimiento

En este mes de vida de Pikura llevamos más de 6.500 descargas en Windows Phone (más de 10 veces el número de descargas de nuestra versión de Android), con un gran número de reviews positivas y métricas muy valiosa de uso de la app por parte de los usuarios, que nos indican que camino tomar para futuras funcionalidades.

Gracias al apoyo de Microsoft, también hemos podido presentar Pikura en The App Date Madrid (https://madrid.theappdate.com/octubre-2013-the-app-date-32/) y aparecer en un gran número de medios: El País, Xataka, GeekPro, Atrappo entre otros.

También Pikura ha sido destacada en la Windows Phone Store de varios países y sigue con un buen ritmo de crecimiento y actividad.

clip_image008

José Luis Fernández Gorroño

Pablo Moncunill Osona