Meine Güte! für Reisende - die Geschichte eines Heimprojekts

- Sag mir, reist du gern?


Ich bin sicher, dass Sie mit Ja antworten werden. Es ist unwahrscheinlich, dass Sie in einem anderen Fall auf diesen Artikel achten würden :)


- Interessieren Sie sich für das Thema Mobile Development?


Hier bin ich mir nicht mehr so ​​sicher und hoffe, dass ich Ihr Interesse an diesem Artikel nicht entmutigen kann. In jedem Fall wird es eine Reihe von technischen Details geben, die für Sie vielleicht ein wenig nützlich, aber nicht notwendig sind.


- Was ist mit der plattformübergreifenden mobilen Entwicklung?


Ich weiß, ich weiß, Holivar, aber was zu tun ist - wir werden streiten und Wahrheiten gebären.


Auf die eine oder andere Weise werden diese Themen in dieser herzzerreißenden Geschichte betroffen sein, daher ist es Zeit, den Artikel zu schließen, wenn Sie etwas anderes erwarten;) Obwohl ich versuchen werde, so zu schreiben, dass es nicht nur technische Details gibt.


Also ein kleiner Hintergrund


Wie gesagt, ich liebe es zu reisen. Für mich ist es immer der Antrieb und die Abenteuer, die Sie wollen und warten. Außerdem habe ich vor einigen Jahren versucht, meine Reisen im Format eines Aufsatzes zu beschreiben, und es hat mir gefallen. Nicht, dass ich eine Art beliebter Blogger geworden wäre - nein, und ich hatte kein solches Ziel. Aber ich habe mir selbst eine Fliege gemacht - gromozeka07b9.livejournal.com , zumindest um es meinen Freunden zu zeigen. Am Anfang war alles großartig - es hat mir gefallen, als ich nach Hause zurückkehrte, verbrachte ich ein paar Tage damit, alle meine Abenteuer in Form einiger interessanter Geschichten zu arrangieren. Aber nach einiger Zeit wurde mir klar, dass ich bei meiner Rückkehr gerade Zeit hatte, einige der interessanten Ereignisse zu vergessen, und ich beschloss, mir direkt auf der Reise Notizen zu machen. In verschiedenen elektronischen Notizbüchern, Notizen usw. Dieses vereinfachte Leben ein wenig, aber es war immer noch nicht bequem, daher wurde immer noch viel Zeit darauf verwendet, dieses Zeug zu einer Geschichte zusammenzusetzen. Die Geschichte in Form eines Kanals in Telegram zu machen, machte das Leben ein wenig einfacher, wenn auch mit eigenen Problemen.


Die Geburt einer Idee


Am Anfang war es ... Pizza. Sobald wir mit meinem Team in der Dodo Pizza-Pizzeria sitzen, sprechen wir fürs Leben und diskutieren nach und nach ein kleines Startup, das Touristen dabei hilft, Sehenswürdigkeiten und interessante Routen zu finden, Quests zu nutzen und sogar eine Form der Monetarisierung zu finden. Im Verlauf der Diskussion entwickelte ich jedoch nach und nach eine Vision für ein anderes Produkt - eher ein Tool für Reisende, die sowohl ein Tool für ein Blog als auch Notizen zum persönlichen Gebrauch benötigen. Ich hatte Schmerzen und sah einen Weg, sie zu lösen :)


Als Ergebnis entstand ein Konzept - für den Anfang ist dies eine mobile Anwendung, mit der Sie Routen offline erstellen, Punkte markieren, eine Beschreibung hinzufügen, Fotos erstellen, sie mit anderen Benutzern der Anwendung sowie außerhalb teilen können - für verschiedene Livejournal, Instagram, Facebook usw. . Es sollte möglich sein, präzise offline zu arbeiten, da Reisen nicht immer dort stattfinden, wo ein Netzwerk vorhanden ist, sondern gleichzeitig Daten mit den Clouds synchronisiert werden können. Sogar der Arbeitsname wurde erfunden - QuestHelper.


