Wordnote Dictionary
Categorias

Como e por que um brasileiro criou um aplicativo de dicionário do zero

Parece que foi ontem que começamos a usar smartphones como um componente essencial de nosso cotidiano. Entretanto, foi longo o processo de consolidação das lojas virtuais e apenas a explosão dos aplicativos que permitiu que os dispositivos móveis se tornassem indispensáveis. Na competição selvagem das lojas, startups nasceram e morreram, sucessos surgiram e foram esquecidos. Hoje em dia, parece que todos tem os mesmos aplicativos instalados e o terreno está mais ou menos demarcado.

Ledo engano. Sempre há espaço para mais e inovadores aplicativos. Assim como ainda existe espaço para o espírito do “faça você mesmo”, para que desenvolvedores fora da caixa consigam produzir soluções que, inicialmente, parecem dedicadas somente a suas necessidades pessoais, porém, muitas vezes, essas ferramentas tem um potencial imenso para atingir um bom volume de usuários.

José Fernandes é um desenvolvedor brasileiro com expertise em interfaces humanas, atualmente liderando o time de design do CodeSandbox. Em um artigo publicado na internet, ele explica por que tomou a decisão de criar uma solução customizada de dicionário de inglês e quais foram as tecnologias utilizadas no processo.

José Fernandes

Com sua autorização, traduzimos e reproduzimos o artigo na íntegra:

“Essa história começa da mesma forma que qualquer outro app: com um problema. Eu estava lendo Duna e meu objetivo era terminar antes do lançamento do filme. Não sou um falante nativo de inglês e a maior parte do meu vocabulário em inglês está relacionado ao trabalho e à vida social. Então, eu estava tendo dificuldade em entender toda a poesia que o livro consegue entregar. Então, pensei em usar uma das tecnologias maravilhosas que os humanos produziram: o dicionário.

Como sou filho da Era da Informação, fui à AppleStore em busca do que foi feito do legado de Samuel Johnson (não exatamente o inventor do dicionário, mas famoso por combinar ordem alfabética e tópica). No entanto, não pude acreditar que nenhuma das opções disponíveis satisfizesse o que eu esperava de um aplicativo de dicionário.

Eu juro que não tinha expectativas muito altas, apenas alguns princípios básicos:

  • Suporte offline: Vivemos na era da distração. Se você precisa manter o telefone por perto para procurar palavras, manter uma conexão com a Internet é um convite para mudar para o WhatsApp após cada parágrafo.
  • Rápido: Você já se sente mal por deixar o livro ou artigo que está lendo, então a busca deve parecer instantânea, sem tempo de carregamento percebido. A utopia é ter uma interação que aconteça na velocidade do pensamento.
  • Armazenamento de conhecimento: Cada palavra que você pesquisa é uma oportunidade de aumentar seu vocabulário, mas se você não escrever a palavra ou não puder consultar o histórico, essa oportunidade está sendo jogada fora.
  • Livre de ruído: É incrível a quantidade de distrações que esse tipo de aplicativo costuma ter: cliques extras, recursos desnecessários, anúncios retangulares e muitos estilos de tipografia.
  • Sem bloqueio: Este princípio vem do movimento de software local: os usuários recuperam a propriedade dos dados para que possam exportar e manipular o que criaram.
  • Bom conjunto de dados: Conversando com alguns amigos linguistas, nem todo dicionário é um bom dicionário. Eles têm seus próprios propósitos editoriais e objetivos diferentes. Os dicionários modernos tendem a ser mais funcionais, menos específicos e espremem a palavra para obter poucos significados. Outros têm uma linguagem mais poética e lúdica, adequada para escritores e falantes nativos.

Com isso em mente, sentei-me em frente à minha mesa e comecei a criar um esquema do que poderia ser esse aplicativo de dicionário perfeito.

Missão aceita:

Depois de ter esse vislumbre do futuro, não pude deixar de desejar esse app, um veneno que todo criador já bebeu. Então comecei minha missão e descobri que o problema era mais complicado do que eu pensava… mas vamos chegar lá.

Os dados

Comecei a buscar dados confiáveis para o dicionário; Acontece que não é tão simples quanto parece. A maioria dos dicionários gratuitos que testei definem “hello” como “ver Halloo” (ah, não!). Depois de ler alguns artigos, cheguei à API do freeDictionary que usa o Wikcionário como fonte.

