🎉

Rails API + Vue.jsで、SPAのクイズアプリを作った

2023/06/28に公開

アプリの概要

登山を楽しみたいハイカーに対して、 クイズを解きながら楽しく登山に関する知識をつけられるクイズアプリです。制作期間は、アプリ以外での学習時間も含めて約2~3ヶ月です。

スマホに合わせたデザインです

サイトURL: https://yama-quiz.herokuapp.com/
Github: https://github.com/atsushi101011/yama_quiz

作成したきっかけ

登山を楽しむには専門知識が不可欠です。クイズを通して知識をつけてもらい、登山ライフに活かしてもらうために作りました。対象ユーザーは、登山の知識をつけるのが好きな人、登山に関心を持ったが何から勉強すればいいかわからない人などを想定しています。
 また技術的な背景としては、Railsでの個人開発経験はあったので、新たにVue.jsを使ってSPA(シングルページアプリケーション)を作ってみたいと思ったからです。

使用した技術

フロントエンド

  • Vue.js 2.6.11
  • vue-router 3.2.0
  • vuex 3.4.0
  • vuetify 2.6.0
  • axios

サーバーサイド

  • Ruby 2.7.5
  • Ruby on Rails 6.0.4.6 (APIモード)
  • Rspec

インフラ

  • heroku

ER図

苦労したこと

Vue.jsとRailsのデータのやり取りの理解

Vue.jsを扱うのは初めてだったため、データの受け渡しを理解するのに苦労しました。今回のアプリにはデータ管理としてVuexを採用しました。そこまで複雑な管理ではないので必須ではなかったですが、学習のために使用してみました。

たとえば、クイズの問題を描画するまでの一連の流れは次の通りです。コンポーネントからVuexで定義したアクションを呼び出します。そのアクションでRailsにあるクイズデータを取得しJsonデータを返します。MutateされたStateをコンポーネントで描画します。


https://vuex.vuejs.org/ja/

クイズのプログラム

クイズの正誤判定や回答クリック時の状態変更などのロジックを作るのに、時間がかかりました。
回答クリック時に、色の変更や、正解数を+1したりするメソッドを定義しています。次の問題へ行く際はこれらを初期値に戻すことや、問題数をカウントしておく必要があります。

今後アップデートしたい機能

ログイン機能を追加して、クイズの履歴、ランキングなどをみれるようにする

今回はクイズの基本的機能をSPAアプリとして実現することを目標にしていました。今後は、ログイン機能を追加したうえで、問題の作成やクイズの解答履歴などがわかる機能を追加したいです。

生成系AIを活用してクイズ作成する

今回は自分で問題内容を考えて管理画面で作成していました。生成系AIがトレンドであることもあり、クイズ作成を自動で行えるシステムを作ってみたいです。

その他、工夫したこと

個人開発で進めていると、どうしても詰まってしまう箇所は出てきてしまいます。また適切なコードの書き方がわからず進めることになるので、MENTAを使って経験豊富なエンジニアの方に、コードレビューと質問を定期的に行っていました。それ以外は、書籍やWebでの有益なサイトを活用して学習を進めていました。

目を通した技術書

https://www.amazon.co.jp/パーフェクト-Ruby-Rails-【増補改訂版】-Perfect/dp/4297114623/ref=sr_1_1?crid=I9JL16ISPXI2&keywords=パーフェクトruby+on+rails&qid=1687918668&s=books&sprefix=パーフェクトRuby%2Cstripbooks%2C279&sr=1-1

https://www.amazon.co.jp/プロを目指す人のためのRuby入門-改訂2版-言語仕様からテスト駆動開発・デバッグ技法まで-Software-Design/dp/4297124378/ref=sr_1_1_sspa?crid=3OQJYL12SCGC3&keywords=プロを目指す人のためのruby入門+言語仕様からテスト駆動開発+デバッグ技法まで&qid=1687918691&s=books&sprefix=ぷろをめざす%2Cstripbooks%2C245&sr=1-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1

https://www.amazon.co.jp/Vue-js入門-基礎から実践アプリケーション開発まで-川口-和也/dp/4297100916

https://www.amazon.co.jp/たった1日で基本が身に付く-Vue-js-超入門-石亀-広大/dp/4297113775

https://www.amazon.co.jp/これからはじめるVue-js実践入門-山田-祥寛/dp/4815601828

https://www.amazon.co.jp/リーダブルコード-―より良いコードを書くためのシンプルで実践的なテクニック-Theory-practice-Boswell/dp/4873115655/ref=sr_1_1?__mk_ja_JP=カタカナ&crid=JX51G9W5OIHW&keywords=リーダブルコード&qid=1687918741&s=books&sprefix=リーダブルコード%2Cstripbooks%2C243&sr=1-1

Discussion