Puxa! para viajantes - a história de um projeto doméstico

- Diga-me, você gosta de viajar?


Tenho certeza de que você responderá que sim, é improvável que, em outro caso, você preste atenção neste artigo :)


- Você está interessado no tópico de desenvolvimento móvel?


Aqui não tenho mais tanta certeza e espero que este artigo não o impeça. De qualquer forma, haverá vários detalhes técnicos que podem ser um pouco úteis para você, mas não necessários.


- E o desenvolvimento móvel multiplataforma?


Eu sei, eu sei, holivar, mas o que fazer - discutiremos e daremos à luz verdades.


De uma forma ou de outra, nesta história comovente, esses tópicos serão afetados; portanto, é hora de fechar o artigo, se você espera algo mais;) Embora eu tentarei escrever para que não haja apenas detalhes técnicos.


Então, um pouco de fundo


Como eu disse, adoro viajar. Para mim, é sempre a unidade e as aventuras que você deseja e espera. Além disso, há vários anos, tentei descrever minhas viagens no formato de um ensaio e gostei. Não que eu me tornasse algum tipo de blogueiro popular - não, e eu não tinha esse objetivo. Mas fiz uma mosca para mim - gromozeka07b9.livejournal.com , pelo menos para mostrar aos meus amigos. Tudo estava ótimo, no começo - gostei, ao voltar para casa, passei alguns dias tentando organizar todas as minhas aventuras na forma de algumas histórias interessantes. Mas, depois de algum tempo, percebi que tinha tempo de esquecer alguns dos eventos interessantes no momento em que voltei e decidi fazer anotações durante a viagem. Em vários cadernos eletrônicos, notas, etc. Isso simplificou um pouco a vida, mas ainda não era conveniente; como resultado, ainda era gasto muito tempo na montagem dessas coisas em uma história. Tornar a história na forma de um canal no Telegram tornou a vida um pouco mais fácil, embora com seus próprios problemas.


O nascimento de uma ideia


No começo era ... pizza. Uma vez que nos sentamos com minha equipe na pizzaria Dodo Pizza, falamos a vida toda e gradualmente passamos a discutir uma pequena startup que ajudaria os turistas a encontrar pontos turísticos, rotas interessantes, usar missões e até criar alguma forma de monetização. Mas, no processo de discussão, desenvolvi gradualmente uma visão de outro produto - em vez disso, uma ferramenta para viajantes que precisam de uma ferramenta para um blog e de anotações focadas no uso pessoal. Eu estava com dor e vi uma maneira de resolvê-lo :)


Como resultado, surgiu um conceito - para iniciantes, é um aplicativo móvel que permite criar rotas offline, marcar pontos, adicionar uma descrição, fotos, compartilhá-lo com outros usuários do aplicativo e também fora - para vários Livejournal, Instagram, Facebook, etc. . Deveria ser possível trabalhar com precisão off-line, porque as viagens nem sempre ocorrem onde há uma rede, mas ao mesmo tempo deve ser possível sincronizar os dados com as nuvens. Até o nome do trabalho foi inventado - QuestHelper.


Este foi um programa mínimo. Além disso, havia outro ponto em que eu estava interessado. Eu estava interessado em desenvolvimento móvel e queria realmente criar um produto real em uma nova plataforma.


Na verdade, todos esses pensamentos vieram à mente uma noite e no dia seguinte começamos a trabalhar.


Algumas palavras sobre a equipe

O desenvolvimento é por minha conta.
Minha esposa Olga atuou como gerente de produto.
Design do meu filho Klim.
E conselhos inestimáveis ​​da conselheira-filha Veronica :)


Para negócios!


No dia seguinte, os pensamentos sobre o aplicativo não me deixaram. Os layouts de interface já estão desenhados na cabeça e os recursos são serrados. A realidade era, é claro, mais complicada. Para formular pelo menos alguma coisa, passamos várias horas formulando a funcionalidade básica em papel e visualizando os princípios de navegação no aplicativo, esses rascunhos foram finalmente transferidos para fluidui.com para que pudéssemos experimentar o layout do aplicativo. Essa foi uma decisão extremamente correta, que mais tarde me permitiu economizar muito tempo - não sou muito sobre fluidos, mas sobre o fato de que você precisa criar um protótipo da interface.


O layout me permitiu impor tarefas específicas ao nosso designer e não explicar a funcionalidade do aplicativo em meus dedos, mas simplesmente mostrar o layout do qual tudo isso está claro.
Enquanto isso, uma nova solução nasceu no Visual Studio com base no Xamarin.Forms - QuestHelper.


Por que Xamarin? Se estiver interessado, olhe sob o gato

