YouTubeトップ100|サビだけメドレーで楽しむ最新ヒットサービス作成

普段はテレビもニュースも株価も見てないが、音楽のトレンドだけは追いかけたい。

子供が運動会で踊るダンス曲や紅白歌合戦の選曲を知らないと時代に置いていかれた老害な気分になるから。

 

2007年のブログでも書いたね。

娘の友達の名前が全部言えること。
娘に負けないぐらい友達がいること。

娘と同じ歌がうたえること。
自分だけのドライブミュージックがあること。

娘のいちばんの親友でいること。
いつまでも娘の憧れであり続けること。

【引用】日産 プレサージュ TV-CM

2006年CM 日産 プレサージュ 桐島かれん
初「鎌倉」観光で大仏に入れず
2007年01月14日(日) イイクニ作ろう鎌倉幕府!土日には、引きこもり生活ばかりなので、観光に「鎌倉」に行ってきました。拝観した名所は「円覚寺」「明月院」「建長寺」「鶴岡八幡宮」「長谷寺」「高徳院」「小町...

 

学生時代はTSUTAYAのレンタルでCD借りてリッピングして……を毎月繰り返していたけれど、社会人からはYouTubeを活用してる。

例えば「Aqua Music JP」チャンネルで毎週のように15分ぐらいのTop100のランキングを作成してくれていた。

ただし、2024年でなぜか配信が中止となっている。

他にも、多くの人が流行曲を集めたYouTubeも上げてくれてるが、殆どが本人の声じゃ無いから萎えてしまった。

だったら著作権違反のない範囲で自分で作ってみるかー。

同じコンセプトで2009年頃にサイトを作ったことがある。

仕組み的にはオリコンチャートからXMLを持ってきて、ランキングTop10のYouTubeのURLをGoogleから探し、埋め込みYouTubeを表示する。

数週間かけて作成したがUXが悪くいつの間にか使わなくなった。

同じコンセプトで優秀なサイトがあったし、そもそもオリコンのランキングが時代遅れ。

 

で、今年に入って偶然「YouTube music charts」というサイトを見つけた。

プレイリストも提供されてるので多くの人はこれで十分かもしれない。

でも僕はフルで聞くのではなくCDカウントダウンのようにサビだけを聞き流したい。

一曲3分×100曲なら300分(5時間)かかるので通勤中に聴き終わらないし「タイパ(タイムパフォーマンス)」重要。

だったら、「死ぬまでに作りたい100」にも入ってる念願のサイトを作ってみよう。残り99は知らないけれど。

Youtubeメドレーサイト構造説明

「YouTube music charts」はTop100のCSVを公開しておりYouTube URLも提供してくれてる。

まず上記「youtube-charts-top-songs-jp-weekly-yyyymmdd」をダウンロードする(邦楽の場合)。

それをJSで読み込み順番にYouTube再生をする。

 

 

最後にChatGPT-4o様より御神託ごしんたくたまわる

 

© 泡沫に神は微睡む/安田 のら/KADOKAWA

 
 

ほんとに ありがてぇ……ありがたいこった!

 

デザインまで全てをChatGPT様がやってくれる。

完成。

 

YouTube邦楽トップ100|サビだけメドレーで楽しむ最新ヒット
YouTubeで話題の邦楽トップ100を厳選!サビだけをつなげたメドレーで、最新ヒット曲を手軽に楽しめるページです。

少なくとも僕には、JavaScriptとCSSでこれだけの要件を短期間で満たす技術力はない。

実現機能と今後の拡張

連続部分再生だけでなく次のような機能がある。

  • [済] 曲を戻したり進めるボタン
  • [済] 任意の位置から再生開始(例:10番目からスタート)
  • [済] シーク時間の任意指定(例:30秒)
  • [済] レスポンシブデザイン対応
  • [済] 100曲の一覧表示
  • [済] 100曲再生後に1曲目から再度ループ再生
  • [済] サムネイル表示
  • [済] 上昇順 or 人気順 or 新曲順の切り替えトグルボタン
  • [済] サイドメニュークリックで曲ジャンプ
  • [済] 再生中の曲が視覚的に分かるようにサイドバー色付け
  • [済] 最大再生数の指定機能(例:50曲)
  • [済] 再生中の曲名がサイドバーの先頭に表示されるように自動スクロール
  • [済] 日本・米国・韓国の切り替えトグルボタン追加(邦楽、洋楽、K-POP)
  • [済] リリース日、作詞・作曲表示
  • [済] 過去ランキングの選択(履歴)