Dies war ein Mindestprogramm. Darüber hinaus gab es einen weiteren Punkt, an dem ich interessiert war. Ich war an mobiler Entwicklung interessiert und wollte unbedingt versuchen, ein echtes Produkt auf einer neuen Plattform zu entwickeln.


All diese Gedanken kamen mir eines Abends in den Sinn und schon am nächsten Tag begannen wir mit der Arbeit.


Ein paar Worte zum Team

Die Entwicklung liegt bei mir.
Meine Frau Olga war als Produktmanagerin tätig.
Design von meinem Sohn Klim.
Und unschätzbare Ratschläge von Berater-Tochter Veronica :)


Zur Sache!


Am nächsten Tag ließen mich die Gedanken über die Bewerbung nicht los. Schnittstellenlayouts sind bereits im Kopf gezeichnet und Merkmale sind gesägt. Die Realität war natürlich komplizierter. Um zumindest etwas zu formulieren, haben wir mehrere Stunden damit verbracht, die grundlegenden Funktionen auf Papier zu formulieren und die Navigationsprinzipien in der Anwendung zu visualisieren. Diese Entwürfe wurden schließlich auf fluidui.com übertragen, damit wir mit dem Layout der Anwendung experimentieren konnten. Dies war eine äußerst korrekte Entscheidung, die es mir später ermöglichte, viel Zeit zu sparen. Mir geht es nicht so sehr um Flüssigkeit, sondern um die Tatsache, dass Sie einen Prototyp für die Benutzeroberfläche erstellen müssen.


Das Layout ermöglichte es mir, unserem Designer bestimmte Aufgaben zu stellen und nicht die Funktionalität der Anwendung an meinen Fingern zu erklären, sondern einfach das Layout zu zeigen, aus dem all dies hervorgeht.
In der Zwischenzeit wurde in Visual Studio eine neue Lösung basierend auf Xamarin.Forms - QuestHelper geboren.


Warum Xamarin? Bei Interesse unter die Katze schauen

Ehrlich gesagt, für mich selbst habe ich damals und heute keine Alternativen gesehen. Ich habe wenig Erfahrung mit Javascript und ich habe keine Lust, so etwas wie React Native zu studieren. Bei der nativen Entwicklung ist es dasselbe - ich bin der einzige Entwickler im Projekt, der zuerst Java studiert und dann Objective-C oder Swift bedeutet, das Projekt zu begraben. Dafür habe ich einfach nicht genug.
Daher begann ich mich mit plattformübergreifenden Tools für die mobile Entwicklung zu befassen.


Ich hatte bereits ein wenig Erfahrung mit Xamarin.Android - Ich habe einen Übersetzer geschrieben, der als Chat fungierte. Es stellte sich als recht praktisch heraus, ich benutze es immer noch selbst:
Dies war im Jahr 2016, als Xamarin sogar bezahlt wurde und große Probleme verursachte, hauptsächlich weil das Projekt ursprünglich nur als Einführungsprojekt ohne Monetarisierung konzipiert wurde.


Etwa im gleichen Zeitraum kauft Microsoft Xamarin und macht es kostenlos, zumindest für mein Szenario, das mich von einem Kopfschmerz befreit.


Wie ich bereits sagte, hatte ich ursprünglich vor, ein neues Projekt auf Xamarin.Forms zu erstellen, um zumindest die Technologie kennenzulernen und die Perspektive zu verstehen. Trotzdem ist es verlockend, einen Code auf mehreren Plattformen auszuführen.


Wenn Sie wenig über Xamarin gehört haben, ist die Situation wie folgt:


  • Es gibt einen Xamarin.Classic-Ansatz (oder Xamarin.Native-Ansatz). Der Punkt ist, dass Sie bei diesem Ansatz eine gemeinsame Geschäftslogik in einem Projekt (Arbeiten mit Datenbanken, Diensten usw.) und in einzelnen Projekten eine native Benutzeroberfläche entwickeln, die ein Projekt mit dieser Logik verwendet. Grob gesagt haben Sie in VS Solution drei Projekte:
    • BL (Geschäftslogik allen Plattformen gemeinsam)
    • Native Android-Benutzeroberfläche
    • Native iOs-Benutzeroberfläche
  • Xamarin.Forms-Ansatz. Bei diesem Ansatz haben Sie ein gemeinsames Projekt nicht nur mit Geschäftslogik, sondern auch mit der Benutzeroberfläche. Dies schränkt die Benutzeroberfläche ein, wird für verschiedene Plattformen einheitlich, ermöglicht jedoch die Verwendung derselben in XAML beschriebenen Formulare.

