ebutuoY YouTube視聴習慣を見える化するアプリ

ebutuoY – YouTube視聴履歴から「自分の時間」を取り戻すアプリ

ebutuoY は、YouTube の視聴履歴を解析して、 「どのチャンネルに何時間溶かしているのか」「どの時間帯に一番沼っているのか」を可視化するアプリです。
Google Takeout や通知バーから取得したデータをもとに、 視聴時間をチャンネル別・時間帯別に集計し、「自分が本当に大事にしたい時間」を取り戻すことを目標にしています。

作品の説明

スマホを開くたびに気づいたら YouTube を見ていて、 1日が終わるころには「今日は何をしていたんだろう」と思うことがあります。 ebutuoY は、その感覚を「なんとなくの反省」で終わらせず、 実際の視聴履歴をデータとして突きつけてくるアプリです。

データは Google Takeout の視聴履歴や、Android の NotificationListenerService で取得した 再生中通知から集めます。 それをローカルのデータベースに保存し、日別の視聴時間グラフやチャンネルランキング、 「深夜1時〜2時のショート沼タイム」などをヒートマップとして可視化します。 さらに、視聴時間が長く、かつガイドラインが明確なタレントを「切り抜き候補」として表示し、 健全な二次創作・翻訳切り抜きを支援する構想も含んでいます。

  • ① Google Takeout / 通知から視聴データを取得
  • ② 動画ごとの再生開始時刻・チャンネル・タイトルを保存
  • ③ チャンネル別・時間帯別に視聴時間を集計
  • ④ 「沼り時間」をヒートマップで可視化
  • ⑤ 切り抜き・翻訳候補タレントをレコメンド
  • ⑥ 将来的にはクリップ編集画面(Media3 + RangeSlider)と連携

システム概要

ebutuoY システム構成図

データソースは大きく2つあります。 1つ目は、Google Takeout から取得した YouTube 視聴履歴(.zip / .tgz)。 2つ目は、再生中の通知からタイトル・チャンネル名を取得する NotificationListenerService です。 どちらもローカルの Room データベースに保存し、オフラインでも分析できます。

技術スタック

  • Android: Kotlin, Jetpack Compose, ViewModel, Room, WorkManager
  • Data Import: ZIP/TGZ 展開, JSON/HTML パース, NotificationListenerService
  • Visualization: Compose Canvas / Charts, LazyColumn, ColorScale ヒートマップ

主要コンポーネント

  • HistoryImporter: Google Takeout のアーカイブから watch-history ファイルを探し、 各レコードを動画ID・チャンネル・タイムスタンプに正規化して Room に保存。
  • NowPlayingListener: NotificationListenerService を用いて再生中通知からタイトル・チャンネルを取得し、 「リアルタイム視聴ログ」として記録。
  • AnalyticsEngine: 視聴時間を日別・時間帯別・チャンネル別に集計し、 「学習」「娯楽」「BGM」などカテゴリごとの比率を算出。
  • InsightScreen: ヒートマップ・棒グラフ・ランキングを用いて、 ユーザーの視聴傾向を可視化する画面。
  • ClipSuggestScreen(構想): 視聴時間の長いチャンネルのうち、ガイドラインが明確なタレントを 切り抜き候補として提示し、編集アプリに渡す。

技術解説

DATA INGEST

Google Takeout & 通知からの視聴履歴取得

YouTube API を使わずに、ユーザー自身がエクスポートしたデータと、 Android の通知バーを組み合わせて視聴履歴を集めています。 これにより、APIキーの管理や利用規約の制約を最小限にしつつ、 「自分のデータは自分で持つ」という形を維持しています。

・.zip / .tgz をアプリ内で展開
・watch-history.json / .html からタイトル・URL・時刻を抽出
・NotificationListenerService で再生中通知を補完し、欠けている視聴も追跡
ANALYTICS / VIS

チャンネル別・時間帯別の視聴時間ヒートマップ

視聴履歴をそのまま一覧で見ても、自分の傾向は分かりにくいので、 「縦軸=時間帯」「横軸=日付」の 2D ヒートマップに変換しています。 セルの色の濃さが、その時間帯の視聴時間の長さを表します。

例:
・0–24時を1時間刻みで24行に分割
・1日を1列として、24×N のグリッドを生成
・各セルに合計視聴秒数を詰め、ColorScale で色を決定
CHANNEL PROFILING

「自分を削る視聴」と「自分を育てる視聴」を分ける

