zakino123 / tennis_court_app2

MIT License
0 stars 0 forks source link

◯TENNIS COURT SEARCH

リンク:https://tennis-court-app.com/

tennnis_court_search

◯アプリ概要

より好条件なテニスコートの検索を便利にするアプリです。検索した住所から半径10km以内のテニスコートを検索できます。現在地からの住所の取得、現在地から近い順・価格が安い順・コート数多い順のテニスコート検索が可能です。

◯使用技術

・フロントエンド

HTML&CSS

Tailwindcss

bootstrap

Javascript

・バックエンド

Ruby 2.7.4

Ruby on Rails 6.1.4

・開発環境・本番環境インフラ

Docker/docker-compose(開発環境)

MySQL8.0.26

AWS (VPC / EC2 / Route53 / S3 / RDS / ACM / ALB / CloudFront / IAM)

Nginx

Puma

Circle CI

Capistrano

・テストコード解析・静的コード解析

Rspec

Rubocop

◯実装機能

ユーザーに関する機能

・新規登録 / 一覧・詳細表示 / 編集 / 退会

・ログイン / ゲストログイン / Cookieを利用した永続的セッション

・フォロー / フォロー解除

・お気に入りコート表示機能

・投稿したコート一覧

・プロフィール画像添付

テニスコート投稿に関する機能

・新規作成 / 一覧・詳細表示 / 編集 / 削除

・施設画像添付

・テニスコート検索機能[Geocoding API]

・タグ検索機能

・テニスコートお気に入り登録機能

・検索時のソート機能(コート数が多い順、1時間当たりの料金が安い順、近い順)

・お気に入りランキング表示

・最新投稿コート表示

・テニスコートコメント機能

その他

・レスポンシブデザイン

・常時SSL化

◯アプリ開発背景

私はテニスが好きで、よく休日に友人とテニスをしに行くのですが、テニスコートを予約する際に、不便と感じる箇所がありました。以下に不便な箇所を列挙致します。

・Googleマップ等でテニスコートを検索しても、値段が分かりにくく、一つ一つコートの値段を各ホームページに確認する必要があった。

・テニスベアなどのテニスコート予約アプリの検索機能が不十分で、現在地から近い順や空いているコート数順、料金安い順等のソート機能がない。

以上の問題点から、テニスコートの予約が不便に感じていました。よって、このアプリを開発して、より快適に好条件なテニスコートを見つけられると考えております。

◯工夫した点

(1)検索の利便性

検索機能にソート機能(現在地から近い順・コート数が多い順・料金が安い順)を追加したことによって、既存のアプリよりも直ぐに自分の目的に合致したテニスコートを探し出せるようになっており、利便性が向上している。

(2)開発環境でのコードの品質管理

・Rspec

Feature SpecやModel Spec、Request Specの3種類を使用し、統合テスト及び単体テストを実装しました。また、CircleCIを実装した事で、本番環境にデプロイする前に不具合を感知できるようにし、サービスに支障が生じないよう心がけました。

・Rubocop

チーム開発で課題となるコードの統一を心掛ける為に、フォーマットや規則を管理することで品質を保つようにしました。

(3)チーム開発を意識した開発・継続的なサービスの運用

・Docker

開発環境を構築し、チーム開発の課題であるチーム内の環境差異での不具合が起こらないよう想定して作成致しました。

・CI / CDにCircleCIを実装

ブランチのgit pushをする際にトラブルを放置しない為にCircleCIにて感知できるよう想定し構築しました。

・GitHub issueやプルリクエスト、ブランチの作成、masterへのマージなど、実際のチーム開発での工程を意識して開発をしました。

・本番環境

インフラにAWS、自動デプロイにCapistranoを実装し、継続的なサービスの提供を想定して作成致しました。

(4)レスポンシブデザイン

PCだけでなく、スマートフォンでも違和感無く利用できるようレスポンシブデザインを意識して、作成致しました。

(5)お問い合わせ機能実装

サービスを運営する際に、自分だけの判断で開発していくのではなく、ユーザーの客観的な意見を取り入れるためにもお問い合わせ機能を実装しました。この機能によって、より利用しやすいアプリの開発を行っていきます。

◯インフラ構成図

ER図

◯テーブル設計

table-design

◯今後の開発予定

・VueによるSPAの実装

・テニスコートのデータ数が少ない為、投稿者が投稿しやすい仕組み作り(投稿によるポイント付与等)

・テニスコートの予約空き具合がアプリから確認できる仕組み作り

・インフラ構築・設定のコード化ツールの導入(Terraformでの実装予定)

・メールアドレスでの認証機能(AWSのSES導入)