【個人開発】試聴効率をアップ！動画に直感的にメモを追加できるアプリを開発しました

## はじめに
こんにちは！kato([@k1997022023](https://x.com/k1997022023))と申します。
この度、「[ViMemo](https://vi-memo.com)」 というアプリをリリースしました！
ViMemoは、動画視聴中に時間軸上で直感的にメモを追加できる機能を提供します。
この機能により、メモ取りが簡単になり、メモに登録されたタイムスタンプをクリックすることで、その時間まで動画をスキップできます。
特に長尺動画では、メモを活用することで視聴効率が飛躍的に向上します。

### サービスURL
https://vi-memo.com
### GitHub URL
https://github.com/n-katou/ViMemo

## 目次
1. [作成経緯](#作成経緯)
2. [機能紹介](#機能紹介)
3. [主な使用技術](#主な使用技術)
4. [構成図](#構成図)
5. [ER図](#ER図)
6. [工夫した点](#工夫した点)
7. [今後の展望](#今後の展望)
8. [終わりに](#終わりに)


## 作成経緯
TV業界の照明マンは、CUEシート作成に苦労しています。
CUEシートとは、次の音のタイミングで照明を調整するための進行表のようなものです。
私も照明マンだった頃、この作業に非常に苦労しました。
YouTubeなどからアイデアを得る際に、動画に直感的にメモを書き込むことができれば、作業効率が飛躍的に向上すると考えました。
そこで、現役の照明マンの助けになるべく、このサービスを作成することにしました。

## メイン機能紹介
### メモ作成
再生中でもメモを書くことが出来ます。
<img src=
"https://gyazo.com/bf128c7ee7b6cbf30bd4e47b8ae209e2.gif"  width="400" height="200">

### メモ編集
モーダルにすることで、動画を視聴しながら修正しやすくしました。
<img src=
"https://gyazo.com/8b6b62983440c9cc42de55e10223fe2b.gif"  width="400" height="200">

#### タイムスタンプ
タイムスタンプをクリックでその時間までスキップします。携帯だと時間が表示されないので、タイムを別途表示しています（表示・非表示の切り替え可能）
<img src=
"https://gyazo.com/28894379170a4c71f8d80b97c8a07e05.gif"  width="400" height="200">

## 機能一覧
* 会員登録
* ユーザー編集
* Googleログイン
* パスワードリセット
* メモ投稿
* メモ編集・削除
* Xで共有
* 動画検索
* キーワード検索機能
* サジェスト検索機能
* ソート機能
* 動画・メモいいね機能
* Youtubeの取得機能
* いいね動画プレイリスト機能

## 主な使用技術
| カテゴリ | 技術 | 
| --- | --- |
| フロントエンド | Next.js 14.2.3 / React 18.3.1 / TypeScript 5.4.5 | 
| バックエンド | Ruby 3.1.5 / Ruby on Rails 7.0.3 |
| データベース | fly postgres |
| 認証 | Google OAuth 2.0 / sorcery |
| API | Youtube data API |
| 環境構築 | Docker |
| CI/CD | Github Actions |
| インフラ | Vercel / Fly.io / Amazon S3 |
| その他 | Tailwind CSS / Swiper / ESLint <br>CarrierWave / letter opener web |

## 構成図
![](https://i.gyazo.com/6b14d5d8f6f89b00029b7c288a2871c6.png)

## ER図
![](https://i.gyazo.com/4f8f57937967a69b765771943614da25.png)

## 工夫した点
#### UI/UX
PCとスマホの両方での操作性を考慮して、レイアウトを変更しています。具体的には、デバイスの画面サイズに応じてデザインや配置を最適化することで、ユーザーエクスペリエンスを向上させる取り組みを行っています。これにより、PCでは広い画面を活用した情報表示を、スマホでは直感的で操作しやすいインターフェースを提供しています。
| PC | スマホ | 
| --- | --- |
| <img src="https://gyazo.com/93c1591aeac83e1482399ad52e353788.gif"  width="300" height="200">　| <img src="https://gyazo.com/afc16c837ede72e14b248b67d66e57d1.gif"  width="300" height="200">|
| <img src="https://i.gyazo.com/7976fa8f168a82669aff26214fe9d70c.gif"  width="300" height="200">　| <img src="https://gyazo.com/bf128c7ee7b6cbf30bd4e47b8ae209e2.gif"  width="300" height="200">|
| <img src="https://gyazo.com/c0bfbc227285bfa49e83c5e26987638c.gif"  width="300" height="200">　| <img src="https://gyazo.com/a8ff9d05388abc22118aebfde9d270a4.gif"  width="300" height="200">|

#### 操作性
一覧画面でも「いいね」機能を提供しており、気軽に動画・メモに「いいね」を付けることができます。この機能により、ユーザーは簡単にお気に入りの整理することができます。
<img src=
"https://gyazo.com/abf94a5fdf9d4344185976c849114a0a.gif"  width="400" height="200">

## 今後の展望
#### Rspecテストの導入
開発に集中してテストを全く書いていないため、将来的な品質向上を目指してテストを書けるようにスキルを向上させたいと考えています。これにより、安定したコードベースを維持し、バグの早期発見と修正を実現したいと思っています。

#### フロントエンドのUI/UXの向上
Next.jsを学び始めてまだ2ヶ月程度なので、今後はリファクタリングや動きをより洗練させることに力を入れていきたいと考えています。これにより、コードの品質向上とともに、ユーザー体験をより魅力的にすることを目指していきます。


## 終わりに
最後までお読みいただき、ありがとうございました。
ViMemoが作業効率を少しでも向上させることができれば幸いです。
ぜひ、アプリをお試しいただき、ご意見やフィードバックをいただけますと嬉しいです。

また、Xでも活動していますので、よろしければフォローをお願いいたします。
今後も更なる改善と機能追加を目指して努力していきますので、
引き続きご支援のほどよろしくお願いいたします。

https://x.com/k1997022023

ありがとうございました🙇‍♂️