Honestamente, para mim, eu não vi alternativas na época e não vejo agora. Tenho pouca experiência com Javascript e não desejo estudar algo como React Native. Com o desenvolvimento nativo, é a mesma coisa: eu sou o único desenvolvedor do projeto, estudar Java primeiro e depois Objective-C ou Swift significa enterrar o projeto, mas não tenho o suficiente para isso.
Portanto, comecei a procurar ferramentas de plataforma cruzada para desenvolvimento móvel.


Eu já tinha um pouco de experiência com o Xamarin.Android - escrevi um tradutor que funcionava como um bate-papo, ficou bastante conveniente, eu ainda o uso:
Isso aconteceu em 2016, quando o Xamarin foi pago e causou grandes problemas, principalmente porque o projeto foi originalmente concebido apenas como introdutório, sem monetização.


No mesmo período, a Microsoft compra o Xamarin e o liberta, pelo menos para o meu cenário, o que me alivia de uma dor de cabeça.


Como eu já disse, eu originalmente planejava fazer um novo projeto no Xamarin.Forms, pelo menos para me familiarizar com a tecnologia e entender a perspectiva. Ainda assim, é tentador ter um código em execução em várias plataformas.


Se você ouviu pouco sobre o Xamarin, a situação é a seguinte:


  • Existe uma abordagem Xamarin.Classic (ou Xamarin.Native). O ponto é que, nessa abordagem, você desenvolve uma lógica comercial comum em um projeto (trabalha com bancos de dados, serviços etc.) e, em projetos individuais, uma interface do usuário nativa que usa um projeto com essa lógica. Grosso modo, na solução VS você tem três projetos:
    • BL (lógica de negócios comum a todas as plataformas)
    • UI nativa do Android
    • Interface do usuário iOs nativa
  • Abordagem Xamarin.Forms. Nesta abordagem, você tem um projeto comum não apenas com a lógica de negócios, mas também com a interface do usuário. Isso impõe suas limitações na interface do usuário, torna-se unificado para plataformas diferentes, mas permite usar os mesmos formulários descritos em XAML.

Palavra por palavra, linha por linha bug por bug .


Então, algum tipo de aplicativo "olá mundo" nasceu no Xamarin.Forms, que no início não podia fazer nada além de mostrar um mapa com pontos de um banco de dados local. Gradualmente, o projeto me fascinou cada vez mais - porque não era apenas a oportunidade de se familiarizar com a plataforma técnica, mas também o uso de práticas de produtos que permitem tentar pensar como o proprietário do produto. Em particular, foi uma boa experiência quando minha equipe e meus amigos se reuniram para uma pequena reunião no coworking e tentaram criar um Mapa da Jornada do Cliente. Não direi que tudo deu certo da maneira que eu queria, mas recebi muitas opiniões e pensamentos novos sobre o tema do desenvolvimento de produtos. Como se viu, as pessoas em geral não pareciam dores :)


Cuidado, contagioso!


Gradualmente, meu entusiasmo começou a ser transferido para a equipe.


Foi ótimo quando, em vez de assistir a algumas séries, toda a família se reuniu na cozinha e desenhou o CJM, telas de aplicativos, considerou formas de monetização e formou uma lista de pendências. Em uma dessas noites, não me lembro de ninguém, o pensamento veio à minha mente - o nome do QuestHelper é meio chato, e também voltado para missões que pensamos desde o início. Dê um novo nome!


Mas, a prática mostrou que não é tão simples. Mas e se você criar um slogan - talvez ele também nos leve a um nome mais adequado para um novo conceito?


Como resultado, em familia O conselho de comando decidiu, doravante, nosso slogan:


  • Eu vou
  • Eu compartilho.
  • Eu vivo

Foi assim que o GoSh nasceu ! (Quando eu tiver uma equipe de profissionais de marketing e gerentes de marca, definitivamente darei a eles a tarefa de descobrir onde estão no GoSh! Parte de "Eu vivo" :)


Em seguida, uma versão do logotipo apareceu, com base na ideia do ícone Compartilhar:




Primeiro uso prático


Em agosto de 2018, estou febrilmente Estou escrevendo um govnokod Estou desenvolvendo recursos que me permitirão usar o GoSh! em condições reais, em uma viagem a Kamchatka. A coisa mais importante que eu precisava naquele momento era a capacidade de criar uma rota sem rede, marcar locais de interesse, adicionar fotos e notas de texto a esses locais.


A última confirmação antes da partida foi feita algumas horas antes de partir para o aeroporto. Foi mais uma unidade! Que alegria e satisfação foram quando, na prática, usei o que fiz com minhas próprias mãos! Nas duas semanas da viagem, guardei anotações no GoSh! e, o mais importante, me pareceu muito conveniente. Obviamente, houve alguns batentes - houve muitos erros e a primeira experiência prática foi adicionada ao backlog do produto com novos recursos e vários bugs. A propósito, esta rota já está disponível no GoSh! - Você pode ver por si mesmo.


