Nobel 0.2 soporta Swagger y RAML

Publicado por Norberto Herz el 24 de Abril de 2016

Tiempo atrás, cuando trabajaba con el equipo que desarrolló RAML, aproveché el tiempo de una hackathon para crear una primera versión de Nobel. En pocas palabras, Nobel es una aplicación que utiliza una definición de una API en un lenguaje de alto nivel (Swagger o RAML) para generar el código Arduino que implementa dicha API. Esta primera versión solo soportaba RAML como lenguaje de definición. Recientemente, habiendo podido investigar un poco más Swagger y sus herramientas, pude agregar soporte para este lenguaje también.

Swagger o RAML

Creo haber visto más de 25 posts que hablan de esta temática (aquí comparto algunos links con ustedes: 1 2 3). Independientemente de los resultados de estos análisis, tengo una pequeña lista de propios pensamientos al respecto habiéndo trabajado con ambos:

  • RAML me resulta más fácil de entender y de escribir. Considero que la expresividad del lenguaje es superior.
  • RAML introdujo YAML desde el comienzo, mientras que swagger nos pedía que escribiéramos la definición directamente en JSON.
  • Swagger tiene mayor comunidad y sus herramientas parecen más completas y robustas.
  • Con el lanzamiento de Swagger 2.0, la capacidad expresiva del lenguaje mejoró notablemente, aunque la tendencia a traducir 1:1 el antiguo JSON al nuevo YAML no lo pone a la altura de RAML.
  • Mientras que el lanzamiento de RAML 1.0 trajo novedades más que interesantes (Noviembre 2015), el parser para Node.js sigue en “beta”, lo que hace que la piedra angular de una gran rama de herramientas pueda no ser lo suficientemente robusta para ser lanzada a producción.
  • El objeto que devuelve el parser de RAML (0.8) es realmente mucho más intuitivo y fácil de “navegar” que el que devuelve el parser de Swagger (2.0).

Independientemente de todo análisis, nada me impide hacer que la herramienta soporte ambos lenguajes y esto se debe principalmente a la capacidad de crear un objeto intermedio que es el que será utilizado para generar el código fuente. El siguiente diagrama representa dicho comportamiento.

Nobel - Flujo de la aplicación

Cómo comenzar

El principal objetivo de Nobel es que cualquier persona con mínimos conocimientos sobre programación en Arduino, pueda desarrollar su propio dispositivo controlado remotamente vía HTTP. Habiendo dicho esto, es necesario: - Contar con una placa Arduino y las herramientas de desarrollo instaladas. - Contar con un Ethernet Shield. - Contar con conocimientos básicos de Swagger o RAML. - Tener instalado Node.js.

En la documentación de Nobel se puede encontrar toda la información necesaria para entender su funcionamiento en profundidad, así como un ejemplo práctico para tener nuestro primer dispositivo funcionando en minutos.

Para qué

La intención de Nobel es solucionar una problemática relativamente compleja: Exponer una API REST utilizando una placa Arduino. De esta forma, los desarrolladores pueden concentrarse en construir sus propios dispositivos. Ahora podés pensar en aquellos proyectos que venías postergando y comenzar a controlar tus propios dispositivos de forma remota.

Contribuir

Nobel es una aplicación Open Source. Podés contribuir mejorando el código, incorporando nuevas funcionalidades, probando y reportando errores. En este link podés encontrar el repositorio GitHub