em Atualizações

O desenvolvimento de Luanda continua (lentamente), nos intervalos das atividades do pós-doutorado. O projeto evoluiu das “gambiarras” iniciais para um estágio no qual é possível construir apps híbridos básicos.

Pode-se utilizar qualquer plugin do Cordova para acessar recursos do dispositivo e oferecer interações ordinárias – navegação entre telas com animações, preenchimento de formulários, busca e recuperação de conteúdos no próprio app ou em fontes externas etc. O editor online melhorou bastante e fiz alguns testes com a versão offline (Electron), que ainda não é prioridade. A interface está dividida no simulador do app (direita) e o editor, que possui quatro abas:

1. Edição do script principal (Lua)

Corresponde à lógica do app. A ideia é funcionar como as demais aplicações que utilizam Lua (i.e. LÖVE2d, PICO-8) e oferecer funções pré-definidas para controle do estado inicial do app (setup/init), o que está sendo exibido (draw/render), atualização de dados (update) e assim por diante.

Edição do script principal do app em Lua

2. Edição do módulo de comunicação Lua <-> DOM (Lua)

Acesso à estrutura do documento (interoperabilidade oferecida pelo Fengari) e demais funções e dados a serem reutilizadas no script Lua. Estou trabalhando esta área para reproduzir o uso de require ou dofile em Lua ou import e classes do Processing, com a ressalva de que o uso de tabelas é infinitamente mais intuitivo para iniciantes.

Módulo em Lua para acesso ao DOM (via Fengari.js)

3. Edição das configurações do app (JSON)

Intervalo de atualização do script do app (desativado ou automaticamente a cada n milisegundos); se o dispositivo deve armazenar a versão do script que recebeu do servidor em cache (armazenadas localmente no dispositivo, mesmo após o fechamento do aplicativo); ou ainda a última versão do script que está armazenada no servidor.

Configurações do app (versão, atualização e cache no dispositivo)

Essas configurações: 1) permitem a comparação de versões em cache e aquela disponível no servidor; 2) viabilizam atualizações automáticas para versões mais recentes sem precisar instalar versões inteiras do app nas lojas.

Script publicado no app, diferente do servidor.

No caso de apps sem atualização, o primeiro carregamento busca o script, dados e todo o resto no servidor e aguarda mudanças futuras nas configurações. Atualizações periódicas facilitam a construção de feeds, mashups e timelines. É possível, naturalmente, empacotar o app com scripts, dados e módulos de fábrica para a primeira instalação.

Outro recurso importante diz respeito às versões de teste e públicas do script: o editor utiliza versões salvas e não publicadas no simulador, permitindo que o usuário do app no dispositivo só visualize versões “publicadas”.

Precisarei desenvolver melhor o versionamento no futuro, deixando versões distintas para o estudante comparar, misturar e recuperar códigos. Por enquanto, a distinção entre público e salvo resolve a experimentação básica necessária para o aprendizado da linguagem Lua.

4. Estruturas de dados (JSON)

Estrutura simples de dados (JSON), também enviada assincronamente para o app.

Edição de dados acessíveis ao script Lua, substituindo (conceitualmente) o acesso a bancos de dados. No momento estou utilizando JSON, em função da edição no navegador. A escolha natural seria utilizar tables em Lua, mas considerei a possibilidade de utilizar JSON internamente e facilitar a incorporação de dados de APIs abertas na Web.

A parte bacana é a geração em tempo real da representação hierárquica da estrutura na parte inferior do editor dos dados. Esse recurso permite que o usuário (estudante) navegue pela estrutura (LUANDA_DADOS.x) e clique nos elementos para visualizar o “endereço” do dado no objeto. Elaborei esse recurso para ajudar os estudantes a pensarem ontologicamente no conteúdo do app, criando classes de objetos, vocabulários controlados para tudo que houver na interface e definições de variações de comportamentos com base em dados.

Sobre o app (apk)

App de testes (Cordova 7)

Atualizei o pacote no qual injeto a “mágica” do Luanda para Cordova 7 e consegui reduzir a versão básica para cerca de 1.7mb. Isso significa que uma vez instalado no celular, o aplicativo busca todo o resto que precisa do servidor e faz cache, se este for o desejo de quem desenvolver 🙂

Estou rodando o app “Aprender Luanda” com performance muito boa no Alcatel Pixi 4 (Android 6), que nem de longe é um celular razoável, e sem problemas (até agora) em Androids 4.x e 5.x. Para quem tem outras plataformas, a versão mobile do simulador funciona perfeitamente no navegador e ajuda a fazer testes em iPhones e outras plataformas mortas-vivas do mercado.

Próximos passos

  • Gerenciador de scripts Lua, permitindo o carregamento de vários módulos para o mesmo app;
  • Gerenciador de mídia (upload e edição de imagens);
  • Módulo Lua completo para comunicação com o DOM;
  • Versão Luanda dos elementos de interface criados para os aplicativos que desenvolvemos no Loop;
  • Uso-piloto de Luanda em apps para serem utilizados por usuários finais.

Curioso para saber como isso funciona? Teremos um alpha em breve 🙂

Comente

Comentário

Webmentions

  • Luanda: substituindo HTML, CSS e JS por Lua no Cordova – Hugo Cristo, Designer

    […] Atualização em 20/03/2018: Progressos em Luanda […]