Então, o que é GoSh! tal e como pode ser útil para você?


Agora GoSh! é um aplicativo móvel para a plataforma Android, que trabalha com serviços em nuvem para sincronização de dados. As principais funções do aplicativo são:


  • Criação de rotas
  • Marca do ponto de rota
  • Adicionando foto, áudio, descrição de texto no ponto da rota
  • Reconhecendo o texto da sua gravação de áudio através do Yandex SpeechKit
  • Importar pontos para uma rota do Google Maps, mapas Yandex
  • A capacidade de compartilhar a rota com outros usuários do GoSh!
  • Autorização própria e através do Google
  • Sincronização completa dos seus dados com armazenamento na nuvem

Isso por si só permite que você use o GoSh! para realizar anotações de viagem.


E, a propósito, notei que praticamente parei de tirar fotos em um smartphone - agora só tiro fotos através do GoSh! Isso não é tanto publicidade quanto estou falando de conveniência para mim - estacionei o carro em algum lugar, marquei um ponto na rota pessoal de "Estacionamento", agora não esquecerei :) Ou, por exemplo - ao visitar reuniões ou conferências, crio uma rota, por exemplo, "Dias ágeis" - em Jogo fora tudo que me interessou na conferência, texto, áudio, foto. Agora eles não serão perdidos em um monte de outros materiais e, se desejado, eu os compartilharei com outros usuários.


Melhor ver uma vez do que ouvir cem vezes

Tela de Download do Aplicativo:
imagem


A primeira tela de instruções de uso:
imagem


Exemplo de lista de rotas:
imagem


Um exemplo de uma lista de waypoints:
imagem


Visualização da rota:
imagem


Um exemplo de exibição de um waypoint:
imagem


Então, o que vem a seguir?


Resolvi parcialmente o meu problema, mas tive a ideia de que talvez a ideia de uma nota de viagem desse tipo fosse interessante para outras pessoas, portanto seria bom tentar descobrir o que as pessoas precisam. Como a comunicação demonstrou, poucas pessoas estão interessadas em tomar notas ou criar rotas, geralmente era interessante para as unidades em meu ambiente. E basicamente, as pessoas estão interessadas em clicar na foto e colocá-las em seu aconchegante instagram.


Portanto, basicamente o backlog agora é construído em coisas sociais, como:


  • Obviamente, adicione exportação de rota ao Facebook / Instagram / VK, etc.
  • Adicione a capacidade de visualizar rotas, não apenas no GoSh! mas também através da galeria no site
  • Adicionar recurso ao GoSh! encontre e visualize rotas publicadas por outros usuários
  • Adicione comentários e curtidas
  • Localização - adicionando uma interface em inglês
  • Funcionalidade de planejamento de rota talvez mais conveniente

O que está acontecendo agora?


Bem, além do fato de eu ter decidido falar um pouco sobre o projeto, agora nosso designer permanente (meu filho Klim) está desenvolvendo um pouso em Tilda para que as pessoas possam mostrar algo sem instalar o aplicativo, além de um pequeno anúncio certamente não vai doer.


É assim que o pouso parece agora: Landing GoSh!
Não julgue estritamente, esta é a nossa primeira experiência :)


Pretendo usar a mesma página de destino para visualizar rotas, para aqueles que não desejam criá-las, mas apenas observe - haverá uma oportunidade. Também agora, no processo de processar a tela do ponto - após vários meses de uso prático, ficou claro que era inconveniente nele.


Então, o que aprendemos ao longo do ano?


O primeiro.


E o mais importante - deve haver alguém que “conduza” o projeto.


Nesse caso, sou eu. Quando a energia sai de mim, ninguém mais pode ficar em casa na esquina, todos são forçados a se envolver :) Quando ele me deixa ir um pouco, ele deixa todos sairem. E trabalhamos com esses períodos de ascensão e descida. Embora eu seja grato à minha família por sua ajuda - realmente, seria muito difícil para um. Também sofro periodicamente pelo fato de não poder dedicar mais tempo ao projeto, não tenho tempo suficiente, embora, quando eu trabalho nele, eu apenas fique chapado e aproveite. Às vezes eu acordo às 5 da manhã, para que antes das 8 da manhã (é hora do trabalho principal) fazer algo útil. E férias de duas semanas em um local onde há Internet - esta é uma ocasião para lançar uma dúzia de lançamentos noturnos :) Quando você vê o resultado do seu trabalho, e não demora, mas agora você pode usá-lo - ele cobra.