Wort für Wort, Zeile für Zeile Fehler für Fehler .


So wurde auf Xamarin.Forms eine Art "Hallo Welt" -Anwendung geboren, die zu Beginn nur eine Karte mit Punkten aus einer lokalen Datenbank anzeigen konnte. Allmählich faszinierte mich das Projekt immer mehr - denn es war nicht nur die Gelegenheit, sich mit der technischen Plattform vertraut zu machen, sondern auch die Verwendung von Produktpraktiken, mit denen Sie versuchen können, als Eigentümer des Produkts zu denken. Insbesondere war es eine gute Erfahrung, als sich mein Team und meine Freunde zu einem kleinen Coworking-Meeting versammelten und versuchten, eine Customer Journey Map zu erstellen. Ich werde nicht sagen, dass alles so gelaufen ist, wie ich es wollte, aber ich habe viele neue Meinungen und Gedanken zum Thema Produktentwicklung bekommen. Wie sich herausstellte, sahen die Leute im Allgemeinen nicht wie Schmerzen aus :)


Vorsicht, ansteckend!


Allmählich begann sich meine Begeisterung auf das Team zu übertragen.


Es war großartig, wenn sich statt einer Serie die ganze Familie in der Küche versammelte und CJM zeichnete, Anwendungsbildschirme, Möglichkeiten der Monetarisierung in Betracht zog und einen Rückstand bildete. An einem dieser Abende erinnere ich mich nicht an wen, kam mir der Gedanke - der Name QuestHelper ist irgendwie langweilig und auch auf Quests ausgerichtet, über die wir am Anfang nachgedacht haben. Gib einen neuen Namen!


Die Praxis hat jedoch gezeigt, dass dies nicht so einfach ist. Aber was ist, wenn Sie sich einen Slogan einfallen lassen - vielleicht führt er uns auch zu einem Namen, der besser für ein neues Konzept geeignet ist?


Infolgedessen am Familie Der Kommandorat entschied fortan unseren Slogan:


  • Ich gehe
  • Ich teile.
  • Ich lebe

So wurde GoSh geboren ! (Wenn ich Mitarbeiter von Vermarktern und Markenmanagern habe, werde ich ihnen definitiv die Aufgabe geben, herauszufinden, wo in GoSh! Teil von "Ich lebe" :)


Dann erschien eine Version des Logos, basierend auf der Idee des Share-Symbols:




Erster praktischer Einsatz


Bis August 2018 bin ich fieberhaft Ich schreibe einen Govnokod Ich entwickle Funktionen, mit denen ich GoSh! unter realen Bedingungen auf einer Reise nach Kamtschatka. Das Wichtigste, was ich damals brauchte, war die Möglichkeit, eine Route ohne Netzwerk zu erstellen, interessante Orte zu markieren, Fotos und Textnotizen zu diesen Orten hinzuzufügen.


Das letzte Commit vor dem Abflug erfolgte einige Stunden vor dem Abflug zum Flughafen. Es war noch eine Fahrt! Was für eine Freude und Befriedigung war es, wenn ich in der Praxis das, was ich tat, mit meinen eigenen Händen benutzte! Alle zwei Wochen der Reise habe ich Notizen in GoSh gemacht! und vor allem schien es mir sehr bequem. Natürlich gab es einige Pfosten - es gab viele Fehler, und die erste praktische Erfahrung fügte dem Produkt-Backlog neue Funktionen und eine Reihe von Fehlern hinzu. Diese Route ist übrigens jetzt in GoSh verfügbar ! - Sie können selbst sehen.


