[PYTHON] UpNext2 Development Record # 0 Versuchen Sie, V2-Entwicklungsziele festzulegen

[Die höchste Auszeichnung bei der 3. Open Data Challenge für öffentliche Verkehrsmittel in Tokio] 1, UpNext, steht kurz vor dem Start eines größeren Versions-Upgrades. Da es sehr viel ist, werde ich nicht nur herausfordern, die Quelle zu veröffentlichen, sondern auch den Entwicklungsprozess einschließlich Versuch und Irrtum aufzuzeichnen und zu veröffentlichen. Diesmal ist die Null.

1. Was ist UpNext?

UpNext ist eine Smartphone-App, die automatisch den Fahrplan des nächstgelegenen Bahnhofs und des Zuges anzeigt, in dem Sie sich gerade befinden, indem sie anhand Ihrer aktuellen Standortinformationen mit Daten zur Verkehrsfreigabe zusammengestellt wird. Gemacht mit Flattern. Das Besondere daran ist, dass die optimalen Navigationsinformationen ohne Bedienung angezeigt werden können. Dies wird erreicht, indem anhand Ihrer Position, Geschwindigkeit und Zeit automatisch ermittelt wird, ob Sie zu Fuß, in einem Zug oder in welchem Zug Sie sich befinden.

upnext_feature.png

Die Quelle ist auf [Github] 2 verfügbar.

2. V2-Entwicklungsziele

Bei der Erstellung von V2 habe ich die folgenden Entwicklungsziele festgelegt.

A. Verbesserung der Leistung und Genauigkeit, die in der alten Version von Archi die Grenze war

Ich war mit der alten Version in zwei Hauptpunkten unzufrieden. Das erste ist, dass, wenn sich viele Stationen in der Nähe befinden, z. B. im Stadtzentrum, der API-Zugriff für Daten mit offenem Datenverkehr zunimmt, was zu einem Zustand führt, der kurz vor dem Einfrieren steht. Das zweite ist, dass die Standortinformationen der Station und des tatsächlichen Bahnsteigs oft ziemlich weit voneinander entfernt sind (insbesondere die Tokyo Station Keiyo Line ist etwa 500 m entfernt) und die Genauigkeit der Stationsbestimmung nicht verbessert werden kann.

Der API-Zugriff kann durch Caching und Vorausschau des API-Zugriffs verringert werden, aber ich habe die Grenze gespürt. Unter der Annahme eines API-Zugriffs sind wir erfreut zu sagen, dass die Auswirkungen auf die mittlere Seite der Open-Data-API größer werden, wenn die Anzahl der App-Benutzer zunimmt. Daher werden in V2 statische Daten im Voraus mithilfe der Datendump-API erfasst, und nur Echtzeitinformationen wie aktuelle Betriebsinformationen werden dynamisch erfasst. Darüber hinaus ist es möglich, nicht bereitgestellte Informationen vorab zu generieren, z. B. Zugfahrplaninformationen für einige Eisenbahnen, die in der alten Version dynamisch berechnet und generiert wurden und die Leistung voraussichtlich verbessern werden. Ich werde.

Die Standortinformationen von Stationen, die nur Daten mit offenem Verkehr verwenden, sind begrenzt. Daher suchte ich nach den offenen Daten anderer Institutionen, die auf der Website für offene Verkehrsdaten eingeführt wurden, und entschied, dass ich die Daten des Außenministeriums verwenden könnte.

Wir werden diese Vordatenerfassung und -vorverarbeitung in Python schreiben und eine V2-Anwendung schreiben, die auf den erhaltenen Daten in Flutter basiert.

Artikel Artikel Bemerkungen
A1 Vorerfassung statischer Daten Für statische Daten, die mehrere Monate gültig sind, wie Routen und Fahrpläne, wurde jedes Mal der erforderliche Betrag erfasst, der jedoch im Voraus erfasst und von Anfang an in der Anwendung gespeichert wurde.
A2 Nutzung der Eisenbahnpositionsdaten des Außenministeriums Verwenden Sie die vom Außenministerium bereitgestellten Stationspositions- und Routenpositionsdaten und multiplizieren Sie sie mit den Verkehrsdaten.

B. Unterstützung für Reste, die in der alten Version nicht verarbeitet werden konnten

Ziel ist es, die Punkte zu behandeln, die aufgrund des Zeit- und Arbeitsaufwands zur Verbesserung der Leistung und Genauigkeit nicht behandelt werden konnten.

Artikel Artikel Bemerkungen
B1 Verbesserungen der Benutzeroberfläche Ich habe nur Flatters grundlegende Listenanzeige verwendet, aber sie macht sie bunter und sieht aus wie eine Eisenbahnkarte. Wenn möglich, zeigen Sie eine Karte an.
B2 Mehrsprachig Unterstützung außer Japanisch.
B3 iOS-kompatibel Es war nur mit Android kompatibel, wird aber auch mit iOS kompatibel sein. Aufgrund der Verwendung von Flutter gibt es nur wenige technische Probleme. Es ist nur eine Frage des Aufwandes, die Überprüfung durch Apple und die jährliche Tributzahlung durchzugehen.

C. Erneuerung des internen Entwicklungsstils

Darüber hinaus werden wir den Entwicklungsstil wie folgt intern erneuern. Übrigens ist C1 / C2 bereits bereit und es ist bereit, ~ PUSH mit VS Code in Zusammenarbeit mit GitHub festzuschreiben.

Artikel Artikel Bemerkungen
C1 Versionsverwaltung mit GitHub Bisher wurde keine Versionsverwaltung durchgeführt. Dieses Mal werden wir GitHub verwenden, um den Entwicklungsprozess aufzuzeichnen und zu veröffentlichen. Die GitHub-Version von V1 war nur eine Dateikopie, nachdem die Entwicklung abgeschlossen war.
C2 Verwendung von VS-Code Herkömmlich flattern/Nur mit Dart gemacht und verwendet Android Studio. Dieses Mal habe ich vor, Python für die Vorverarbeitung zu verwenden, daher ist dies eine gute Gelegenheit, um mit VS Code zu entwickeln.
C3 Testbeschreibung Da es sich um eine persönliche Entwicklung handelt, habe ich keinen Test geschrieben. Als ich jedoch in UpNext auf einen komplizierten Fehler bei der Entwicklung eines bestimmten Maßstabs stieß, erkannte ich die Notwendigkeit von Tests. Ich beschloss, einen Test für das Studium richtig zu schreiben.

3. Zukünftige Entwicklung

In Zukunft werden wir im Verlauf der Entwicklung Entwicklungsaufzeichnungen veröffentlichen. Bitte freuen Sie sich darauf.

Recommended Posts

UpNext2 Development Record # 0 Versuchen Sie, V2-Entwicklungsziele festzulegen
UpNext2 Development Record # 1 Erstellen Sie eine Python CI-Umgebung in VS Code
UpNext2 Entwicklungsdatensatz Nr. 2 Verkehrsinformationen API-GET ~ Implementierung von Dateispeicherung und Pytest-Mock