[PYTHON] UpNext2 Development Record # 0 Essayez de définir des objectifs de développement V2

[La plus haute récompense au 3e défi des données ouvertes des transports publics de Tokyo] 1, UpNext, est sur le point de démarrer une mise à niveau majeure de sa version. Comme c'est beaucoup, je mettrai au défi non seulement de publier la source, mais aussi d'enregistrer et de publier le processus de développement, y compris les essais et erreurs. Cette fois, c'est le zéro.

1. Qu'est-ce que UpNext?

UpNext est une application pour smartphone qui affiche automatiquement les horaires de la gare la plus proche et du train sur lequel vous vous trouvez actuellement en les rassemblant avec des données de trafic ouvertes basées sur vos informations de localisation actuelles. Fabriqué avec Flutter. La particularité est que les informations de navigation optimales peuvent être affichées sans aucune opération. Ceci est réalisé en déterminant automatiquement si vous marchez, dans un train ou dans quel train vous êtes, en fonction de votre position, de votre vitesse et de votre temps.

upnext_feature.png

La source est disponible sur [Github] 2.

2. Objectifs de développement V2

En créant V2, j'ai défini les objectifs de développement suivants.

A. Amélioration des performances et de la précision qui étaient la limite de l'ancienne version d'Archi

J'étais insatisfait de l'ancienne version sur deux points principaux. La première est que lorsqu'il y a de nombreuses stations à proximité, comme dans le centre-ville, l'accès API pour les données ouvertes du trafic augmente et la situation est proche du gel. Deuxièmement, les informations de localisation de la gare et le quai réel de la gare sont souvent assez éloignés (en particulier la ligne Keiyo de la gare de Tokyo est à environ 500 mètres), et la précision de la détermination de la station ne peut pas être améliorée.

L'accès à l'API peut être atténué par la mise en cache de l'accès aux API et par l'anticipation, mais j'ai senti la limite. De plus, en supposant l'accès à l'API, nous sommes heureux de dire que lorsque le nombre d'utilisateurs de l'application augmente, l'impact sur le côté central de l'API de données ouvertes sera plus grand. Par conséquent, dans V2, les données statiques seront acquises à l'avance à l'aide de l'API de vidage de données, et seules les informations en temps réel telles que les informations d'opération en cours seront acquises de manière dynamique. En outre, cela permet de pré-générer des informations qui n'ont pas été fournies, telles que les informations sur les horaires des trains pour certains chemins de fer, qui ont été calculées et générées de manière dynamique dans l'ancienne version, et devraient améliorer les performances. Je vais.

Il y a une limite aux informations de localisation des stations utilisant uniquement des données de trafic ouvertes. Par conséquent, j'ai recherché les données ouvertes d'autres institutions introduites sur le site de données ouvertes sur le trafic, et j'ai décidé que je pourrais utiliser les données du ministère des Affaires étrangères.

Nous écrirons ces pré-collecte et pré-traitement de données en Python, et écrirons une application V2 basée sur les données obtenues dans Flutter.

Article article Remarques
A1 Pré-acquisition de données statiques Pour les données statiques valables plusieurs mois, telles que les itinéraires et les horaires, le montant nécessaire a été acquis à chaque fois, mais il est acquis à l'avance et stocké dans l'application depuis le début.
A2 Utilisation des données sur la position des chemins de fer du ministère des Affaires étrangères Utilisez les données de position de station et de position d'itinéraire fournies par le ministère des Affaires étrangères et multipliez-les par les données de trafic ouvertes.

B. Prise en charge des restes que l'ancienne version ne pouvait pas gérer

L'objectif est de traiter les points qui n'ont pas pu être traités en raison du temps et des efforts nécessaires pour améliorer les performances et la précision.

Article article Remarques
B1 Améliorations de l'interface utilisateur J'ai utilisé uniquement l'affichage de la liste de base de Flutter, mais cela le rend plus coloré et ressemble à une carte de chemin de fer. Si possible, affichez une carte.
B2 Multilingue Support autre que japonais.
B3 compatible iOS Il n'était compatible qu'avec Android, mais il sera également compatible avec iOS. Il y a peu de problèmes techniques dus à l'utilisation de Flutter. C'est juste une question de tracas lié à l'examen d'Apple et au paiement annuel de l'hommage.

C. Renouvellement du style de développement interne

De plus, nous renouvellerons en interne le style de développement comme suit. À propos, C1 / C2 est déjà prêt, et il est prêt à valider ~ PUSH avec VS Code en coopération avec GitHub.

Article article Remarques
C1 Gestion des versions avec GitHub Auparavant, la gestion des versions n'était pas effectuée. Cette fois, nous utiliserons GitHub pour enregistrer et publier le processus de développement. La version GitHub de V1 n'était qu'une copie de fichier une fois le développement terminé.
C2 Utilisation du code VS Flutter conventionnellement/Fabriqué uniquement avec Dart et utilise Android Studio. Cette fois, je prévois d'utiliser Python pour le prétraitement, c'est donc une bonne opportunité de développer avec VS Code.
C3 Description du test Puisqu'il s'agit d'un développement personnel, je n'ai pas passé de test. Cependant, dans UpNext, lorsque je suis tombé sur un bogue compliqué dans le développement d'une certaine échelle, j'étais parfaitement conscient de la nécessité de tester. J'ai décidé d'écrire correctement un test pour étudier.

3. Développement futur

À l'avenir, nous publierons des enregistrements de développement au fur et à mesure que le développement progresse. Veuillez attendre avec impatience.

Recommended Posts

UpNext2 Development Record # 0 Essayez de définir des objectifs de développement V2
UpNext2 Development Record # 1 Construire un environnement Python CI dans VS Code
UpNext2 Development record # 2 Traffic information API-GET ~ Implémentation de la sauvegarde de fichiers et de pytest-mock