Was ist GoSh? so und wie kann es für Sie nützlich sein?


Jetzt GoSh! ist eine mobile Anwendung für die Android-Plattform, die mit Cloud-Diensten für die Datensynchronisation arbeitet. Die Hauptfunktionen der Anwendung sind:


  • Routenerstellung
  • Routenpunktmarkierung
  • Hinzufügen von Foto-, Audio- und Textbeschreibungen am Routenpunkt
  • Erkennen von Text aus Ihrer Audioaufnahme mit Yandex SpeechKit
  • Importieren Sie Punkte aus Google Maps und Yandex-Karten in eine Route
  • Die Möglichkeit, die Route mit anderen GoSh- Benutzern zu teilen !
  • Autorisierung sowohl im Besitz als auch über Google
  • Vollständige Synchronisierung Ihrer Daten mit dem Cloud-Speicher

Dies allein ermöglicht es Ihnen, GoSh! zur Durchführung von Reisehinweisen.


Übrigens habe ich nach mir selbst bemerkt, dass ich praktisch aufgehört habe, nur Fotos auf einem Smartphone zu machen - ich mache jetzt nur noch Fotos über GoSh! Dies ist weniger Werbung als vielmehr eine Frage der Bequemlichkeit für mich selbst - ich habe das Auto irgendwo geparkt, einen Punkt in der persönlichen Route von "Parken" markiert, jetzt werde ich es nicht vergessen :) Oder zum Beispiel - wenn ich Meetings oder Konferenzen besuche, erstelle ich eine Route, zum Beispiel "Agile Tage" - in Ich werfe alles weg, was mich an der Konferenz interessiert, Text, Audio, Foto. Jetzt gehen sie nicht in einem Haufen anderer Materialien verloren, und wenn gewünscht, werde ich sie mit anderen Benutzern teilen.


Lieber einmal sehen als hundertmal hören

Anwendungs-Download-Bildschirm:
Bild


Der erste Bildschirm mit Gebrauchsanweisungen:
Bild


Beispiel Routenliste:
Bild


Ein Beispiel für eine Liste von Wegpunkten:
Bild


Routenvisualisierung:
Bild


Ein Beispiel für die Anzeige eines Wegpunkts:
Bild


Also, was kommt als nächstes?


Ich habe mein Problem teilweise gelöst, aber ich hatte die Idee, dass die Idee eines solchen Reisescheins vielleicht für andere interessant wäre, also wäre es schön, herauszufinden, was die Leute brauchen. Wie die Kommunikation gezeigt hat, sind nicht viele Menschen daran interessiert, Notizen zu machen oder Routen zu erstellen. Für Einheiten in meiner Umgebung war dies im Allgemeinen interessant. Und im Grunde sind die Leute daran interessiert, auf das Foto zu klicken und sie in ihr gemütliches Instagram zu setzen.


Daher basiert der Rückstand jetzt im Wesentlichen auf sozialen Dingen wie:


  • Fügen Sie natürlich den Routenexport zu Facebook / Instagram / VK usw. hinzu.
  • Fügen Sie die Möglichkeit hinzu, Routen nicht nur in GoSh! sondern auch durch die Galerie auf der Website
  • Funktion zu GoSh hinzufügen! Suchen und Anzeigen von Routen, die von anderen Benutzern veröffentlicht wurden
  • Kommentare und Likes hinzufügen
  • Lokalisierung - Hinzufügen einer Schnittstelle in Englisch
  • Möglicherweise bequemere Routenplanungsfunktionen

Was passiert gerade?


Zusätzlich zu der Tatsache, dass ich beschlossen habe, Ihnen ein wenig über das Projekt zu erzählen, entwickelt unser ständiger Designer (mein Sohn Klim) gerade eine Landung auf Tilda, damit die Leute etwas zeigen können, ohne die Anwendung zu installieren, und eine kleine Werbung wird sicherlich nicht schaden.


