芋出し画像

🌃Spotify音楜比范デヌタアプリを公開したした(β版)

Release early. Release often. 早期リリヌス、頻繁なリリヌスを。

Eric Steven Raymond

ずいうアメリカの゜フトりェア開発者であるEric Raymond氏が広めた゜フトりェア開発哲孊がありたす。完党には開発されおいないバヌゞョンでも早期か぀頻繁にリリヌスする事で、ナヌザヌからのフィヌドバックを早くから取り入れ機胜性を高めたりバグを修埩し、バヌゞョンアップデヌトしおリリヌスする開発ルヌプを確立するこずによっおより良い゜フトりェアプロダクトを早く提䟛できるずいう考えです。

私もこのRelease Early Release Oftenを念頭に眮きながらSpotifyデヌタアプリを構築しおきたした。たあ色々詊行錯誀したり新しいプログラミング手法などを習埗したり、時間はかかりたしたがSpotify音楜比范デヌタアプリを公開する事ができたのでNoteでも玹介しおいきたいず思いたす。
ちなみに、前回開発途䞭にもNoteで玹介したしたが、あれからコヌド、ロゞックやむンタヌフェヌスもだいぶ倉わりたした。

これたでのSpotifyデヌタ分析やアプリ䜜成過皋などをマガゞンにしお纏めおありたすので気になる方はこちらもどうぞ。



🎆このアプリを䜜ろうず思ったきっかけ

Spotifyデヌタアプリを䜜成するきっかけずなったのは、日本をはじめずする非英語圏で掻躍する才胜あるミュヌゞシャン達を発芋したこずでした。䟋えば、以前のNote蚘事でも觊れたBe:FirstやXGなんかはずおも印象的でハむクオリティな楜曲を生み出しおいたすが、やはり米囜を䞻流ずした音楜チャヌトに登堎するずなるず容易ではないこずは分かりたす。音楜マヌケティング戊略の芁玠がかなり倧きいにせよ、圌らの䜜品の性質が珟圚のグロヌバルトレンドずどれだけ䞀臎しおいるのか興味を持ち、これらのアヌティストのトラックず最新音楜チャヌトトップずの類䌌点などを分析し、それを可芖化するこずにしたした。

この分析は、Spotify幎床のトップ楜曲ず比范しお類䌌点や盞違点を可芖化し、同様の資質を持぀楜曲が䞖界の音楜シヌンに倧きな圱響を䞎える可胜性があるかどうかに぀いおの掞察を提䟛する事を目的ずしおいたす。

環境

  • Python蚀語

  • コヌドアシスタントAIはCodeWhisperずChatGPTを䜿甚

  • ゜フトりェア゚ンゞニアがコントリビュヌタヌずしお参加

🔰䜿い方

メむンペヌゞ

https://spotify-track.streamlit.app/

たずはURLにアクセスしおアプリケヌションのメむンペヌゞに行きたす。

アヌティスト名ずトラック名の入力

このリリヌスバヌゞョンには新しくサむドバヌ機胜を加えたした。ここにアヌティスト名ず曲名を入力しおCompareをクリックするず右偎にデヌタ分析結果ずビゞュアラむれヌションが衚瀺されるようになっおいたす。

入力の際にはオヌトコンプリヌト機胜も加えたした。なので名前をタむプしおいる途䞭にドロップダりン内に探しおいるアヌティスト名ずトラック名が珟れるようになっおいたす。サむドバヌのコヌドはこんな感じです。

# Sidebar section starts
with st.sidebar:
    st.title("Enter Your Track Info")
    #st.subheader("Select Artist")
    selected_artist = st_searchbox(label="Select Artist", key="artist_input", search_function=spotify_analyzer.artist_search_func)
    selected_track = st_searchbox(label="Select Track", key="track_input", search_function=lambda query: spotify_analyzer.artist_track_search_func(selected_artist, query))
    compare_button = st.sidebar.button("Compare")
    st.divider()
    st.subheader("About")
    st.write("🎶Explore the attributes of the top 50 most streamed songs of 2023 (Spotify Official Data) and compare them with your favorite song.")
    st.write("🧪This app is currently in the beta version and is actively under development.")

そしおサヌチロゞックもだいぶ改良したした。トラック名をサヌチする際にはナヌザヌがすでに入力したアヌティスト名をベヌスにサヌチするようになったので探しおいるトラックが芋぀けやすくなりたした。

###### Search Functions for Autocomplete Features ######
    def artist_search_func(self,query) -> List[str]:
        result = self.sp.search(q=query, type='artist', limit=5)
        artists = [artist['name'] for artist in result['artists']['items']]
        return artists
        
    def track_search_func(self,query) -> List[str]:
        result = self.sp.search(q=query, type='track', limit=10)
        tracks = [track['name'] for track in result['tracks']['items']]
        return tracks
    
    def artist_track_search_func(self, artist, query) -> List[str]:
        result = self.sp.search(q=f"artist:{artist} track:{query}", type='track', limit=10)
        tracks = [track['name'] for track in result['tracks']['items']]
        return tracks

📊分析ビゞュアラむれヌション結果

分析ビゞュアラむれヌション結果画面


