はじめに
こんにちは、りょうと申します!
私は現在、プログラミングスクールに通い、完全未経験からWebエンジニアへの転職を目指しています!
Webアプリを制作する機会がありましたので、その成果をご紹介させていただきます!
まだまだ学習中のため、内容に誤りがある場合がございます!
その際は、コメント等で教えていただけると幸いです!
作成したサービス
- サービス名:空耳English
- サービスURL:https://www.soramix2english.com
- Github:https://github.com/ryotaroinagaki/Soramix2English
開発の背景
私は昔から英語が好きで、勉強に励んでおりましたが、英語学習が継続的にできず思うように勉強したことが身につかないと感じることが何度もありました。
そのような課題を感じながら学習を進めている中で、“英語耳”という本に出会いました。その本では「リスニングができない人は英語の音を知らない。知らないから知っている音(日本語)に変換してしまう」という文章が書かれておりました。
この文章から、英語スキルを取得する上では知っている音を増やすことが大切だと深く実感し、英語の音を学べるサービスが作りたいと考えました!
また、学習を継続させるためには楽しさや面白さのある内容の方が良いと考えたため、空耳で日本語に聞こえる英語の洋楽を問題にして、英語の音について学べるアプリとして「空耳English」を開発いたしました!
実装機能
- ユーザー登録・退会機能
- ログイン・ログアウト機能
- Googleアカウントログイン・ログアウト機能
- パスワード再設定機能
- プロフィール表示・編集機能
- レベルアップ機能
- X(旧Twitter)共有機能
- クイズ一覧表示機能
- クイズ機能
- ランキング機能
- クイズいいね機能
- クイズブックマーク機能
- レコメンド機能
- 検索機能・オートコンプリート機能
- 音声認識機能
- 音声合成機能
- お試し体験(ゲストログイン)
- 管理ユーザー機能
- テスト機能(RSpec)
技術選定
- Ruby 3.2.2
- Rails 7.0.6
- Node.js 20.5.0
- CSS tailwind, daisyUI
- Webアプリケーションサーバ heroku
- データベース PostgreSQL
- ファイルサーバ AWS S3
主に使用したgem
- sorcery
- rails-i18n
- config
- googleauth
- meta-tags
- aws-sdk-s3
- kaminari
- ransack
こだわりの機能
実装した機能の中で、特に拘った機能は以下の2つです!
- レコメンド機能
協調フィルタリングをベースにしており、ユーザーの嗜好に合わせたクイズを提供します。
具体的には、似た傾向のユーザーを特定し、それに基づいておすすめのクイズを提示します!
通常、クイズは難易度ごとに3問ずつ出題されますが、レコメンド機能を実装するために、クイズの難易度をランダムに選びたいと考えました。
そのため、セッションを使用してユーザーの回答数をトラッキングしています。
これより、もしもレコメンドできるクイズが2問しかない場合、3問目が存在しないことから生じるエラーや、過去に解答したことのあるクイズが出題されないようにしています。
その結果、2問しかない場合には2問しか出題しないようになります。セッションを使用して回答数を管理することで、システムを柔軟に調整できるようにしました!
- 音声認識・音声合成機能
ユーザーは音声を聞いた後、すぐに音声認識機能を使用して自分の発音を確認できるようにしました!
ユーザーが聞いた内容をすぐに実践し、アウトプットできるように設計しています。そのため、英語の音に関する課題を一貫して解決することに役立てるようにしました!
最後に
今回初めて、0からWebアプリを作成してみました!
クイズアプリを作成するに当たって、どのような流れで処理を行えばいいのかなどを考えなければいけない点が大変でしたが、自分で考えることによって非常に学びにつながりました!!
また、多くのユーザーさまに使っていただきたくお試しを押すだけで登録なしで本アプリをお楽しみいただけます!
ぜひ、遊んでいただけたら嬉しいです!
今後はさらに多くの技術を習得し、ユーザーに満足してしていただけるアプリを開発できるように頑張っていきたいと思います!
初めての記事で、読みにくい箇所が多々あったと思いますが、最後まで読んでいただきありがとうございました!