[PYTHON] UpNext2 Development Record # 0 Set V2 Development Goals

[Best award at the 3rd Tokyo Public Transportation Open Data Challenge] 1 UpNext, we are about to start a major version upgrade. Since it is a great deal, I will challenge not only to publish the source but also to record and publish the development process including trial and error. This time is the zeroth.

1. What is UpNext?

UpNext is a smartphone app that automatically displays the timetable of the nearest station or the train you are currently on by collating it with traffic open data based on your current location information. Made with Flutter. The unique part is that the optimum navigation information can be displayed without any operation. This is achieved by automatically determining whether you are walking, on a train, or which train you are on, based on your position, speed, and time.

upnext_feature.png

The source is available on [Github] 2.

2. V2 development goals

In creating V2, I set the following development goals.

A. Improvement of performance and accuracy that was the limit in the old version of Archi

I was dissatisfied with the old version in two main points. The first is that when there are many stations in the vicinity, such as in the city center, API access for traffic open data increases, resulting in a state close to freeze. The second is that the location information of the station and the actual station platform are often quite far apart (especially the Keiyo Line of Tokyo Station is about 500m away), and the accuracy of station determination cannot be improved.

API access can be mitigated by API access cache and look-ahead, but I felt the limit. Also, assuming API access, we are happy to say that when the number of app users increases, the impact on the center side of the open data API will be greater. Therefore, in V2, static data is acquired in advance using the data dump API, and only real-time information such as current operation information is dynamically acquired. In addition, this makes it possible to pre-generate information that was not provided, such as train timetable information for some railways, which was dynamically calculated and generated in the old version, and is expected to improve performance. I will.

There is a limit to the location information of stations using only traffic open data. Therefore, I searched for the open data of other institutions introduced on the traffic open data site, and decided that I could use the data of the Ministry of Land, Infrastructure, Transport and Tourism.

We will write these pre-data collection and pre-processing in Python, and write a V2 application based on the obtained data in Flutter.

Item item Remarks
A1 Pre-acquisition of static data For static data that is valid for several months, such as routes and timetables, the necessary amount was acquired each time, but it is acquired in advance and stored in the application from the beginning.
A2 Utilization of railway position data of Ministry of Land, Infrastructure, Transport and Tourism Utilize the station position and route position data provided by the Ministry of Land, Infrastructure, Transport and Tourism, and multiply it with the traffic open data.

B. Support for leftovers that the old version could not handle

The goal is to deal with the points that could not be dealt with due to the time and effort required to improve performance and accuracy.

Item item Remarks
B1 UI improvements I used only Flutter's basic list display, but it makes it more colorful and looks like a railroad route map. If possible, display a map.
B2 Multilingual Support other than Japanese.
B3 Compatible with iOS It was only compatible with Android, but it will also be compatible with iOS. There are few technical issues due to the use of Flutter. It's just a matter of the hassle of going through Apple's review and the annual tribute payment.

C. Renewal of internal development style

In addition, we will internally renew the development style as follows. By the way, C1 / C2 is already ready, and it is ready to commit ~ PUSH with VS Code in cooperation with GitHub.

Item item Remarks
C1 Version management with GitHub Previously, version management was not performed. This time, we will use GitHub to record and publish the development process. The GitHub release of V1 was just a file copy after the development was completed.
C2 Using VS Code Conventionally Flutter/Made only with Dart and uses Android Studio. This time I plan to use Python for preprocessing, so it's a good opportunity to develop with VS Code.
C3 Test description Since it is a personal development, I have not written a test. However, in UpNext, when I stepped on a complicated bug in the development of a certain scale, I was keenly aware of the need for testing. I decided to write a test properly for studying.

3. Future development

In the future, we will post development records as development progresses. Please look forward to it.

Recommended Posts

UpNext2 Development Record # 0 Set V2 Development Goals
UpNext2 Development Record # 1 Build Python CI environment in VS Code
UpNext2 Development record # 2 Traffic information API-GET-Implementation of file saving and pytest-mock