9/15/2011

Bilbomática y el desarrollo en el entorno iOS de Apple, para Iphone y Ipad.


Hoy os dejamos una entrevista a dos integrantes del equipo de Bilbomática, Alberto Javier Telletxea y Koldo Duarte, donde describen su visión en el desarrollo de aplicaciones en entorno iOS  de Apple para Iphone e Ipad:





¿ Qué aspectos del desarrollo para la plataforma  iOS destacaríais, desde el punto de vista de Lenguaje de Programación ? 

Koldo Duarte: Como todo lenguaje nuevo, al principio cuesta, aunque con las herramientas de hoy: Internet, foros, ejemplos... estamos de suerte, a mucha gente le ha dado por hacer sus programas para iOS e Internet está lleno de interesantes ejemplos y de vídeos de cómo los han llevado a cabo.
Tal vez lo que más cueste no es la programación en sí, es más toda la burocracia por la que Apple te hace pasar: firma de certificados, distintos perfiles, distribución... pero bueno, ya se sabe: el que algo quiere, algo le cuesta

Alberto Telletxea: El lenguaje de programación es Objective-C que es una evolución de C manteniendo punteros, reserva de memoria, etc. Apple ha ido introduciendo muchas mejoras sobre él, lo que hace que sea muy completo.
Hay algunas características que nos gustaría destacar:
  
•    KVC (key value coding): permite generar y acceder a propiedades de los objetos dinámicament
•    Frameworks muy bien definidos: Core Data (para persistencia de objetos), Quartz Core (para gráficos), Core Location (GPS), Cocos2D (para juegos) etc...
•    Cocoa Bindings: activa una comunicación bidireccional entre el modelo de datos y la vista de un objeto, sin tener que escribir código para mantener esa conexión. Permite ahorrar mucho tiempo y mucho código.
Una de las mayores dificultades es que hay un grupo muy reducido de desarrolladores en esta plataforma, con lo que a veces es complicado encontrar soluciones rápidas a algunos problemas. Por otra parte, en el caso del desarrollo para iPhone / iPad, las limitaciones de los dispositivos hacen que el uso y la gestión de la memoria se compliquen.