これでBraveブラウザを使えばバックグラウンド再生を実現してるので、聞き流しプレイヤーの出来上がり。

最後に未実装、気を付ける部分を記載しておく。

[済] 年齢制限が設けてある動画スキップ

YOASOBI「夜に駆ける」が「この動画には年齢制限が設けられており、YouTube でのみご視聴いただけます」と表示されて見れない。

このような場合には「onErrorイベント」を使用してエラーを検知し、次の動画に移るようにする。

[済] 手動スクロール中に自動で戻ってしまうのが地味にウザい

一日中利用してくれた方からのフィードバック。

これは自分で気づかなかった追加要件だった。ありがたい。

[未対応] 曲のタイトルとアーティスト名の読み上げ

曲と曲の間に帯域に応じて2秒から4秒の遅延が出てしまう。

ここで自動で読み上げてしまうのはどうだろうか?

CDカウントダウンのようなナレーションなら良いけど機械音だから逆に没入感を削ぎそうで未実施。

[未対応] 何の主題歌で使われたか?なぜ流行ってるか表示

「何の主題歌で利用されているか?」「なぜ、その曲が流行しているのか?」という情報を追加できれば嬉しい。

ただし、これはGemini等のAIを活用する他、Google等で自動検索して情報収集するしか無いかもしれない……。

※Geminiは最新情報を知らないので工夫が必要

[未対応] サビが聞き流せるようにする

本来はサビを聞きたい。

サビを抽出するには曲をダウンロードしてメルスペクトログラム等に変換して音声解析する必要がある。

音の機械学習に向けたデータ前処理(pythonによるフーリエ変換・スペクトログラム)
画像認識は専門だったけど、音声認識はよく知りません。「フーリエ変換」使うんでしょ?昔は計算式の勉強が必要だったけど、今はPythonのライブラリで一発変換なんじゃないの?ぐらい。時間もスキルも無いが、...

そんな重たい処理を自サーバーでやりたくないし、そもそもYouTubeはダウンロードを禁止している。

もし出来るのであれば、サビの開始時間と終了時間をデータベースやJSONファイルで管理すれば良い。

音楽の構成(Aメロ、サビ等)を自動で分割する。 - Qiita
はじめに人が音楽を聴くと、ここがサビだな、とか、ここから雰囲気変わったなとかを感じ取れるかと思います。それを機械的にできないかと思いやってみました。ただし、サビの部分を特定することまではできず、…

現在は下記の情報よりデフォルトで曲の長さの5分の1からスタートさせている。

曲の開始からサビまでの時間はどれくらいの長さが良いのか?
楽曲のサビというのは、作者が一番聴いてもらいたい部分かと思います。 近年では楽曲が視聴者の好みに合わなかったら、どんどんスキップされてしまうので、サビに行く前に離脱されてしまうことも多いかと。 そこで、サビまでの時間はどれくらいの長さが良い

おわりに

LLM で実装がおかしい部分が多々あった。

デバッグのためにログを仕込むだけでも間違った修正を行いオリジナルのコードを壊してしまう。

また Vue.js で作り変えたかったが、何度やっても正しく動かなかった。

とはいえ今やコーディングの世界では、「バイブコーディング」と呼ばれる手法が流行。もはや人の実装は不要。

話題のAIバイブコーディングとは--興味深い手法だが万人向けではない
コーディングの世界では、「バイブコーディング」と呼ばれる手法が新たなバズワードとなっている。この用語は、Andrej Karpathy氏が2月初旬に「X」(旧Twitter)に投稿したポストがきっかけとなって、多くの人が知るところとなった。

 

アクセス数は求めてない。自分が使うためのサイト。

多くの人はSpotifyやYouTube musicで既に間に合ってるだろう。

 

【過去作成したWebサービス】

タイトルとURLをコピーしました