[RUBY] I made an app to solve "Eh !? When did the new issue come out !?" [Portfolio commentary]

Introduction

How and what kind of portfolio was created by inexperienced people Portfolio explanation → I will explain in the order of consciousness and hardships.

Please read if you like

concept

Eliminate "Eh !? When did the new issue come out !?"

** If you register your favorite manga, novels, etc. and your favorite author, you will be notified by e-mail 3 days before the release of the new issue ** By the way, the app name is Buksil. "Book" + "Know (new release)" isn't it? I like it. It's not cold. Someone said it was cold.

Image of use

You can search for books (using Rakuten API)

search

You can register as a favorite (series of works and author name)

favorite

We will notify you by email 3 days before the release

output_0000.png

Development background

** If I wanted to create a portfolio, I wanted to create something useful for someone **, so I started creating it according to the following flow.

  1. Hearing with friends and acquaintances around you, "What kind of service would be convenient?" "Do you feel inconvenient in your daily life?"
  2. Listen to the opinion that "If you notice, a new issue may be released, so I want to know in advance"
  3. I myself had the same problem with reading as a hobby, so I started making it with the desire to create an app that can solve it.

Technology used

front end HTML/CSS(Sass) Bootstrap 4.5.2 jQuery 3.5.1

** Backend ** Ruby 2.6.6 Ruby on Rails 6.0.3.3

API Rakuten Books API, Rakuten Genre Search API

RDBMS PostgreSQL 13.1

infrastructure AWS (VPC / EC2 / RDS / IAM / Route53 / ACM) Own domain HTTPS conversion

DB design

The hardest part was DB design. I started by making a light ER diagram before development, but I could not relate well with the original concept, so I had to recreate it many times. Finally, it is as shown in the figure below. booksiru_ER_diagram

What I was aware of in development

1. Error resolution

Don't waste your time on senior employees and bosses when you get into business ** First of all, I was strongly conscious of solving it by myself **. Specifically, it may be mixed up, but the order is roughly as follows.

  1. Read error messages and logs carefully
  2. Guess at what stage of the process the error occurred
  3. Debug with bindnig.pry
  4. Search for the error content. (Aware of reading from the primary information as much as possible.)
  5. If you can't solve it, ask the mentor.

2. How to ask a question

I used Slack to ask questions with the following configuration. ** I was conscious of making the content as small as possible and not wasting the other person's time. ** **

  1. Simply express what you want to do or what you are having trouble with
  2. What I tried (the code command I wrote)
  3. Result of trial (error message)
  4. Describe the part that you think is suspicious without knowing it. ・ ・ ・ If it is different, you can get an opinion from the mentor. → Deepen your understanding and reduce the number of subsequent questions
  5. Describe the source code of GitHub ... Because there are many causes of errors in unexpected places

** I think it would be a loss to keep worrying alone in practice. If you cannot solve the problem by yourself to some extent (15 to 30 minutes?) By the above method, I would like to try to minimize the time loss by asking simple and just enough questions. think. ** **

3. Simulated team development

I was conscious of developing a mock team assuming practical work. ・ Source control using Git and GitHub ・ List the necessary requirements in Issues and complete the task -Develop on a pull request basis by cutting the feature and fix branches

However, I later learned that Issues could be associated with Pururiku, so I regret that it wasn't easy to use.

Where I had a particular difficulty in development

** DB design ** As I mentioned above, I had the hardest time. Even if I thought I knew about the relation, it didn't work when I put it in my app, so I wrote it on paper many times to sort out the relationships.

** Applying Rakuten Books API ** I couldn't get an image of how to handle it only from the official document, and as far as I investigated, there were few usage examples. I repeated trial and error while actually writing the code, how to put it into my application from a small amount of information, what can be generalized from the usage example.

Impressions

** Error resolution is insanely fun. ** ** ** I've been so excited that I pushed my hands up when I got over the error ** several times. It's like when you defeat a strong boss in a game. If you lose, you think about your next move and execute it, and it seems that you will win in the end.

I think I was afraid of errors when I started learning programming, but I wonder if I have grown up. After that, I thought that the work of repeating temporary construction and verification was similar to the current research work.

Challenge/What you want to implement in the future

I still have something I want to do, so I would like to improve it one by one.

・ Responsive web design (smartphone compatible) ・ Flash display when registering/canceling favorites ➡ Implemented -Asynchronous processing when registering/canceling favorites ・ LINE login ・ Notify by LINE using LINE's Messaging API

at the end

Thank you for reading this long sentence If you like it, please ** LGTM **! I hope it will be helpful to anyone!

Recommended Posts

I made an app to solve "Eh !? When did the new issue come out !?" [Portfolio commentary]
I tried to summarize the stumbling points when developing an Android application
I made an app to scribble with PencilKit on a PDF file
I want to display an error message when registering in the database
I will expose the fucking app that I made hard to get a job as an engineer from inexperienced.
I want to make an ios.android app
The training for newcomers was "Make an app!", So I made an app for the time being.