【個人開発】プログラミング初学者がアイデア探しアプリを作りました

はじめに
---
![スクリーンショット 2022-08-26 3.24.31のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/54899e84-2ed3-a5ba-ca08-ff6cb97c5bb5.png)
こんにちは @yunoM と申します
プログラミング学習を始めて４ヶ月が経ち、
先月初めて個人開発したアプリ「myru」が完成したので記録します✏️
このアプリの概要や思いについて書きましたのでよければ最後までお付き合いください！

【Twitter】
https://twitter.com/odoruyunoM
【今回作ったアプリ】
https://polar-escarpment-12121.herokuapp.com/
【GitHub】
https://github.com/fynmrtsk1225/myru_app

アプリを作ったきっかけ
---
家にいる時間が長くなったことで「おうち時間」に注目が集まった近年
何をして過ごすか以外にも「どんな部屋で過ごすか」についてもこだわりを持つ人が増えました
しかし、インテリアに興味やこだわりがありながらも実現できている人は少ないそうです
私自身、憧れや理想がありながらも完璧に実現はできていないのが現実です
そこで、気軽に部屋作りを楽しんでもらうことはできないか？と考え【myru】を作りました

アプリに込めた思い・実現したいこと
---
**「１人１人に豊かな暮らしを」**
理想のインテリアテイスト探し〜商品購入までの流れをアプリ内で完結させることで
部屋作りにかかる時間を削減し、ユーザのストレスを軽減させる

サービス概要
---
### 1\. Topページ
できる限りシンプルなデザインを意識して作成しました
![スクリーンショット 2022-09-06 16.03.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/e5c6b00a-b464-df2d-f62e-301332d822f9.png)

### 2\. アイデア作成・編集・確認
ルームアイデア作成画面では、現在の部屋情報と設置予定場所の詳細をメモ
また、アイデア探しや商品探しの際もワンクリックで確認できるサイドバーを用意しました
![ezgif.com-gif-maker (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/d895baa8-8e90-b8af-c89e-53d0e2424140.gif)

### 3\. メイン投稿・商品投稿
完成した部屋の情報を他ユーザに向けて発信
メイン投稿と一緒に使用したインテリア情報を載せることもできます
この機能を使うことで理想のインテリア探しから購入までの流れをスムーズにしています
インテリアを扱う企業様にも購入までの導線づくりとして利用していただけると考えました
![ezgif.com-gif-maker.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/3b86260a-daee-500b-c30f-5b2f115d3ac4.gif)

### 4\. プロフィール編集・ユーザページ
他ユーザのアイデア探しの参考になるようプロフィールを編集することができます
公開したくない内容は空欄のままでもOKです
![ezgif.com-gif-maker (2).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/639a4ba8-7ebc-3665-e0d1-783d6ca47ca3.gif)

使用環境
---
- ruby 3.0.1
- Rails 6.0.5
- PostgreSQL 14.2

**主なGem**
- rails_admin
- cancancan
- cocoon
- ransack
- Ajax

ER図
---
![スクリーンショット 2022-09-06 17.54.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/aba60695-195f-0da2-e528-a5b591e6fcf3.png)
**usersテーブル**
ユーザの情報を保存

**profilesテーブル**
ユーザに紐づくプロフィール情報を保存
ユーザ(users)１人につき１つのプロフィールを持つため「１対１」のアソシエーション

**room_ideasテーブル**
ユーザの部屋情報と設置予定場所の詳細を保存
ユーザ(users)１人につき複数のルームアイデアを持つため「１対多」のアソシエーション

**relationshipsテーブル**
ユーザ同士のフォローを実現するための中間テーブル（自己結合）
主ユーザ(users)と他ユーザ(users)が互いにフォローし合うため「多対多」のアソシエーション

**picturesテーブル**
メイン投稿の情報を保存
ユーザ(users)が複数のメイン投稿を持つため「１対多」のアソシエーション

**productsテーブル**
メイン投稿に紐づく商品情報を保存
1つのメイン投稿(pictures)が複数の商品情報を持つため「１対多」のアソシエーション

**tagsテーブル**
メイン投稿(pictures)に紐づくタグの情報を保存
①１つのメイン投稿が複数のタグを持つ
②複数のメイン投稿が1つのタグを持つため「多対多」のアソシエーション

**picture_tagsテーブル**
メイン投稿(pictures)とタグ(tags)の中間テーブル

**favorite_productsテーブル**
ユーザ(users)と商品情報(products)の中間テーブル
①１人のユーザが複数の商品情報をお気に入り
②複数のユーザが1つの商品情報をお気に入りするため「多対多」のアソシエーション

**favorite_picturesテーブル**
ユーザ(users)とメイン投稿(pictures)の中間テーブル
①１人のユーザが複数のメイン投稿をお気に入り
②複数のユーザが1つのメイン投稿をお気に入りするため「多対多」のアソシエーション

こだわりポイント
---
### 1\. 自分のルームアイデアをいつでも確認できるタブ機能
![ezgif.com-gif-maker (3).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/eafc4501-271c-be4b-f6b4-29c69deb3c1d.gif)

### 2\. 追加・削除ができる投稿フォーム
タグ付けフォームが１つ以下にならないよう制御
![ezgif.com-gif-maker (4).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/a7cbcafa-08b2-1d70-3fe6-b92b255418c1.gif)

### 3\. タグを管理者のみが作ることができる
不特定多数のタグがあるとメイン投稿検索時に迷いが生じるため
![ezgif.com-gif-maker (5).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2683200/59ec99ca-8291-759f-cef3-2c716373f22c.gif)

今後実装したいこと
---
### 1\. トップページの改良
現状、画像を投稿するアプリだと伝わりにくい
どのような方法で課題解決ができるのか具体的なイメージを持たせられるようにする

### 2\.自身の部屋の間取り図化
部屋作りに最も重要な「間取り」をユーザ自身にカスタマイズしてもらうことで
より具体的な理想の部屋をイメージしてもらうため

### 3\.プロフィールでの「よく使うタグ」の登録
よく使うタグから自身のインテリアテイストとマッチするユーザをフォローできる

### 4\.インスタグラムとの連携
現状、インテリア選びの際に最も参考にされているアプリがインスタグラム
情報を細分化するためにインスタグラムユーザにも使いやすくなるのでは？

### 5\.タグリクエスト機能
管理者のみがタグを作れるため一般ユーザからの声をアプリに反映させる機能

### 6\.管理者からユーザへの注意喚起機能
意図しないアカウント削除を防ぐため
アカウント削除に該当する投稿などがあったユーザに対し注意喚起のメールを送信できる

終わりに
---
ここまで記事を読んでいただき、ありがとうございます！
今回は、使っていて楽しくなるアプリをイメージしながら制作しました
完成後は、機能面はもちろんサービスとしての価値についても再構築が必要だなと感じています

初めての個人開発は、コンセプト決めからデプロイまで様々な壁にぶつかり続けた１ヶ月間でした
サポートいただいた皆さん、本当にありがとうございました！
まだまだアプリ内・コードともに改良すべき点が多くありますので、これからも学習を進めていきます


【Twitter】
https://twitter.com/odoruyunoM
【今回作ったアプリ】
https://polar-escarpment-12121.herokuapp.com/
【GitHub】
https://github.com/fynmrtsk1225/myru_app

参考記事
---
https://prtimes.jp/main/html/rd/p/000000026.000062185.html