【2窓用】複数のYouTube生放送(アーカイブ)の再生位置を揃えるツールを作ってみた
世間の色々もあって今年のGWはすごく時間を持て余しそうだったので,
「素人が1週間でWebサービスつくってみた」
的なチャレンジをやってみました.唐突に.
そろそろweb系の開発やってみたいな欲が常々あったので、ここからのGW後半戦で「素人が一週間でwebサービス作ってみた」的なチャレンジをする事に。アイデア出しはこれからなので爆死感濃厚だけど、やれるだけやってみよう。
— LNLD (@shikky27) May 3, 2020
アイデア出し含めての1週間チャレンジなので,ハッカソンみたいなものですね.
最終的にこんなサイトができました.
(※随時Update予定なので,本エントリと噛み合わない部分があるかもです.)
NiMado(https://nimado.now.sh/)
作ったものについて
はじめに完成物について紹介しておきます. これは複数のYouTube動画に対して,それぞれの再生時間が揃う位置のURLを返してくれるツールとなります.
何に使うの?
私自身が最近VTuberの生配信(YouTubeLive)を見ることが多いのですが,リアルタイムで追えずにアーカイブで追うことが良くあります.
ただ,コラボなどで複数視点の動画が上がっていた場合に
- 複数の視点を2窓して楽しみたい
とか
- この瞬間の別の人の視点はどうなってたんだろう
とか思うことが多々ありました.そんな時にシークバーをうまく使って再生位置を揃える作業が必要になるのですが,本ツールはそういった煩わしさを解消してくれるものになります.
なお先人の偉業としては,
https://chrome.google.com/webstore/detail/youtubeliveclock/chpodcedholiggcllnmmjlnghllddgmj?hl=ja
様の生配信時の実時間を表示してくれるChrome拡張などがあります.
非常に良いものなのですが,私がFireFox派なのと,タイミングを揃える機能はなさそうなので今回のツールを作るに至りました.
また本格的にに複窓を嗜まれたい場合は,
https://piporoid.net/NMado/usage.html
様のN窓という神ツールもあります.
技術的な話
フロントエンドはReact.jsで,バックエンド(ルーティングとか)はNext.jsで作りました.
(まだ用語に自信がないので,間違っていたらすみません.)
デプロイ先のプラットフォームはZeit nowです.
YouTube動画の投稿時間などの情報は,YouTube Data API v3のVideosカテゴリのAPIを使ってます.
https://developers.google.com/youtube/v3/docs/videos?hl=ja
動作フローはこんな感じ.
YouTube Data APIのためにAccessKeyが必要なので,ユーザが入力したデータを一旦サーバで仲介しています.その後の再生位置を揃えるための計算はブラウザ内で完結できるので,⑤にて処理したのち,結果を埋め込んだURLをユーザに提示しています.
ちなみに,動画の投稿日時は"snippet.publishedAt"パラメータで取得できますが,これは投稿時間であって,生放送の開始時間ではありません.
これが一週間チャレンジの終盤で発覚して詰みかけたのですが,下記方法で開始時間を取得することができました(公式リファレンスには見つからないですが).
YouTube Data API v3でライブ配信の状態を取得する - WEBサイト開発日記
めちゃくちゃ助かりました.感謝.
作ったもの紹介はこんなところでしょうか.UIや機能,バグ修正など不足しているところはまだまだありますが,ひとまず一週間の成果ということで.
今後少しずつUpdateしていきます.少なくとも3つ以上の動画に対応させるところまではやりたいですね.
一週間チャレンジについて
さて,ここからは一週間チャレンジの内訳について書きたいと思います.
当方のスキル・経験について
"素人が一週間で"以下略チャレンジですが,素人の基準は人によって異なりそうなので,私の経験やスキルについてサクッと書いておきます.
- プログラミング全般について
- Web関連の知識・経験について
- WebページがHTML/CSS/JavaScriptで構成されていることは知っている,程度
- バニラなHTML/CSSはほんの少しだけ書いたことがある(数時間)
- フレームワーク全般に関する知識は皆無
- WebページがHTML/CSS/JavaScriptで構成されていることは知っている,程度
こんな感じで「プログラミング経験はそこそこあるが,Web関係には一切携わっていない」って感じの素人です.
一週間チャレンジの工数内訳
かけた時間の内訳はこんな感じでした.
- 日数 : 8日
- 途中,ぽんぽこ24 vol4を丸一日追ってたので,実質7日ということで
- かけた時間:45h
一日ごとの作業内容や進捗は毎日つぶやいてたので,下記ツイートツリーで辿れます.
二日目、環境構築とユーザストーリー作成。明日から開発。
— LNLD (@shikky27) May 5, 2020
作るもの:2窓支援ツール
ストーリー1:youtubeの生配信アーカイブのurlを複数入力し、実時間でのタイミングが揃う最初の再生位置を取得する。
ストーリー2:上記に対して、揃えたいタイミングを任意に指定できる。
おわりに
今までハッカソンのようなものには興味はもちつつも,実際にやったことはありませんでした.
今回のチャレンジはまさにひとりハッカソンと呼べるもので,アイデア出しからプラットフォームの選定,お勉強,実装,公開までを凝縮したとても有意義なチャレンジでした.
めちゃくちゃ楽しかったので,今後もこういったチャレンジを定期的にやっていきたいですね.
それでは.