Como eu precisava dos dados offline, eles não estavam prontos para serem conectados ao meu aplicativo react-native, mas foi um começo. Então criei um script para baixar as definições das mais de 300.000 palavras comuns em inglês e inseri-las em um banco de dados SQLite. Para evitar ser bloqueado por tantos pedidos, deixei meu computador acordado por 30 horas seguidas para baixar todas as definições. Veja o script fazendo todo o trabalho duro:

Testando a velocidade

Agora eu tinha o db.sql com as palavras e definições em inglês.

Eu estava preocupado com a velocidade de consulta do react-native em um banco de dados SQLite de 21 MB. Acontece que não devo me preocupar – a grande vantagem de seguir uma abordagem local primeiro é contar com a velocidade do dispositivo. Minha primeira demonstração e momento feliz na jornada. Um simples texto de entrada procurando palavras.

Navegação do cursor

Agora o próximo desafio e, pessoalmente, a parte mais empolgante da interface do usuário: usar o cursor para navegar entre as palavras. Isso permite que você tenha resultados em tempo real ao escrever uma palavra ou quando estiver navegando para frente e para trás na nota que você já preencheu (o uso de uma entrada de texto permite que você segure e mova o cursor com o teclado).

… com alguns ifs mágicos, mas funcionou 🙂

Polimento e layout

Hora de criar e polir a aparência do aplicativo. Nada particularmente especial, apenas sentar e trabalhar nos detalhes:

  • Escolher uma tipografia adequada para leitura e escrita;
  • Escolher um esquema de cores para o modo claro e escuro.
  • Criar a configuração e a página de lista.
  • Certificar-me de calcular a altura do teclado e manter ambas as áreas (entrada e resultado) sempre visíveis.

De volta ao conjunto de dados

As coisas estão indo muito bem. Mas quando comecei a procurar suporte para vários idiomas, além do inglês, o Wikcionário não funcionou mais. Para os outros idiomas, o conjunto de dados está incompleto.

Quando comecei a procurar alternativas, percebi que o principal desafio de ter um bom aplicativo de dicionário não é tecnologia ou design; são os modelos de licença das empresas que mantêm e vendem dicionários. Todos os modelos de preços e licenciamento que encontrei até agora são baseados em API; eles cobram por chamada e proíbem você de armazenar em cache o resultado. Quando há a opção de licenciar um conjunto de dados off-line, os preços disparam. Por exemplo, Oxford permite apenas conjuntos de dados off-line no modelo empresarial com um custo mínimo de £ 3.000.

Criar e manter um dicionário é muito trabalhoso e deve ser bem reconhecido. Noah Webster levou 26 anos e muitos empréstimos para publicar sua versão. Eu reconheço e entendo por que um trabalho tão grande tem que ser cobrado. O que questiono aqui são os modelos que são contra as boas práticas de UX (como nenhum cache), considerando o quão essencial é um dicionário de dados para o aprendizado humano e modelos de IA. Os conjuntos de dados de qualidade não deveriam estar disponíveis gratuitamente e para acesso rápido? Apoiado por modelos ONG ou sem fins lucrativos?

Versão 1.0

Mesmo que eu ainda não tenha o modelo de licença do conjunto de dados 100% definido, estou disponibilizando o aplicativo caseiro com o qual sonhei para uso geral (Android | iOS). Também é de código aberto, portanto todas as contribuições são bem-vindas.

Um software pessoal para guardar as palavras que você lê em um livro, vê em uma viagem, aprende em uma aula ou ouve na rua. Conhecimento instantâneo, sempre com você, pois sincroniza com o iCloud e o Google Drive (boa apresentação, não?).

Mais por vir

Como acontece com todo produto, depois de alguns comentários de usuários beta (ou seja, minha namorada) e meu próprio uso, já tenho um monte de ideias sobre como torná-lo ainda mais especial.

Flashcards

Seria bom ter um modo flashcard no aplicativo para ajudá-lo a revisar e memorizar as palavras que você anotou, sem a necessidade de exportar para praticar.

Sistema expansível

A estrutura de dividir a tela entre a nota e a definição da palavra é poderosa. O Google Maps faz isso muito bem quando você está procurando lugares. Então, por que não expandir as possibilidades e permitir que você navegue entre diferentes resultados para essa palavra? Por exemplo: traduções, definições do usuário, usos contextuais.

Obrigado por me acompanhar nesta jornada e através deste texto. Se você gostou e quer apoiar o app, acesse o Github e torne-se um patrocinador. Eu aprecio isso e isso me mantém avançando para atualizar e torná-lo ainda melhor.”

Publicado originalmente como “Why I built a dictionary app“. Traduzido e republicado com autorização do autor.