O segundo


A compreensão disso veio gradualmente. A princípio, tínhamos idéias do nível "naves espaciais que exploram as extensões do Teatro Bolshoi". Gradualmente, eles começaram a pousar e, quando apareceu um produto mínimo que você podia "tocar" - ficou claro o quão difícil era desenvolver o produto. Isso é realmente um trabalho - descubra as necessidades do mercado, a dor das pessoas, encontre concorrentes, entenda como você difere deles e explique ao público ... No final, faça com que as pessoas se interessem em pelo menos instalar um aplicativo para assisti-lo - e isso é um problema, até no círculo interno das pessoas, sem mencionar o fato de que estranhos colocam algo para si mesmos e até dão feedback. Mas, de qualquer forma, graças a muitos amigos e parentes que fizeram isso, sem você, eu provavelmente teria deixado tudo há muito tempo.


O terceiro.


Costumo ouvir - "e daí, você tinha que tornar o MVP realmente mínimo e verificar em público". Eu concordo Um "Mas" - você precisa entender claramente, mas por que qual é seu objetivo? Deseja realmente lançar um produto popular ou talvez queira algo mais? E minha experiência me mostrou que pelo menos um ano eu gastei não lançando um produto real, mas conhecendo a plataforma de tecnologia. Atingi esse objetivo e agora há um entendimento de que seria bom pensar no desenvolvimento, de fato, de um produto útil para as pessoas, e não de outro recurso interessante apenas para mim. Em geral, é hora de pensar não apenas em si mesmo, mas também no que você precisa :)


Quarta.


Equipa São necessárias pessoas com idéias semelhantes, com as quais você pode aprender, talvez você possa ensinar alguém a si mesmo. No final, se uma boa equipe - vocês se motivarão a fazer alguma coisa. E de um ponto de vista prático - por exemplo, muitas vezes tenho vergonha de ver meu código :) No começo, havia testes, e o código tentava escrever com mais ou menos precisão, mas, devido ao fato de que era a hora certa, os testes voaram primeiro e sobre a qualidade do código começou a martelar. Se houvesse mais desenvolvedores na equipe, essas otmazas não teriam funcionado :) E, é claro - a equipe, essas são novas idéias, novas visões de soluções.


Detalhes técnicos


Nenhuma filosofia, tudo sobre o caso

Então, C #, Visual Studio 2017, Xamarin Forms.


Desenvolvimento em PC (em casa) e Macbook (em movimento), em um estúdio de papoulas.
No momento, apenas a montagem para Android está disponível publicamente no Google Play. Para o iPhone, eu fiz montagens no começo, mas agora joguei fora essa idéia - não há tempo para dividir a atenção em duas plataformas; de qualquer maneira, você ainda precisa ajustar a interface do usuário e usar controles nativos em alguns casos - por exemplo , trabalhe com o cartão e, de fato, será necessário fazer o mesmo no iPhone.


Uso o projeto Realm como armazenamento local (usei o SqlLite no Translate Helper, não posso dizer nada de ruim - o Realm apareceu por curiosidade e não por necessidade prática).


Quanto ao servidor. O servidor armazena todas as rotas e arquivos de mídia que o usuário usa ao trabalhar no GoSh! , isso é necessário, pelo menos para, em princípio, poder compartilhar rotas. O servidor é gravado no .Net Core, hospedado inicialmente no Azure, enquanto eu tinha uma assinatura do BizSpark, mas, há alguns meses, a assinatura foi encerrada e mudei para a hospedagem linux no reg.ru, já que praticamente não havia nada para reescrever. Dos profissionais - aumentou muito a velocidade de acesso aos dados e dos menos - perdeu a capacidade de usar os Application Insigths. O banco de dados no servidor é MySQL.


E quantas rotas a sincronização bebeu ... agora sua terceira versão já está funcionando, e acredito que haverá uma quarta, já existem pensamentos sobre otimização e novos recursos.


Todas as estatísticas de desempenho do aplicativo se enquadram no appcenter.ms, pois são gratuitas para o meu nível. É muito conveniente ver erros e estatísticas sobre as ações do usuário quase em tempo real.


Talvez isso seja tudo em tecnologia, se algo é interessante - pergunte nos comentários, eu direi.


.


, .


, , — ! , , , , , - — , , , MVP , , .


, , , , , , :)
Google Play — ! :)


, , — , , Xamarin. , , , , — , - !


: Facebook


!?

imagem


UPDATE ( ):
, !
, , , , ! ! , , , , . , . , , , — , , . , , , , : -. ? "" — . "" — . — , . , — . :)

Source: https://habr.com/ru/post/pt458272/


All Articles