Spotify API、Alteryx、Tableauで弊社の二次元社員「めそ子」がリリースした楽曲を徹底分析する #Alteryx #Tableau

はじめに

おはようございます。DI部@大阪オフィスの玉井です。

唐突ですが、先日、弊社の二次元社員である「めそ子」が歌手デビューし、アルバムをリリースしました。

■4月28日配信「虹色メソッド」 について デビューアルバム「虹色メソッド」では、音楽コンテストサービス「CREOFUGA( https://creofuga.net/ )」にて2018年10月より開催した「めそ子ンテスト」で募集した楽曲604曲の中から採用した6曲を収録。音楽クリエイターとのコラボレーションによって、「初代めそ子: 彩木あかり」と「2代目めそ子: 花咲ひさき」それぞれのテーマ曲2曲に加え、デュエット1曲、めそ子公式テーマソング(インスト)3曲の、計6曲の収録が実現しました。 アルバムは、iTunes等での配信に加え、2019年4月28日(日)に開催される、「音系・メディアミックス同人即売会: M3」にてサウンドカードにて頒布いたします。

最初は配信サービスに「配信先:iTunes、他ダウンロード、ストリーミングサービスにて」としか書かれていなかったので、今や音楽生活の8割をSpotifyに頼っている私では聴けないな…とか思っていたのですが、ある日Spotifyで検索してみたら、めそ子ーズがSpotifyで配信されてるではあーりませんか!

Spotifyで配信されている=APIから楽曲データが取得できる=楽曲が分析できる…ということで、今回は、弊社からデビューした音楽界の新星、めそ子ーズの楽曲を分析したいと思います。

先に今回の分析結果を載せておきます

これがめそ子ミュージックVizだ!!

※ダッシュボード遷移時のサイズ調整に失敗しておりますが、本エントリ内で全体画像も貼っておくので許してください。

分析を実施するための段取り

実施した環境

  • Windows 10 Pro(macOS VMware上)
    • Alteryx Designer 2019.1
    • Tableau Desktop 2019.1

楽曲要素データを取得する

まずはAlteryx Designerを使用して、Spotify APIから楽曲データを取得します。

SpotifyAPIからデータを取得する基本的な形は、実は下記エントリとほとんど同じです。

データによって若干異なるものの、ワークフローは大体下記の流れとなります。

  1. テキスト入力ツールでAPIのURLやパラメータ等を指定
  2. ダウンロードツールでGET
  3. JSONパースツールでパース
  4. クロスタブツールで行列入れ替え
  5. その他整形
  6. Hyper形式で出力

そして、今回のワークフローの全景がこちら。

アルバム内の楽曲データを取得する

楽曲データを取得するAPIは、別途楽曲IDなるものを投げる必要があります。今回は全部で6曲なので、手動で1つずつ調べてもいいんですけど、やっぱりどこかスマートではないので、アルバムを指定して、そのアルバム内の楽曲IDを一気に取得したいと思います。

使用するAPIはこちら。

アルバムIDを調べる

このAPIは、アルバムIDを指定する必要があります。アルバムIDに関しては、直接Spotifyで調べる必要があります。

該当アルバムを開いて、「Spotify URIをコピー」します。

spotify:album:19j8Za3wwIc4sQWYyGJwgr

これの19j8Za3wwIc4sQWYyGJwgrがアルバムのIDです。

ワークフロー

基本的には上述した「基本形」のワークフローです。フォーミュラツールでエンドポイントを最終的な形に整形したりしてますが、基本は中森明菜の時と変わりません。

こんな感じで取得できます。これのidが、後で必要となる楽曲のIDです。

取得した楽曲IDから各楽曲のデータを取得する

楽曲IDを取得できたら、それをもっていよいよ楽曲自体のデータを取得します。

「全6曲分を取得するということは、1曲ずつ処理を回さないといけないからバッチマクロかな…」と思っていたのですが、なんと、カンマ区切りで複数IDを一気に渡して、一括でデータを取得できるAPIがありました。これを使えば、今回はマクロを使う必要はありません。Spotifyさん最高。

使用するAPIはこちら。

ワークフローは上記のような感じです。パッと見て分かりづらいのは、前半下部のところだと思います。さきほども言った通り、このAPIへの楽曲IDの渡し方は「IDでカンマ区切りでずらずら並べるてそれを投げる」です。アルバム内の楽曲データを取得したときは、行毎に分かれているので、それを1レコードにまとめる必要があります。

IDをカンマ区切りで連結する

色々方法はあると思いますが、私はフォーミュラツールで全レコードに同じ値を付与。その値をもってクロスタブツールを使ってカンマ区切り連結をする…という方法をとりました。

上記のデータを、別途用意したAPIのエンドポイント(テキスト入力ツール)とフィールド付加ツールで合体してダウンロードツールに投げます。後の流れは今までと同じです。

要素データと先ほどの楽曲データを結合する

上記APIから返ってくるデータはこのような感じになってます(整形済)。

このデータだけだと、どのIDはなんという曲名なのかわからないため、先程取得したアルバム内楽曲データと結合しておきます。結合キーは楽曲IDでピッタリくっつけることができますね。

最後の処理

さて、Tableauで可視化するのにちょうどいい形のデータが出来上がったので、後はHyperで出力するだけ…と思いきや、まだ多少の処理がありますね。

これは、Tableauで行う、ある可視化の方法を行うために必要な処理となっています。詳細は後述!

可視化する前に、取得できるデータの意味を理解する

めそ子の楽曲を分析するためには、取得できるデータの意味を理解しなければいけません。公式ドキュメントに書かれている内容を理解します。

公式ドキュメント

楽曲の要素データの説明

これらはすべて0〜1で表されるデータです。

acousticness

ドキュメントによると「アコースティックであるかどうか」の度合いだそうです。アコースティックかどうかってどういう意味よ?

〔楽器が〕電子的に増幅しない、アコースティックの、アクースティックの

なるほど…?

danceability

テンポ、リズムの安定性、ビートの強さ、全体的な規則性などの音楽要素の組み合わせに基づいて、その楽曲がどれだけダンスに向いているかを0〜1で表します。

energy

その楽曲の激しさやアクティブさを表します。一般的には、エネルギッシュな楽曲ほど、テンポが速く、音の大きさや煩さが大きい傾向にあります(例えばデスメタルは大きく、クラシックは低くなる)。

instrumentalness

その名の通り、楽曲にボーカルが含まれているかどうかを表します。ドキュメントによれば、「Ooh」とか「Ah」みたいなものは楽器として扱われるようです。逆にラップや話し声(ポエトリーリーディングみたいなものを指していると思います)はボーカルとして扱われます。

liveness

その楽曲の録音中に視聴者が存在しているかどうかを表します。例えばライブ盤の曲とかで、観客がいるような場合は、この値が高くなります。

speechiness

その楽曲内に「話し言葉」が存在しているかどうかを表します。ドキュメントによれば、0.66を超えている楽曲は、完全に話し言葉だけで構成されており、0.33〜0.66の間は、ラップ等の、話し言葉と音楽が両方含まれている楽曲である可能性が高いとのことです。

valence

その楽曲のポジティブさを表します。1に近いほど幸福や陽気、陶酔といった感情が強い楽曲、0に近いほど悲しい、落ち込む、怒り、といった感情が強く出ている楽曲となります。

その他のデータ

  • key
  • mode
  • tempo
  • time_signature
  • loudness

これらのデータについては下記エントリで解説しています。

全6曲の楽曲要素データを可視化する

さて、データの取得が完了し、意味も理解したところで、いよいよViz作成に入っていきます。

普通のグラフを作ってもよかったのですが、今回は「めそ子」がテーマなので、ちょっとかわいい感じのVizにしたいと思いました。ということで、ちょっと凝ったグラフを作ってみます。

基本的には下記の丸パクリです!

danceabilityenergyといったデータは、0〜1の値をとるため、上記のような形で表現できると、か、かわいいかなって…思ったんです…。

このVizを実現するためのデータ前処理

詳細は割愛しますが、TableauでこのVizを作るためには、データをそれ専用に加工する必要があります。簡単に言うと、分析対象のデータと、下記のデータを、デカルト結合する必要があります(一つのレコードに対して、下記の4レコードがくっつく形)。

Tableauの凝ったVizというのは、得てしてこういうデータ加工が必要です。しかし、Alteryxがあれば、それも苦ではありません。実はAlteryx Communityにデカルト結合の記事(しかも日本語あり)があります。

これを参考にしたのが、前述した「最後の前処理」です。

フィールド付加ツールで、設定を「すべての付加を許可」にしておくと、総当たりでドドドッと結合できます。

デイジーチャートを作成する

ここからいよいよTableauでの作業に入りますが、先に言っておくと結構面倒です。ちなみに、手順は上記のリンクそのまんまなので割愛します。

ただし、上記リンクは、1つのメジャーを表現するケースとなっております。今回は複数のメジャーをすべてこのデイジーチャートにしたいので、そこだけ記載しておきます。

メジャーを直接記載する計算フィールドを量産する

デイジーチャートは多くの計算フィールドを作成する必要がありますが、その中で、可視化したいメジャーを直接記載するのはTC_Valueという計算フィールドです。また、そのTC_Valueを使用する計算フィールドとしてColorがあります。

可視化したいメジャーが1つだけなら、これらの計算フィールドも1つでいいですが、今回は複数のメジャーをすべてこの形で可視化するため、上記2つの計算フィールドを、可視化したいメジャーの数だけ作成します。

「1つのメジャー×6つの楽曲」を1シートして作成→メジャー分だけ量産

例えば、全6曲のdanceabilityを可視化したワークシートは下記の通りです。

書式設定等を設定した後、これを複製していき、energy版のワークシート…instrumentalnessのワークシート…という感じで量産してきます。

※ちなみに、ソートにtrack_numberを使用しています(曲順に並べたかったので)。

ワークシートをダッシュボードに合体する

量産したワークシートを、ダッシュボードとして1つにして、この部分は完成です。

完成形

その他

試聴できるビューを作ってみた

APIから取得できるデータにpreview_urlというものがあります。このURLはSpotifyの試聴URLでして、誰でも曲の試聴ができるものです、

ダッシュボードのURLアクションでこれを使えば、Viz上から試聴できるんじゃね?」ということで、実際に設置してみました。

Vizのトップページを作ってみた

2つのページができたので、ついでにTOPページを作って、楽曲データページと試聴ページに遷移するようにしました。Tableauの中では新しめの機能の「ボタン」を使ってます。

楽曲を分析してみる

ついにめそ子たちのデビューアルバムの曲のデータを可視化できました。ということで、データの内容を見ていきたいと思います。

アルバム全体的に

acousticnesslivenessspeechinessは全曲低めでした。今回は全曲にわたって打ち込み。アコギ一本弾き語りみたいな曲はありません。ラップや朗読などの話し言葉もほぼ無し、ましてやライブ盤というわけでもないため、このデータに違和感はありません。

曲別

虹色メソッド

弊社の紹介を兼ねた冒頭から、初代と2代目の自己紹介を兼ねた1番2番と続き、最後はめそ子ーズが揃って歌う明るいポップソングです。

energyvalenceが高めで、danceabilityも0.5程度あり、とてもポジティブな曲であることが、データからは伺えます。当然ながらspeechiness(冒頭で「クラスメソッド!」という掛け声はありますが)やlivenessは低めです。また、完全に歌なのでinstrumentalnessはゼロです。

元気を出したいときに聴きましょう。

Future Method ~Amazing World Symphony~

前曲とは打って変わって、クールでかっこいい感じの曲です(ちょこちょこダブステップっぽい?)(筆者は電子音楽系はかなり無知です)。

なんといっても、danceabilityがアルバム中一番高いのが最大の特徴。めそ子の曲で踊るならこの曲です(実際、間奏のところはすごくクラブっぽい)。また、energyもかなり高め!

カッコ良さによっているためか、valenceは0.3前後と低いところも面白いですね。

踊る時はこの曲にしましょう。

ガンバリマス宣言!

曲名通り、直球の励ましソングです。

その名の通り、valenceが0.91と、アルバム最高値ということで、超ポジティブな曲となっています。まさに「パワフルメソッド」なナンバーといえるでしょう。また、energyも高い!

この曲を含む、前半3曲はinstrumentalnessがゼロです。実際にも、前半3曲は歌モノなので、ちゃんと判定されてますね。

落ち込んだ時に聴きましょう。

MESOKO BEAT

ここからの3曲はインスト(めそ子公式テーマソング)になります。

この曲もクールな印象を受けますが、6曲中唯一マイナー(短調)というデータになっています。そこまで露骨には感じませんが、Spotifyではそういうことということで…。

その割にはvalenceがそこそこ高く、またenergyは6曲中1位です。テンポも速めだからでしょうか…?

シナモン・シュガー・メソッド・ワークス

MESOKO BEATよりポップな印象を受ける曲となってますね。energyは他のインスト曲より低めとなっています(とはいえ、0.7なので、全体的には高め)。valenceも0.3と低めです。聴いた印象ではもうちょいあってもよさそうな感じではあります。

2人のめそ子のテーマ

(あくまで個人的な感想ですが)ポップさとカッコ良さが半々ある感じを受けるインストです。

energyがMESOKO BEATと同じくらい高いです。また、なぜかinstrumentalnessがインスト3曲中の中ではブッチギリで高いです。後半3曲は全部インストなんですが、なぜこんなに差が出るのでしょうか?

おわりに

めそ子ーズのデビューアルバムは最高ということがわかりましたね。みなさん、めそ子ーズをヘビロテしましょう。