【Rails×LIFF】 モテたい人向けのマッチングアプリ完全攻略サービス 「マッチングアプリマスター」 を作りました。 (男性向け) 【個人開発】

# サービス概要
![マッチングアプリマスター　トップページのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/5b55db01-0083-8a4f-1a8a-a2c37478f7c7.png)
対応端末は`iPhone X 以降(スマホ)`を推奨しております。
LIFFアプリ(LINEで動くWebアプリ)なのですが、外部ブラウザ(SafariやChrome)からも開くことが出来ます。
※ 二極化 

URL：https://dating-apps-master.com/top
Github：https://github.com/ryuki7/dating-apps-master

マッチングアプリを利用しているが女性と上手くいかない、女性の扱い方がわからない、女性との出会いが無くて困っている人に
目的別に適したマッチングアプリを導き出し、そのアプリごとのテクニックやコツを全て指南して、モテ男（マッチングアプリマスター）への道標となる
マッチングアプリ完全攻略サービスです。

# このサービスを作った背景
まず、男の人って個人差はあれどモテたいと思っている人がほとんどだと思っていて、モテは男のロマンだと思います。
一見、モテたいと言う欲求はただの邪念だと思われがちですが、私はそんなことはないと思っています。
モテることによってモチベーションが上がったり、自分に自信がついてくるので、プライベートだけではなく、仕事面でも良い影響を与えると思います。

そこで昨今、コロナ禍による異性との出会いの減少やSNSサービスの普及により、異性との出会いの架け橋としてマッチングアプリが流行って来ており、今後もどんどん流行っていくと予想しています。

そして、いざマッチングアプリを利用しようと思っても、最初はノウハウがなく、中々自分の思うようにいかないと思うので色々調べると思います。


しかし、マッチングアプリについての情報は出回ってはいるが、

- アフィリエイトなどの利益目的で、あることないこと書いてるサイトが多い。
- 参考になりそうなまともなサイトなどであっても、サイトによって書いてあることが違う為、結局どれが有効的な手段なのか判別するのが難しい。

上記の二点から、マッチングアプリを利用している男性ユーザーは思うようにいかなかったり、悔しい思いをしてしまいます。自分もマッチングアプリを始めた当初は苦労しました。

　そこで、現在の自分はマッチングアプリの超がつくほどのヘビーユーザーであり、これまで数多くの情報を調べ尽くし、実践・改善を幾度も繰り返して、やっとのことでマスターすることができました。
　その自分が得た有効的なテクニックや知識・手段をアプリとして、ゲーム要素も含めて楽しい思いをさせながら、伝えることができたら良いな、と言う想いから開発しました。

# 使い方
#### 最初に「マッチングアプリマスター」を友達追加します。
![dating-apps-master QRのコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/005a729d-9c30-8a84-7935-93550997b860.png)
<a href="https://lin.ee/SxkZcsn"><img src="https://qiita-user-contents.imgix.net/https%3A%2F%2Fscdn.line-apps.com%2Fn%2Fline_add_friends%2Fbtn%2Fja.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=426b69fd462aa8a9a9abd93d00b2116d" width="画像のサイズ"></a>
####1.友達追加をしたらマッチングアプリマスターのLINEを開いて「攻略する」ボタンをタップ
![LINEトーク画面.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/5ceade5d-8049-e680-af97-06e6bea3ab8b.jpeg)

####2.マイページに遷移する為、右上のメニューから「適正アプリ診断」をタップ
![IMG_8741.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/c7e7ef78-f1cb-2f62-371e-08f184ebbbb8.jpeg)

####3.「診断する」ボタンをタップして3つの質問に答えよう！
![適正アプリ診断 Qiita.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/72720803-8cd0-f7b7-2986-a2bb1138b8b5.jpeg)

####4.3つの質問に答え終わると、「診断結果」が出るので、「攻略するアプリを選択」ボタンをタップ
![診断結果.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/0fc03b04-a2b2-feb4-8ece-c3f5dc53c6d7.jpeg)

####5.診断結果を元に「攻略するアプリを選択」しよう！
![攻略するアプリを選択.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/3d34998f-ee4a-81e5-8c72-ddf0930fc3ee.jpeg)

####まだまだ、たくさん機能がありますが長くなっちゃうので割愛します！
####モテ男になれるように頑張りましょう！

# 使用技術と主に使用したgem
- Ruby 3.0.2
- Rails 6.0.4
- JavaScript
- jQuery
- LIFF(LINE Front-end Framework)
- LINE Messaging API
- MYSQL
- Nginx
- Unicorn
- AWS
  - VPC
  - EC2
  - RDS
  - ALB
  - Route53
  - ACM
- RSpec
- line-bot-api (LINE通知)
- rails-i18n (国際化)
- dotenv-rails (環境変数の管理)
- meta-tags (メタタグ)

# ER図
![ER図　Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/2e09981f-306c-246f-b1a2-500c327d2e8c.png)

# インフラ構成図
![インフラ構成図 Qiita.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/66e01e75-c7f3-8c8c-228d-d7cdc7aec4b8.png)

## 工夫したポイント
###1.LIFFアプリ(LINEと連携できるWebページ)の導入

