【Rails×LIFF】でデートサポートサービス『Date me』を作りました！【個人開発】

##サービス概要
LINE botを使ったサービスなので、スマホからご確認ください！

https://love-dateme.com/top

ちょっとマンネリしてきた夫婦・カップルに久しぶりのドキドキを提供してくれる、デートサポートサービスです。

- デート日を決めてもらえれば、あとはアプリがデートのお誘い、当日のアクションのアドバイスをしてくれます。
- 当日のアクションは、「ミッション」という形でLINEで通知が届くため、リアル体験型ゲームのような感覚で楽しむことができます。

ミッション例：「手をつないでみる」「今日一番素敵だと思うところを伝えてみる」など

##使いかた
###事前に『Date me』を友達追加しておきます
※パートナーにも必ず友達登録してもらってください！
友達登録されていないと当日のミッションが届きません
![M.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874634/3705b90f-f901-5b93-2c8d-37c6d52c41a4.png)
<a href="https://lin.ee/BTj6snO"><img src="https://scdn.line-apps.com/n/line_add_friends/btn/ja.png" alt="友だち追加" height="36" border="0"></a>

1. 友達追加したらDate meのLINEを開いて「デートにお誘いする」ボタンをタップ
![howto1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874634/6af4a50a-4410-94f5-e01a-1b8ea1272dd5.png)


<br>
2. 日程を決めてパートナーに送信
![howto2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874634/9f430797-8549-2e17-3376-eca827ef3f0e.png)

<br>
3.パートナーにお誘いが届きます。パートナーが「確認しました！」ボタンを押したら、あとはデート当日を待つだけ
![howto3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874634/332aac1e-ee98-5e06-abf9-a027711ed64a.png)


<br>
4.デートが始まるとお互いのLINEにミッションが届きます。ミッションをクリアして素敵なデートにしましょう！
![howto4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874634/0f09866f-036e-6259-f16c-0bf6b00d7726.png)



<br>

##このサービスを作った背景
もっと夫婦間のコミュニケーションが活発な世の中になり、今よりさらに「家族で過ごすことが幸せな時間」と思う人が増えたら良いな、という思いから開発しました。

## 使用技術と主に使用したgem
- Ruby 2.6.6
- Rails 6.1.2
- MYSQL
- Nginx
- Puma
- Capistrano
- AWS
  - VPC
  - EC2
  - RDS
  - ALB
  - Route53
  - ACM
- RSpec(テスト)
- TailwindCSS(CSS)
- line-bot-api(プッシュ通知)
- whenever(定期実行)
- lack-notifier(エラー通知)
- exception_notification(エラー通知)

## 工夫した点
### デザイン
女性に気に入ってもらえれば男性側には友達追加するよう無理矢理促してくれるはず！ということで(笑)、
開発者の私が女性である視点を活かし、同じ女性に第一印象で「可愛い！使ってみたい！」と思ってもらえるような世界観にすることを意識しました。

例：ランディングページ
[![Image from Gyazo](https://i.gyazo.com/5e4a5440217159e5883c9cee69a89888.gif)](https://gyazo.com/5e4a5440217159e5883c9cee69a89888)




### ユーザーの目線を取り入れる
ターゲットに近い人(知人や、Twitterのフォロワーさんなど)に実際に使ってもらい、いただいたフィードバックを元に、より使いやすいアプリになるよう改善を繰り返しました。  
※Twitterでは夫婦アカウントを別途作成、ターゲットに近い方と繋がり、実際にミッションの内容を募集したり、リリース前に使ってみてもらい、感想をいただいたりもしました。

◆いただいたフィードバックと改善例：

- パートナーがデートのOKの回答をした後、もう一度同じページを開いた時に404ページにレンダリング
(回答を変更できないようにするため)  
→この段階ではまだデートが始まってないから、予定確認できた方がありがたい

改善後：スケジュールを確認する導線はリッチメニューからの確認のみでしたが、デートのお誘い確認ページで回答した後も引き続き、内容が確認できるようにしました
(回答後は回答ボタンのみ見えなくなるように実装)

※リッチメニューとは、LINEのトーク画面下部に表示されるメニューのことです↓
![richmenu.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874634/431fae89-4774-690e-c800-d77c08b33dc9.jpeg)

- ミッションのハードルが高い  
→デート時に使うものということで外で使ってみると、周りの目が気になってしまって実行できないものがあった

改善後：改めてミッションの内容を精査し、なるべく多くの人が抵抗なく(もしくはちょっと頑張れば)挑戦できるようなミッション内容に絞りました

### ログイン処理をせずに使うことができる
デート中にページを開いてもらうことを考えた時に、いちいちネットで検索してログインし、ページを見てもらうことは難しいと思っていました。
そこで思い浮かんだのが、LINEを使って実装することです。

LINEのLIFFを使いユーザー情報を取得することで、ユーザーにログイン処理をさせることなくユーザーを識別できるようになりました。
<br>
ただ、ユーザーにログインしてもらう必要がないからこその問題点もありました。
ユーザー情報の取得はjavascript⇨controllerの順番で処理を行うため、ページを開く瞬間にユーザーを識別する必要のあるページは、ユーザー情報の取得が完了する前にページを開こうとしてエラーになってしまいます。

解決策としては、一度ログインさせるためだけのページに飛ばし、ユーザー情報を取得してから目的のページにリダイレクトさせるようにしました。

[![Image from Gyazo](https://i.gyazo.com/046d8ed23965d41a84dbf4d3ed798959.gif)](https://gyazo.com/046d8ed23965d41a84dbf4d3ed798959)


## 今後追加してみたい機能など
- デートのシチュエーションごと、もしくは難易度別で届くミッションを変えられるようにしたい

現状「恥ずかしくて実行できなかった」という声もあれば「楽しかった」という声もあり、人によってミッションを実行できるレベルはさまざまです。
そこで、難易度別などで分けられればユーザーに合わせたサービスが提供できるため、実装方法を考えていきたいと思っています。
<br>

- Date meからミッションが送られてくる以外に、前日のリマインドや当日デート終了後に「デートはどうでしたか？」のようなメッセージが送られてくるようにしたい

今は最低限の機能を実装しただけの状態なので、よりデートのワクワク感を盛り上げられるような仕掛けを追加していくためのアップデートを考えています。

## 「自分が作れるもの」ではなく、より良いものを作りたい
去年の10月からRailsを勉強し始め、私にとって初めてのアプリ制作でした。

最初からLINEを使ってアプリを作ろうと考えていたわけではありませんが、『Date me』のサービスを思いつき、**今の自分が持っている知識の中で作れるもの**ではなく、**よりユーザーにとって使いやすい**を優先して考えたときに「LINEの機能を使ってみよう」と決めました。

ありがたいことに、既に様々なユーザーさんに使っていただき、フィードバックもたくさんいただいています。
今後も引き続き、改善できることは常に改善し、よりデートをワクワクさせるような機能も追加していく予定です。

このアプリを使って、パートナーと楽しい時間を過ごす人がさらに増えていったら嬉しいです！

## Date meに興味を持ってくださった方へ
一番最後まで読んでいただき、ありがとうございます。
下記リンクでもDate meについての他の視点からの記事や、登壇の様子などをみることができます。
もしご興味がある方はこちらも見てみてください！

* [Connpass 「Qiita人気記事執筆者が語るLINE APIの魅力」](https://youtu.be/d3CkTGnBILc?t=370)

* [note 「Date meを通して伝えたいこと」](https://note.com/terakura_aina/n/ne9b613c87e5e)