So sieht die Landung jetzt aus: Landing GoSh!
Nicht streng beurteilen, das ist unsere erste Erfahrung :)


Ich habe vor, dieselbe Zielseite zum Anzeigen von Routen zu verwenden, für diejenigen, die sie nicht erstellen, sondern nur ansehen möchten - es wird eine solche Gelegenheit geben. Auch jetzt im Prozess der Verarbeitung des Bildschirms des Punktes - nach mehreren Monaten des praktischen Gebrauchs wurde klar, dass es darin unpraktisch war.


Was haben wir im Laufe des Jahres gelernt?


Der erste.


Und vor allem muss es jemanden geben, der das Projekt „vorantreibt“.


In diesem Fall bin ich es. Wenn Energie aus mir herausströmt, kann niemand mehr zu Hause in der Ecke bleiben, jeder ist gezwungen, sich zu engagieren :) Wenn er mich ein wenig gehen lässt, lässt er alle raus. Und wir arbeiten mit solchen Auf- und Abstiegsperioden. Obwohl ich meiner Familie für ihre Hilfe dankbar bin - wirklich, es wäre wirklich schwer für einen. Ich leide auch regelmäßig unter der Tatsache, dass ich nicht mehr Zeit für das Projekt aufwenden kann, ich habe nicht genug Zeit, obwohl ich, wenn ich daran arbeite, einfach hoch hinaus komme und es genieße. Manchmal stehe ich um 5 Uhr morgens auf, damit ich vor 8 Uhr morgens (es ist Zeit für den Hauptjob) etwas Nützliches tun kann. Und ein zweiwöchiger Urlaub an einem Ort, an dem es Internet gibt - dies ist eine Gelegenheit, ein Dutzend Nachtveröffentlichungen zu veröffentlichen :) Wenn Sie das Ergebnis Ihrer Arbeit sehen und nicht verspätet, aber jetzt können Sie es nutzen - es wird aufgeladen.


Der zweite.


Das Verständnis dafür ist allmählich gekommen. Zuerst hatten wir Ideen wie "Raumschiffe pflügen die Weiten des Bolschoi-Theaters". Allmählich begannen sie zu landen, und als ein minimales Produkt auftauchte, das man „anfassen“ konnte, wurde klar, wie schwierig es war, das Produkt zu entwickeln. Das ist wirklich Arbeit - finden Sie die Bedürfnisse des Marktes heraus, den Schmerz der Menschen, finden Sie Konkurrenten, verstehen Sie, wie Sie sich von ihnen unterscheiden, und erklären Sie es dem Publikum ... Am Ende sollten Sie die Leute dazu bringen, zumindest eine Anwendung zu installieren, um sie anzusehen - und das ist sogar ein Problem im inneren Kreis der Menschen, ganz zu schweigen von der Tatsache, dass Fremde sich etwas setzen und sogar Feedback geben. Aber dank vieler Freunde und Verwandter, die dies ohne Sie getan haben, hätte ich wahrscheinlich schon vor langer Zeit alles verlassen.


Der dritte.


Ich höre oft - "na und, du musstest den MVP wirklich minimal machen und öffentlich einchecken." Ich bin einverstanden. Ein "Aber" - Sie müssen klar verstehen, aber warum, was ist Ihr Ziel? Möchten Sie wirklich ein beliebtes Produkt veröffentlichen oder möchten Sie etwas anderes? Und meine Erfahrung hat mir gezeigt, dass ich mindestens ein Jahr nicht damit verbracht habe, ein echtes Produkt herauszubringen, sondern die Technologieplattform kennenzulernen. Ich habe dieses Ziel erreicht, und jetzt besteht das Verständnis, dass es schön wäre, über die Entwicklung eines Produkts nachzudenken, das für Menschen nützlich ist, und nicht über ein weiteres Merkmal, das nur für mich interessant ist. Im Allgemeinen ist es Zeit, nicht nur an sich selbst zu denken, sondern auch an das, was Sie brauchen :)


Viertens.


