How to quickly conduct a PoC – Introduction of method

Hi, this is Tetsu.

If you are engaged in application development, you may be asked by your boss or business manager to develop applications quickly in order to respond to user needs and stay ahead of competing businesses.

Especially nowadays with the spread of the novel coronavirus, the social environment and values surrounding us are drastically changing, and the need to rapidly respond to these changes is becoming even stronger.

Realistically speaking, however, application development which starts with deciding on requirements and includes design, development, testing and such is not something that can be done overnight (especially as the number of functions increases). There is also no guarantee that the application developed over that time will be accepted by users.

Then, how can you implement a function which you don’t know if users will actually accept and verify its effectiveness (perform POC (Proof of Concept)) quickly?

Here, I will introduce the way based on the case with the function development of Rakuten Realtime Takeout which I was involved in.

f:id:R-Hack:20200923182913p:plain

Rakuten Realtime Takeout is a service that allows users to easily order takeout from nearby restaurants via the internet and pick it up without waiting at the restaurant.

By choosing items available for takeout at nearby restaurants from the smartphone or PC website, and then ordering in advance and completing the payment using their Rakuten IDs, users can pick up the items in real-time without waiting at the actual restaurant. Users can also save “Rakuten points” based on the amount of their purchase and use the points saved when paying.

Restaurants can easily introduce takeout service using this service. With the spread of the novel coronavirus, restaurants face a growing need to introduce takeout service, and in response to this social need, Rakuten provided this service free of charge (excluding credit card transaction fees, etc.) until October 31, 2020.

 

f:id:R-Hack:20200923182830p:plain

Rakuten Realtime Takeout is a Japanese localized version of the Rakuten Ready (formerly Curbside) service which Rakuten acquired in 2018. In the beginning, the user interface was a simple one in which users searched for restaurants on the map.

So, based on the hypothesis that it would be better to have search methods such as “search by cuisine” and “search by area” which Japanese users are familiar with, as well as contents that introduce recommended restaurants, we decided to implement these functions (and in a short period of time).

However, we lacked the data necessary to implement these search refinements and recommendation content, so we had to start from creating master data.

So, first of all, we had the business side input the necessary data in excel format, and then we made it possible for it to be converted into JSON data format so that the web application side can easily process it.

Then, on the web application side, the JSON data file is loaded on a static page, and the content is dynamically changed (narrow down restaurants, etc.) according to the user’s action.

In other words, we did not need to build a backend database to store necessary data nor develop APIs to access it, but instead, we were able to complete the process on the frontend side, which drastically shortened the development time and made it possible to start development and make the initial release in three days! (*Number of days needs to be confirmed.)

To sum it up,

  • Master data in excel format 
  • Script which generates JSON data from excel data
  • Web application which loads JSON data

f:id:R-Hack:20200923172942p:plain

By simply preparing just these three, we were able to achieve the functions we wanted to verify with no database nor API.

 

Of course, as operation continues, it will be difficult to continue maintaining excel data manually, and as the amount of input data increases, it will take time to load JSON data. As this will affect the performance of the application, it will eventually become necessary to construct a database and prepare APIs.

However, I think this is a useful way to achieve what I wrote above, “implement a function which you don’t know if users will actually accept and quickly verify its effectiveness”.

 

 

I hope this information is useful to you!