¿Qué percepción tenéis, sobre el concepto de la comunidad de iOS a la hora de comenzar con los desarrollos de aplicaciones móviles?

 Koldo Duarte: Desde nuestra propia experiencia en el desarrollo de la aplicación NatureWatch para iPad/iPhone nos hemos apoyado continuamente en las diferentes “web sites” que alimenta la comunidad global de desarrolladores para iOS donde encontramos código fuente libre para integrar redes sociales (Google, Windows Live, FaceBook y Twitter) o controles para enriquecer la usabilidad de la aplicación. Al mismo tiempo nos apoyamos en los diferentes foros en el desarrollo de iOS en los cuales hay mucha actividad y cuyas subscripciones crecen a diario, uno de los foros en castellano más populares es NSCoder Center (http://www.nscodecenter.com/).

Alberto Telletxea: El índice TIOBE (http://www.tiobe.com) es un indicador de los lenguajes de programación que más se están utilizando en el momento actual en el mundo en base a búsquedas en la red, el número de expertos en los diferentes lenguajes y la producción de software realizada. Este indicador sitúa Objective-C en el sexto puesto con un crecimiento continuo desde el 2009 y desbancando a otros lenguajes como Visual Basic o Perl y posicionándose muy cerca de C#.




¿  Como veis los tiempos de desarrollo, frente a desarrollos de Gestión en entorno de Servidores de Aplicaciones y Web ?


Koldo Duarte: Los tiempos de desarrollo para iOS son bastante rápido, en 2 o 3 meses puedes tener una app para iPhone y iPad esperando a que Apple te la apruebe en el App Store y empiece su distribución a nivel mundial; por ejemplo: Todo el tiempo que dedicas a la implantación es recopensado con un par de clicks

Alberto Telletxea: En el proyecto NatureWatch están dos personas a tiempo completo durante tres meses dedicadas al desarrollo de la aplicación móvil usando la plataforma de desarrollo nativa de iOS. Esto indica que el desarrollo de aplicaciones móviles no tiene por qué ser más sencillo y más rápido que otro desarrollo. Por ejemplo, en el proyecto NatureWatch también se va a desarrollar un cliente web en Flex que va a tener unos tiempos de desarrollo y equipo parecidos.
Todo depende del nivel de exigencia del software a desarrollar. Nuestro cliente la Agencia Medioambiental Europea ha incidido mucho en tres aspectos: usabilidad, rendimiento óptimo en la integración con la plataforma de servidor y diseño. Conseguir niveles altos de satisfacción en estos aspectos en una aplicación móvil implica tiempos parecidos a implementaciones de aplicaciones web en el análisis, desarrollo y testing.

¿Cuando hay que acometer un nuevo proyecto, cómo se percibe el ecosistemas de versiones de iOS y orientación de universalidad frente a desarrollos específicos iPad/iPhone?

Koldo Duarte: Está claro que lo mejor antes del desarrollo en sí de cada proyecto, es poder ver el alcance que éste puede llegar a tener y no pillarse las manos, hay que poner en una balanza este alcance frente a las herramientas de desarrollo necesarias para llevarlo a cabo y evaluar las posibilidades. Si tras este balance se contempla que es suficiente trabajar con el framework propio de Apple seguramente se pueda hacer con otros frameworks como el de PhoneGap (HTML5 + CSS3 + JavaScript). Estos framework han ido adquiriendo la personalidad y comportamiento de los S.O. de los móviles actuales, pudiendo cumplir y responder a su UI (User Interface) prácticamente como si hubieras utilizado en el desarrollo de la aplicación el propio lenguaje específico para cada plataforma, es transparente de cada al usuario final. Y el Plus que ofrecen estos frameworks es el ahorro en tiempos de desarrollo (app multiplataforma) y el aumento de posibilidades que ofreces a los usuarios, pudiendo exportar tu proyecto para plataformas como iOS, Android, palm, BlackBerry y Symbian.


Alberto Telletxea: Cuando el cliente nos pidió el desarrollo de una aplicación para iPad/iPhone no tuvimos ninguna duda de que para el desarrollo íbamos a utilizar la plataforma nativa de iOS. La razón de esta decisión está en que teníamos que integrar en la aplicación la plataforma servidora del cliente para el acceso a datos y ya existía un API en el mercado para iOS y Android que permite comunicarse con esta plataforma. Es posible que vayamos a migrar a Android la aplicación y en ese caso también utilizaremos el entorno de desarrollo nativo.

 Actualmente hay un debate abierto para todos los desarrolladores de aplicaciones móviles sí utilizar las plataformas nativas (Android, iOS, etc..) o los frameworks de desarrollo multi-plataforma (PhoneGap, Titanium,…). Hay varias opiniones al respecto y las opiniones se pueden categorizar por la complejidad de las aplicaciones a desarrollar. Teniendo en cuenta que siempre que se pueda desarrollar sobre frameworks multi-plataforma los costes de desarrollo serán inferiores para el cliente, un desarrollo para todas las plataformas móviles existentes.

¿ Algún aspecto significativo que destacarías de le experiencia de desarrollo sobre la plataforma Ios?

Koldo Duarte: Desarrollo muy dinámico, cambiante constantemente, mejorando el framework en cada versión del IDE (Xcode) y añadiendo nuevas funcionalidades, poniendo éstas al alcance del desarrollador, por consiguiente, elementos nuevos que puedes ofrecer en próximas ofertas sin apenas esfuerzo de aprendizaje (véase por ejemplo, nueva integración de Twitter iOS 5.0). Documentación muy buena y motivación extra para el desarrollador, ya que no terminas de aprender nunca y te obliga a estar al día.
Alberto Telletxea: El hecho de tener una tienda virtual (App Store) donde cualquier desarrollador puede colgar y vender sus aplicaciones en un mercado global es muy interesante. Aunque Apple cobra un porcentaje y además de una licencia.
Desde el punto de vista del desarrollo, el entorno de desarrollo que provee Apple, XCode, es muy bueno. La versión más actual ya unifica todas las pantallas y hace que el diseño de la interfaz sea mucho más cómodo que en versiones anteriores. Al mismo tiempo hay que destacar la herramienta de testeo que incluye este entorno, Instruments, facilitando la gestión de memoria algo clave en un dispositivo móvil.