martes, 3 de noviembre de 2015

Más Hybrid Apps!

12:02 by Zalakain · 0 comentarios

Por fin tras un par de meses de trabajo, he terminado mi nueva App híbrida para Android, San Fermín Quiz (quizá la publique en WindowsPhone y iOS, aunque el "sablazo" de Apple me molesta mucho pagarlo para una App free). Como en el caso de mi desarrollo anterior, CPE Tráfico, he usado Apache Cordova (la versión open source de Adobe Phonegap) para su desarrollo. Se trata de la tercera App híbrida que publico, y la considero nueva ya que es un completo re-make de la versión anterior de San Fermín Quiz, que aunque también estaba basada en Cordova/Phonegap empleaba jQuery Mobile para el front-end. En este caso sin embargo quería trabajar con Ionic Framework (en vez de Onsen-UI que fue mi elección para CPE Tráfico). En ambos casos se trata de frameworks de presentación modernos que hacen uso de AngularJS, el framework MVW de Google del cual me he enamorado completamente tras estos proyectos. Y si algo me han enseñado ambos es a ¡huir de jQuery como de la peste! :D También he aprendido algunos detalles más que quiero comentar un poco en este post, por si es útil.

En primer lugar destacar que cada vez tengo más claro que (en mi opinión) las Apps Híbridas son el futuro de las Apps. Claro como el agua. Hoy en día "perder el tiempo" (perdón si alguien piensa que me equivoco) desarrollando con Swift, Java o cualquier otra plataforma "monocolor" es, como poco, improductivo. Cordova/Phonegap ofrece todo lo que se necesita para desarrollar aplicaciones de calidad y multiplataforma, y sólo requiere conocer JavaScript. Si a eso añadimos que al desarrollar con JavaScript+AngularJS estamos haciendo crecer nuestro abanico de herramientas de futuro (ya que es un "estándar" practicamente para cualquier desarrollo actual: web server, web client, IoT,...) el beneficio se multiplica.
Es cierto que sí hay algunos casos en los que pueda requerirse un desarrollo de App "nativas": por ejemplo las que deben interactuar con "intents" no cubiertas por Cordova/Phonegap o muy específicas de dispositivo; o aquellas en las que se quiera tener un control férreo del código (como TPVs o algunas Apps de empresa). Pero si pensamos que estos casos representarán como un ¿5%? del total de proyectos de Apps, resulta muy complicado justificar el esfuerzo extra de desarrollar "nativo".

Respecto al uso de Ionic comparado con Onsen-UI, tengo opiniones encontradas. Por un lado, Onsen-UI me gustó mucho inicialmente. Su elegancia "out of the box" unido a unos ejemplos de código en su página muy utilizables (léase "copy & paste") para hacer un esqueleto de App en poco tiempo fueron de agradecer. Cuando utilicé este framework para desarrollar CPE Tráfico me resultó cómodo desde el principio: me gustaba lo que veía, se integraba con Cordova/Phonegap sin fallos, me ayudaba a entender lo básico de AngularJS,... En general tuve pocos problemas. Pero una cosa sí que me resultó algo difícil... Onsen-UI es el desarrollo de la empresa japonesa Monaca, y la información disponible en la web sobre esta plataforma es escasa: la prueba del algodón es buscar el término "onsen-ui" en Stackoverflow.com que devuelve 1.213 resultados, mientras que buscar "ionic" devuelve 10.970... Es cierto que Monaca está intentando solucionar esto, con nuevos productos (Monaca Cloud, Monaca Debugger, Monaca LocalKit...) y añadiendo más miembros a su equipo para divulgar y dar soporte a los usuarios (por ejemplo Fran Dios @frandiox), y que sabiendo buscar y programar un poco todo se soluciona :)
Pero cuando he usado Ionic... ¡menuda actividad! Entre las entradas en Stackoverflow, su blog y productos (Ionic Lab, Ionic Market,... ) y algunos de los autores que tienen escribiendo artículos para ellos (Raymond Camden, Cristophe Coenraets, Ashteya Biharisingh, Simon Reimler... y muchos más) lo raro es no encontrar información y soluciones a cualquier problema. La verdad es que en esto no hay comparación (por ahora). Otras cosas distintas son la manera de desarrollar el proyecto. Ionic instala en la máquina de desarrollo un CLI muy útil, con el que ejecutar de manera inmediata en tu propio servidor web local la aplicación que estemos desarrollando, y que además monitoriza el código y se actualiza automáticamente cuando hay cambios. También puede compilar la App (aunque yo esto lo prefiero hacer por mi cuenta con Phonegap Build) y desplegarla en un emulador o en un dispositivo conectado a la máquina. Una manera muy buena de agilizar nuestros tiempos de desarrollo y simplificar las pruebas. (Monaca tiene algo parecido para Onsen-UI, Monaca LocalKit, pero no he podido probarlo). Y algo más "invisible" pero que a la larga ayuda: Ionic crea una estructura de archivos y carpetas para comenzar nuestros desarrollos de manera organizada. Esto con Onsen-UI se realiza de manera "manual" con lo que podemos tener más diferencias entre un proyecto y otro que pueden complicar el desarrollo ("¿dónde está aquella librería que creé para...?") mientras que en Ionic la cosa está más clara. ¿Algo que no me guste de Ionic? Bueno, su estilo visual ootb es malo, muy flojo comparado con Onsen-UI donde todo resulta más agradable visualmente ( y Onsen-UI permite usar iconos de Font-Awesome también, además de los de Ionicons, aunque esto también se puede conseguir en Ionic con algo de esfuerzo). Pero según parece esto es parte de la estrategia comercial de Ionic, ya que recientemente han lanzado Ionic Market donde se pueden comprar temas, plugins y paquetes starter para nuestras aplicaciones Ionic. Por suerte yo encontré Ionic Material que es una manera gratis y simple de implementar Material Design.

En definitiva cosas buenas en ambos frameworks, pero puestos a elegir Ionic tiene a día de hoy mucha más información accesible. ¿Será esto como VHS y Beta? Quién sabe, puede que sí. No he podido hacer una comparativa más exhaustiva "al uso" que sería lo adecuado para poder decantarse por una u otra: funcionalidades, rendimientos (esto sobre todo sería importante conocer, si alguien tiene información al respecto por favor que la comparta), plataformas soportadas y versiones, tests en dispositivos reales, frecuencia de actualización y de resolución de errores, plan de futuro... Al fin y al cabo, soy un "one-man-shop" desarrollando Apps en part-time!

Quizá/seguro que con los siguientes proyectos que tengo en mente aprenda mucho más: algo para Estudio de Mercado que en el Marketing se invierte mucho, algo para los aficionados a las Cámaras,... Hybrid rules!

comentarios

0 Responses to "Más Hybrid Apps!"

Publicar un comentario