🏅

[個人開発] 続編-YouTubeで集中した時間を振り返るWebアプリ

に公開

🌱 はじめに

こちらのアプリの姉妹アプリのお話になります。

今回も個人開発で アナリティクスWeb アプリを開発しました。
その内容についてご紹介します。

Image
実際の私のアナリティクスの内容になります

下記リンクから アナリティクスの内容を確認できます。

🌱 サービス説明

1. 全期間

all-image

シンプルに何のデータがわかるように直観的なアイコン,テキストを選定しました。
「データ更新日」も記載しいつ更新された情報なのか を明示するようにしました。

2. 過去 7 日間

weekly-image

過去 7 日間の「集中日数」「7 日平均」「最高記録」の概要の表示
ページネーション機能で「←前週 」, 「次週→ 」
さらに過去の週次のデータを確認できます。

3. 過去 30 日間

monthly-image
過去 30 日間の「集中日数」「30 日平均」「最高記録」の概要の表示
ページネーション機能で「←前月 」, 「次月→ 」
さらに過去の月次のデータを確認できます。

🌱 コンセプト

1. 運用コスト

YouTube が収益化もまだなので、サーバー代を抑えるためにGitHub Pageを活用しました。
レポジトリがpublicである条件があります。

また、GitHub Pageは静的ページ(HTML,CSS,JS)しか利用出来ません。
そのため、Next.JSStatic Site Generation (SSG)を活用してこの条件をクリアしました。

Static Site Generation (SSG)とは、ビルド(npm run build)時に HTML と CSS を生成する機能

計測アプリアナリティクスアプリで共通の DB を持つ必要があります。
以前までは、ローカルでSQLiteでデータを管理しておりました。
今回Supabaseを活用しました。

無料枠だと、データベース容量:500 MBらしいです。

今回のアプリは 1 年分で数千〜1 万ユーザー規模を記録できる見込みであり、無料枠で運用可能と判断した。

2. 運用の手間

アナリティクスアプリにデータを追加して、毎日ビルドする必要があります。
そこでGitHub Actionを活用しました。

GitHub Actionの大まかな流れ

  1. 日本時間の毎朝 4 時にGitHub Actionが起動する
  2. GitHub ActionSupabaseに昨日のデータだけを取得する
  3. 用意したスクリプトを通じて昨日のデータを専用の JSON 形式に変更する
  4. JSONファイルmainブランチに自動 push する
  5. 自動 push 後、SSG で静的ページを作成
  6. 静的ページをGitHub Pageにデプロイする

3. シンプルな設計

GitHub Pageは静的ページ(HTML,CSS,JS)なので、ログイン/ログアウト機能を実装できません。
しかし、他の視聴者の情報を簡単に閲覧できてしまうのはサービスとして不完全である。

そこで、YouTube 側で発行しているチャンネルIDを活用しました。
チャンネル ID はユニークな情報であり、私が管理する必要がないのもいいですね!

また、チャンネル ID は私と本人しか調べることができないので、認証情報として適していると判断した。

チャンネル ID はユニークであり、運営側で管理する必要がない点も利点である。

※チャンネル ID は、チャンネルのマイページから調べる事ができます。
※登録者がいるチャンネルなら、YouTube 上で検索してマイページを見つけることができる

チャンネル ID を用いることで、他人に閲覧されず自分だけが自分のデータを参照できる。

GitHubで編集を提案

Discussion