[個人開発] 続編-YouTubeで集中した時間を振り返るWebアプリ
🌱 はじめに
こちらのアプリの姉妹アプリのお話になります。
今回も個人開発で アナリティクスWeb アプリ
を開発しました。
その内容についてご紹介します。
実際の私のアナリティクスの内容になります
下記リンクから アナリティクスの内容を確認できます。
🌱 サービス説明
1. 全期間
シンプルに何のデータがわかるように直観的なアイコン
や色
,テキスト
を選定しました。
「データ更新日」も記載しいつ更新された情報なのか を明示するようにしました。
2. 過去 7 日間
過去 7 日間の「集中日数」「7 日平均」「最高記録」の概要の表示
ページネーション機能で「←前週 」
, 「次週→ 」
さらに過去の週次のデータを確認できます。
3. 過去 30 日間
過去 30 日間の「集中日数」「30 日平均」「最高記録」の概要の表示
ページネーション機能で「←前月 」
, 「次月→ 」
さらに過去の月次のデータを確認できます。
🌱 コンセプト
1. 運用コスト
YouTube が収益化もまだなので、サーバー代を抑えるためにGitHub Page
を活用しました。
レポジトリがpublic
である条件があります。
また、GitHub Page
は静的ページ(HTML,CSS,JS)しか利用出来ません。
そのため、Next.JS
のStatic Site Generation (SSG)
を活用してこの条件をクリアしました。
Static Site Generation (SSG)
とは、ビルド(npm run build
)時に HTML と CSS を生成する機能
計測アプリ
とアナリティクスアプリ
で共通の DB を持つ必要があります。
以前までは、ローカルでSQLite
でデータを管理しておりました。
今回Supabase
を活用しました。
無料枠だと、データベース容量:500 MBらしいです。
今回のアプリは 1 年分で数千〜1 万ユーザー規模を記録できる見込みであり、無料枠で運用可能と判断した。
2. 運用の手間
アナリティクスアプリ
にデータを追加して、毎日ビルドする必要があります。
そこでGitHub Action
を活用しました。
GitHub Action
の大まかな流れ
- 日本時間の毎朝 4 時に
GitHub Action
が起動する -
GitHub Action
がSupabase
に昨日のデータだけを取得する - 用意したスクリプトを通じて昨日のデータを専用の JSON 形式に変更する
-
JSONファイル
をmain
ブランチに自動 push する - 自動 push 後、SSG で静的ページを作成
- 静的ページを
GitHub Page
にデプロイする
3. シンプルな設計
GitHub Page
は静的ページ(HTML,CSS,JS)なので、ログイン/ログアウト機能を実装できません。
しかし、他の視聴者の情報を簡単に閲覧できてしまうのはサービスとして不完全である。
そこで、YouTube 側で発行しているチャンネルID
を活用しました。
チャンネル ID はユニークな情報であり、私が管理する必要がないのもいいですね!
また、チャンネル ID は私と本人しか調べることができないので、認証情報として適していると判断した。
チャンネル ID はユニークであり、運営側で管理する必要がない点も利点である。
※チャンネル ID は、チャンネルのマイページから調べる事ができます。
※登録者がいるチャンネルなら、YouTube 上で検索してマイページを見つけることができる
チャンネル ID を用いることで、他人に閲覧されず自分だけが自分のデータを参照できる。
Discussion