Team Es werden Gleichgesinnte benötigt, von denen Sie lernen können, vielleicht können Sie selbst jemanden unterrichten. Am Ende, wenn ein gutes Team - Sie werden sich gegenseitig motivieren, etwas zu tun. Und aus praktischer Sicht - zum Beispiel schäme ich mich oft, meinen Code anzusehen :) Zuerst gab es Tests, und der Code versuchte mehr oder weniger genau zu schreiben, aber aufgrund der Tatsache, dass die Zeit sehr knapp war, flogen die Tests zuerst und auf die Qualität des Codes begann zu hämmern. Wenn mehr Entwickler im Team wären, hätten diese Otmazas nicht funktioniert :) Und natürlich - das Team, das sind neue Ideen, neue Ansichten zu Lösungen.


Technische Details


Keine Philosophie, alles über den Fall

Also, C #, Visual Studio 2017, Xamarin Forms.


Entwicklung auf PC (zu Hause) und Macbook (unterwegs) in einem Mohnstudio.
Derzeit ist nur die Assembly für Android in Google Play öffentlich verfügbar. Für das iPhone habe ich am Anfang Baugruppen erstellt, aber jetzt habe ich diese Idee verworfen - es ist keine Zeit, die Aufmerksamkeit zwischen den beiden Plattformen aufzuteilen, da Sie die Benutzeroberfläche ohnehin noch anpassen müssen und in einigen Fällen native Steuerelemente verwenden - zum Beispiel Arbeiten Sie mit der Karte, und tatsächlich muss das Gleiche für das iPhone getan werden.


Ich verwende das Realm-Projekt als lokalen Speicher (ich habe SqlLite in Translate Helper verwendet, ich kann nichts schlechtes sagen - Realm erschien eher aus Neugier als aus praktischen Gründen).


Wie für den Server. Der Server speichert alle Routen und Mediendateien, die der Benutzer bei der Arbeit in GoSh verwendet! Dies ist zumindest notwendig, um grundsätzlich Routen teilen zu können. Der Server ist in .Net Core geschrieben, das ursprünglich in Azure gehostet wurde, während ich ein BizSpark-Abonnement hatte. Vor einigen Monaten endete das Abonnement jedoch und ich wechselte zu Linux-Hosting in reg.ru, da praktisch nichts neu zu schreiben war. Von den Profis - die Geschwindigkeit des Zugriffs auf Daten erheblich erhöht und von den Minuspunkten - wurde die Fähigkeit zur Verwendung von Application Insigths verloren. Die Datenbank auf dem Server ist MySQL.


Und wie viele Routen hat die Synchronisation von Routen getrunken ... jetzt funktioniert die dritte Version bereits, und ich glaube, es wird eine vierte geben, es gibt bereits Gedanken über Optimierung und neue Funktionen.


Die Leistungsstatistiken der Anwendung fallen alle in appcenter.ms, da sie für mein Level kostenlos sind. Es ist sehr praktisch, Fehler und Statistiken zu Benutzeraktionen in nahezu Echtzeit anzuzeigen.


Vielleicht ist das alles in der Technologie, wenn etwas interessant ist - fragen Sie in den Kommentaren, ich werde sagen.


Was ich dir am Ende sagen möchte.


Ich bin sicher, dass diese Geschichte noch nicht fertig ist.


Ich mag was ich tue, ich hoffe es wird dir auch gefallen! Obwohl ich das sehr gut verstehe, werden viele von Ihnen, die die Anwendung installieren, auf Fehler, Inkonsistenzen und irgendwo auf die Unannehmlichkeiten der Benutzeroberfläche stoßen - ja, leider ist all dies vorhanden, tatsächlich ist das Projekt noch nicht aus MVP herausgekrochen.


Freunde, ich werde mich freuen, Ihre Meinung zu hören, vielleicht sogar Geschichten über Ihre Reiseprobleme, für die ich vielleicht früher oder später eine Lösung finden werde :)
Und wenn Sie auch Ihre Meinung zu Google Play hinzufügen - ja, ich werde Sie umarmen! :) :)


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


: Facebook


!?

Bild


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

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


All Articles