####LINEで自動ログイン
`LINEログイン`を導入することで、LINEを連携してユーザーがログインできる為、メールアドレスやパスワード等の入力作業を省くことが出来ます。


ユーザー情報の取得は`javascript`の`liff.getIDToken()`でしか取得出来ない為、

1.`javascript`で`Requestオブジェクト`を使い、RailsのControllerへ送る

⬇️

2.RailsのController内で、`取得したIDToken`をパラメーターに持たせて、LINEに`POST通信でHTTPリクエスト`をする

⬇️

3.`ユーザーのIDを取得する`(RailsのController内でレスポンスとして返ってくる)

という流れで実装しました。

また、`LINE Messaging API`を利用して、特定のアクションをしたら、LINE公式アカウントからユーザーにプッシュメッセージが送信されるようにしました。

###2.AWSでデプロイ
Herokuでは無く、実務でよく利用されている`AWS`でデプロイしました！
初めての経験だった為、分からないことだらけでしたが、なんとか実装することが出来ました！

- `VPC(Virtual Private Cloud)` => AWS上に作成できるプライベート仮想ネットワーク空間。AWSアカウント内に専用のネットワークを作成でき、このネットワーク内に「EC2」（Amazon EC2）などのAWSリソースを配置できる。

- `EC2(Elastic Compute Cloud)` => LinuxやWindowsなどをOSとした仮想サーバを作成できるサービス。

- `RDS(Relational Database Service)` => AWSの`リレーショナル型のデータベース`サービス。
`RDS`では、データベースのインストールやバックアップなどのセットアップをしなくても、データベースが利用できる環境が提供されているため、契約後すぐにAWS上でデータベースを使用することができる。

  - `リレーショナル型データベース（関係性データベース)` => 行と列の2つの軸で表されるデータベースのことです。イメージとしては、高機能なExcelのようなものです。(普段馴染みのあるデータベースである。)

- `ALB（Application Load Balancer)` => AWSのサービスの一つで、Webサービスにおける負荷を分散させるロードバランシングサービスです。
突発的なアクセスの急増がWebサービスのエラーの原因になることがあります。ロードバランサーがそのような負荷を分散し、安定稼働や高可用性を実現させます。
`ALB`のさまざまな機能を利用することで、Webサービスを安定して運用できるようになります。

- `Route53` => `DNS (ドメインネームサービス)`のフルマネージドサービスです。
`Route53` で管理しているドメインを参照し、紐付いている「IPアドレス」などのデータを取得することができます。

  - `DNS` => IPアドレスとドメインを紐付けてくれる。

- `ACM(AWS Certificate Manager)` => AWSのサービスの1つで、SSL証明書発行サービスを指します。


###3.セレクトボックスをモーダルメニューで実装
ドラムロール式ではなく、`モーダル`でセレクトボックスを実装しました。(`JavaScript`・`Jquery`)
※ ドラムロール式は下記の画像のようなiPhone端末お馴染みの仕様です。
![ドラムロール式.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/1731f255-c53b-63a7-66ff-9396f4181c95.jpeg)
ドラムロール式は、

- 一目で見れる選択肢が少ない(視認性が悪い)
- 選択肢のテキストが多いと文字が途切れる(視認性が悪い)
- 入力の完遂まで3タップ必要(工数が多い)
- 「完了ボタン」の領域が小さく、誤タップを引き起こしやすい(操作性が悪い)


上記の4点の問題があります。

#### `モーダル`でセレクトボックスを実装することによって、上記の4点を改善することができ、少しでもユーザーが使いやすいようにしました。

![モーダルメニュー Qiita 2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/b3187b9a-0edc-c0eb-e65d-237a0eb9af6d.gif)

###4.デートした女性の人数・好感度・進展度から、モテ度を算出・可視化する
現実でのモテ度に等しい値に出来るだけなるように色々なパターンを考えながらロジックを組みました。

- デートした女性の人数(一意の女性)
- 女性毎の好感度・進展度

からモテ度を算出しています。
モテ度を可視化することによって、自分の現状・レベルの認識ができる、またゲーム感覚なのでモチベーションアップにも繋がると良いなと思っています。

###5.モテ度・女性毎のデート回数から、おすすめのデート予定日・デートプランを教える

- モテ度
- 女性毎のデート回数

からおすすめのデート予定日・デートプランを算出しています。

デートはただするだけではなく、適切な期間があり、ユーザーや相手の女性によっておすすめのデートプランは変わってくる為、デートの予定を組むのが苦手だったり、女性経験が少ない方は参考にすると成功確率が上がると思いますのでおすすめです。
![おすすめデートプラン・予定日.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/840723/1b6ad72f-acaa-ed1d-4c46-76546f457a05.jpeg)

## 今後追加してみたい機能等

- 全ユーザーを対象にモテ度ランキングを作る
- 女性一覧・デート結果履歴一覧に検索機能を付ける

## おわりに

マッチングアプリを利用している方や初めてマッチングアプリを利用する方、女性にモテたい！と思う方は、ぜひ「マッチングアプリマスター」を利用してみてください！

今後も引き続き、改善できることは改善していくつもりですので、フィードバック等をいただけると幸いです。

最後まで読んでいただき、ありがとうございました！