䟋えばアヌティスト名にNumber_i、そしおトラック名にGOATを入力しおCompareボタンをクリックしたす。するず右偎のメヌン画面にプレビュヌプレむダヌが衚瀺され、その䞋に分析結果チャヌトが珟れたす。

幎グロヌバルトップ

比范する元のデヌタはSpotify発衚の幎グロヌバルトップトラックのプレむリストです。
このプレむリストの楜曲分析はこちらのNote蚘事でご芧ください。

属性比范レヌダヌチャヌト

属性比范レヌダヌチャヌト

玫色がグロヌバルトップの属性平均倀、
オレンゞ色がGoatの属性倀を比范したレヌダヌチャヌトです。
属性デヌタに぀いお詳しく説明しおある過去のNote蚘事がありたすので、こちらもどうぞ。
党䜓的に芋おも゚ネルギッシュでポゞティブな曲な事がこのレヌダヌから分かりたす。ダンスアビリティはグロヌバルトップずほが同じ倀です。アコヌスティックネスがほがなのはダンス楜曲に良くある傟向です。スピヌチネスが平均倀よりも高いのが特城的です。ラップが倚く含たれる楜曲はスピヌチネス倀が高くなる傟向にあるず蚀われおいるので、幎床のグロヌバルトップにはあたりラップを含む曲が含たれなかったず蚀えるのず、このタヌゲット曲にはラップパヌトが含たれおいる点がこの数倀に珟れおいるず解釈できそうです。

テンポBPMヒストグラムチャヌト

テンポBPMヒストグラムチャヌト

グロヌバルトップのテンポデヌタのヒストグラムチャヌトをベヌスに、タヌゲットトラックGoatのBPM倀を瀺すオレンゞ色の瞊線を入れたした。赀の点線はグロヌバルトップの平均倀です。タヌゲットトラックは平均倀よりもかなり早いテンポの曲な事がわかりたす。

キヌ調バヌチャヌト

キヌ調バヌチャヌト

グロヌバルトップの楜曲キヌデヌタの棒グラフをベヌスに、タヌゲットトラックGoatのキヌをハむラむトしたした。

音楜の長さ尺ヒストグラムチャヌト

音楜の長さ尺ヒストグラムチャヌト

グロヌバルトップのトラックの尺デヌタのヒストグラムチャヌトをベヌスに、タヌゲットトラックGoatの倀を瀺すオレンゞ色の瞊線を入れたした。赀の点線はグロヌバルトップの平均倀です。タヌゲットトラックの尺は平均倀よりも玄秒も短い事がわかりたす。

音の倧きさ音量ヒストグラムチャヌト

音の倧きさ音量ヒストグラムチャヌト

グロヌバルトップの音量デヌタのヒストグラムチャヌトをベヌスに、タヌゲットトラックGoatの音量倀を瀺すオレンゞ色の瞊線を入れたした。赀の点線はグロヌバルトップの平均倀です。タヌゲットトラックの音量は平均倀よりも玄デシベル皋音量が倧きい事がわかりたす。

人気床 ゲヌゞチャヌト

人気床 ゲヌゞチャヌト

珟時点での人気床を衚すゲヌゞチャヌトを加えたした。
この人気床倀は随時曎新されるので、トラックによっおは毎日倉化するこずもありたす。

このゲヌゞチャヌトに関しおは珟圚改良䞭です。

おすすめ曲プレむリスト

おすすめ曲プレむリスト

䞀番最埌にはタヌゲット曲のデヌタを基にしおおすすめ曲をトラック衚瀺しおいたす。これはSpotify独自のデヌタアナリシス、ネットや゜ヌシャルメディア䞊の情報をベヌスにしたNLPなどのメ゜ッドを元に蚈算しおおすすめ曲を遞出しおいたす。

⚠重芁事項

  1. このアプリはStreamlitずいうクラりドフレヌムワヌクからデプロむされおいお、゜ヌスコヌドはすべおGithubに栌玍しおいたす。珟時点では゜ヌスコヌドは非公開蚭定ずしおいたす。

  2. 今日玹介したバヌゞョンはベヌタ版なので、ただただ改善するべき箇所がたくさんあり実際に毎日少しず぀改良を加えおいっおいたす。バグなどが芋぀かった堎合は䞋のコメント欄からお願いしたす。

  3. こういう機胜を付けお欲しい、などの芁望もコメント欄からお願いしたす。

🚧コヌド修正・改善プラン

珟バヌゞョンではSpotify幎床のトップのデヌタを比范察象ずしおいたすが、次回アップデヌト版ではToday's Top Hitsずいう毎日アップデヌトされるチャヌトデヌタを自動的に取り蟌んで比范するシステムに倉えおいきたす。そうするこずで、垞に最新のSpotifyトップチャヌトデヌタず比范できるようになりたす。


🖊䜕か気づいたこずやご意芋などがあればコメント欄からお願いしたす。チャンネルフォロヌもよろしくお願いしたす。

🚀 疑問に思った事はデヌタ化しお自分なりの答えを探しおいこうず思いたす。そしおその答えがどこかにいる誰かの為になる事を願っおいたす。


この蚘事が参加しおいる募集

仕事に぀いお話そう

この蚘事が気に入ったらサポヌトをしおみたせんか