チャンネルごとの総視聴時間・深夜帯視聴比率・ショート視聴比率などを特徴量として、 「集中を削る系コンテンツ」と「学習・制作に役立つコンテンツ」を分けて表示します。 ユーザーは、各チャンネルにタグ(Study / Work / Entertainment / BGM など)をつけることで、 自分なりの基準で仕分けられます。

・チャンネルごとに合計視聴時間を集計
・視聴開始時刻から「深夜視聴率」を算出
・ユーザータグと組み合わせて「いい沼/悪い沼」を色分け表示
CLIP SUPPORT

視聴ログから「切り抜き候補」を見つける

ebutuoY のもう一つの顔は、「迷惑な切り抜き防止」を前提とした ショート切り抜き支援です。 視聴時間が長く、自分が本当に好きなタレントの中から、 ガイドラインで二次創作が許可されているものだけを候補として抽出し、 切り抜き編集アプリに渡します。

・視聴時間の多いチャンネル上位から候補を提示
・ユーザーが「ガイドラインURL」を登録
・将来的には Media3 + RangeSlider の編集画面と連携

実験・結果・課題

自分の視聴履歴での検証

まずは自分自身の Google Takeout データを使って検証しました。 特に、試験前や締切前の期間を抽出してヒートマップを見ると、 深夜帯の視聴時間が一気に増えている日がはっきりと現れます。

視聴履歴のリスト表示だけの状態
(a) 初期版:単なる視聴履歴リスト
ヒートマップでの視聴時間可視化
(b) 改善版:ヒートマップで沼り時間が一目瞭然

現在の課題

現在のバージョンでは、 ・視聴時間の推定精度(途中離脱や倍速視聴) ・スマホとPCの両方で視聴した場合の統合 などに課題があります。 また、「良い視聴/悪い視聴」の判定はあくまで本人の主観なので、 分類ロジックをどこまで自動化するかも今後の検討ポイントです。

再生時間の厳密な推定は未完 PC視聴との統合ロジックを設計中

動画リンク

視聴履歴のインポートから、ヒートマップ・ランキングの表示までを収録したデモ動画です。 将来的には、ここから切り抜き編集画面に遷移する様子も追加する予定です。

視聴履歴インポート → ヒートマップ表示 → チャンネルランキング

まだできていない部分と今後

「視聴ログ × 脳波 × タスクログ」へ

ebutuoY 単体でも視聴習慣はかなり見えるようになりますが、 将来的には、Obsidian の学習ログや Muse-S の脳波データと同期させて、 「どんな動画を見ているときに集中が落ちるのか」 「どのチャンネルを見るとモチベーションが上がるのか」 といった分析にまで発展させたいと考えています。

  • 短期: 視聴時間推定ロジックの安定化、PC視聴との統合。
  • 中期: Obsidian のタスク完了ログと連携し、「動画視聴前後の生産性」を可視化。
  • 長期: 脳波・心拍なども含めた「メディア視聴と集中力」の研究プラットフォームへ。

これからの改善点と開発計画

分析精度・UX・切り抜き支援の3つの軸で進めます。

  • 分析精度: 再生時間推定の改善、ショートと通常動画の扱い分け。
  • UX: 1日の振り返りタイムライン、週・月単位のダッシュボード。
  • 切り抜き支援: 視聴ログから候補動画を抽出し、クリップ編集アプリと連携。
17
18
19
20
21
22
23
24
25
26
27
28
29
30
視聴時間推定ロジックの改善
週・月ダッシュボードの実装
切り抜き候補抽出と連携

このプロジェクトを通して

感じていること

義育博や種子島ロケットコンテストに通ったことで、 「成功でドーパミンが麻痺してしまった感覚」がありました。 そこで、自分がどれだけ YouTube に時間を溶かしているのかを ちゃんと見つめ直すために作ったのが ebutuoY です。

データとして突きつけられると、逃げ場がなくなります。 でも同時に、「ここを変えればもっと戦える」という希望にもなります。 このアプリは、単なる自己反省ツールではなく、 次の一歩を踏み出すための装置にしたいと思っています。

今の自分へのメモ

  • ・YouTube を悪者にするのではなく、「うまく付き合う」ためのツールとして育てること。
  • ・視聴時間を削ったぶんだけ、技術や音楽や研究に投資していくこと。

リファレンス & リンク

リファレンス

  • Google Takeout – YouTube 視聴履歴エクスポート
  • Android Developers – NotificationListenerService
  • Android Developers – Jetpack Compose / Room / WorkManager
  • AndroidX Media3 – ExoPlayer / PlayerView

リンク