【個人開発】Ruby on Railiで1人お出かけが楽しめるアプリを制作しました
こちらの記事に訪れていただきありがとうございます。
タイトルにもある通り、ポートフォリオとして1人お出かけが楽しめるアプリを作成しました。
この記事ではポートフォリオについての機能や作成するにあたって苦労した点、工夫した点などを解説していきます。
Oneday
- アプリ :
https://oneday-app.com/→ https://oneday-app-web.onrender.com/- AWSからRenderへ移行しました
- GitHub : https://github.com/kb5691/oneday_app
アプリ概要
- 1人で楽しめるスポットを登録して、評価やおすすめポイントなどを共有することができます。
- 他の人の投稿にコメントやいいねができ、おすすめスポットを通して交流することができます。
開発背景
私自身が地元を離れて暮らしており、休日に1人で過ごすという経験が多くありました。
休日に観光スポットに行ってみたり、ふらっと目的を決めず外出をしてみたりという経験から1人でも楽しめるスポットがあることに気づきました。
そのような経験から1人でも楽しめるスポットを共有できたり、他の人のおすすめスポットを知ることができるアプリがあればと思い作成しました。
今回のアプリ作成では以下のターゲットをイメージしました。
- 地元を離れて暮らし始めた人
- 友人は多くないが出かけるのが好きな人
- 1人で出かけるのが好きな人
使用技術
項目 | 内容 |
---|---|
フロントエンド | HTML/Sass/JavaScript |
バックエンド | Ruby(バージョン2.7.3) |
フレームワーク | Ruby on Rails(バージョン6.1.7) |
インフラ | AWS |
データベース | PostgreSQL |
コード管理 | GitHub |
コード解析 | RuboCop |
テストツール | RSpec |
gem | device/devise-i18n/rails-i18n/carrierwave/mini_magick/kaminari/ransackなど |
API | Google Maps API |
コードエディター | Visual Studio Code |
作図ツール | draw.io(画面遷移図、ER図) |
構成図
画面遷移図
ER図
インフラ構成図
機能一覧
項目 | 内容 |
---|---|
ログイン関連 | ログイン、ログアウト、ゲストログイン |
ユーザー関連 | 登録、編集、削除 |
おすすめスポット関連 | 登録、編集、削除 |
検索 | タイトル、シチュエーション、エリアで部分一致検索 |
コメント | 投稿にコメントができる、削除は自分のコメントのみ可能 |
いいね | 投稿にいいねができる |
マイページ | アカウント編集と削除、投稿一覧と投稿の編集、削除 |
検索
タイトル、シチュエーション、エリアでおすすめスポットを検索することができます。
検索は部分一致検索で行います。
おすすめスポット詳細
おすすめスポットについてのおすすめポイントや評価、地図を確認することができます。
気になった投稿にはいいねやコメントを投稿することも可能です。
マイページ
アカウント情報の編集やアカウントの削除が行えます。
投稿一覧では投稿の編集、削除が行えます。
工夫した点
ゲストログインの導入
トップページにゲストログインボタンを設置し、アカウント登録を行わなくてもアプリを使用できるようにしました。
ゲストアカウントではアカウント削除ができないように設定し、その他の機能は基本的に使用できるようになっています。
Google Maps API導入
Google Maps APIを導入しおすすめスポットの地図を表示できるように設定しました。
ユーザーはどんな場所におすすめスポットがあるのかイメージができるので、ユーザーはよりよい体験ができるようになっています。
チーム開発を意識
実務での開発を想定してGit, GitHubを用いたコード管理を行いました。
commitメッセージは他の人が見てもわかるようにコメントを行い、実装する機能に応じてfeature/xxx_xxx
の形式でブランチを切るようにしました。
また、コメントを追加することでどのような実装をしているのかを明確にし、他の人が作業をする場合でもわかりやすいように実施しました。
RuboCopを使用したコード解析
commit
前に必ずコード解析を行い、不備があれば修正してリモートブランチに反映していました。
チーム開発ではルールを決めて実装を行うことが必須だと思うので、自分の中でもルール決めを行い開発をしていました。
いいねの非同期処理
いいねボタンをクリックした際にページ全体をリロードせず、いいねボタンのみ変更することで非同期処理を行っています。
RSpecを使用したテストコードの実装
正常系だけでなく、異常系のテストも実装することで開発時のコードに問題がないかを担保できるようにしています。
実装内容の洗い出しなどをすることで、ユーザーがどのような操作を行うかやどのような条件を満たす必要があるのかなども整理しながら開発を実施しました。
開発をしてみての感想
1番大きな収穫としては、自分1人でアプリを作り上げることができたという自信を得ることができました。
もちろん、実際に開発を業務として行っている方からすると簡単なアプリかもしれません。しかし、アプリの企画やER図など構成図の作成や実装など勉強だけでは得ることができない体験をすることができました。
エラーの解決などでも苦労することもありましたが、解決できた時の喜びもあり最後までやり遂げることができて本当によかったと思います。
テストコードも実装した点は良かったのですが、改善点としてテストを先に実装するということができていなかったので「テスト駆動開発」を意識していくことも今後の課題だと感じました。
今後も1つ1つ向上心をもって学んでいきたいと思います。
長くなりましたが、ここまでご覧いただきありがとうございました。
Discussion