[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.
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.
Die Quelle ist auf [Github] 2 verfügbar.
Bei der Erstellung von V2 habe ich die folgenden Entwicklungsziele festgelegt.
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. |
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. |
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. |
In Zukunft werden wir im Verlauf der Entwicklung Entwicklungsaufzeichnungen veröffentlichen. Bitte freuen Sie sich darauf.