Spotify APIで乃木坂46を分析したい

#はじめに
Spotify APIを使えば好きなアーティストや楽曲の様々な情報を取得できます。
今回は乃木坂46の分析に挑戦していきたいと思います。

##参考
Spotify APIで好きなアーティストの繋がりを可視化してディグる
https://blog.aidemy.net/entry/2018/08/31/142408

Spotipyのドキュメント（spotipyはSpotify APIをpythonで使用するためのライブラリ）
https://spotipy.readthedocs.io/en/latest/#

Spotify APIのリファレンス
https://developer.spotify.com/documentation/web-api/reference-beta/

##Python使用環境
・spotipy             2.4.4     
・numpy               1.15.4    
・networkx            2.3       
・matplotlib          3.0.2     
・numpy               1.15.4    

# Spotify APIの準備
Spotify APIを使用する準備を行います。
下記サイトからSpotifyアカウントを登録し、サイトの指示に沿って進めると、
client_idとclient_secretを取得することができます。

https://developer.spotify.com/dashboard/login

また、ライブラリのspotipyはpipでインストール可能です。

```
$ pip install spotipy
```

下記でspotipyを使用する準備は完了です。

```Python

client_id = 'ここに自分のclient_idを記載'
client_secret = 'ここに自分のsecret_idを記載'
client_credentials_manager = spotipy.oauth2.SpotifyClientCredentials(client_id, client_secret)
spotipy.Spotify(client_credentials_manager=client_credentials_manager)
spotify = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
```

# Spotify APIを使う

##アーティストのIDを検索

各アーティストはそれぞれ固有のIDをもっており、それらに様々な情報が紐づいています。
乃木坂46の固有IDを検索してみます。
※アーティスト名をローマ字で検索しないと基本的には引っかからないので注意

```Python

name = 'Nogizaka46'

nogi_uri = spotify.search(q='artist:' + name, type='artist')['artists']['items'][0]['uri']
print(nogi_uri)
```

するとこのような感じでIDを出力することができます。

```
spotify:artist:08lN7bm4Etec8ETFxaTUmq
```

##アーティストの情報を確認
下記でアーティストの情報を確認することができます。

```Python

print(spotify.artist(nogi_uri))
```

下記が出力になります。
**注目すべき指標として「popularity」があります。0から100の値でそのアーティストの人気度を表します。**アルバムや各楽曲にも「popularity」という指標があり、アーティストの人気は各楽曲の人気度から計算されているようです。各楽曲の人気度は、そのトータルの再生回数とそれらの再生がどれだけ最近になされたかで計算していると記載がありました。

```

{'external_urls': {'spotify': 'https://open.spotify.com/artist/08lN7bm4Etec8ETFxaTUmq'},
 'followers': {'href': None, 'total': 434001},
 'genres': ['anime', 'j-idol', 'j-pop', 'j-pop girl group'],
 'href': 'https://api.spotify.com/v1/artists/08lN7bm4Etec8ETFxaTUmq',
 'id': '08lN7bm4Etec8ETFxaTUmq',
 'images': [{'height': 640,
   'url': 'https://i.scdn.co/image/68ed81ea287ea8a6f677c63e86b54ef847401876',
   'width': 640},
  {'height': 320,
   'url': 'https://i.scdn.co/image/f1ca2ed56ea2e901f05e2284d6cb50fb697b99e1',
   'width': 320},
  {'height': 160,
   'url': 'https://i.scdn.co/image/5956f4b68c57ed8d2cac2b5467a0e4066c83ad0b',
   'width': 160}],
 'name': 'Nogizaka46',
 'popularity': 65,
 'type': 'artist',
 'uri': 'spotify:artist:08lN7bm4Etec8ETFxaTUmq'}
```

乃木坂46の人気度を他と比較してみましょう。
全坂道・48グループのSpotify上での人気を表にしてみました。
参考として日本のトップ50楽曲常連アーティストの、あいみょんやback number、菅田将暉も入れています。

| グループ名       | popularity     |   
|:---------------|:-------------|
|乃木坂46 | 65 |
|欅坂46| 60 |
|日向坂46| 51 |
|AKB48| 54 | 
|SKE48| 37 |  
|NMB48| 43 | 
|HKT48| 35 |  
|NGT48| 29 |  
|STU48| 27 |  
|あいみょん| 71 |  
|菅田将暉| 64 |  
|back number| 68 |  
※（2019年８月17日現在の数値です。）

坂道グループの勢いが見て取れます。**乃木坂46と欅坂46のSpotify上での人気は既にAKB48を超えており、日向坂46も肉薄していることがわかりますね。**また、あいみょんやback numberの人気度を見ると日本でのアーティスト人気トップ層で大体「popularity」が70前後なんだとわかります。ちなみに、エド・シーランの「popularity」は100でした。

##関連アーティストの検索
Spotify APIには指定のアーティストの関連アーティストを呼び出してくれる機能があります。
リファレンスを読む限りだとSpotifyユーザーの音楽再生履歴に基づいて（そのアーティストの楽曲を聞いている人は他にどんな曲をきいているかで）類似性を測っているようです。
乃木坂46の関連アーティストを確認してみます。

```Python

for i in spotify.artist_related_artists(nogi_uri)['artists']:
    related_artist.append([i['name'], i['uri'].split(':')[2]])
    print(i['name'])
```
出力がこちら

```
miwa
Kumi Koda
JUJU
Shota Shimizu
Mika Nakashima
Miliyah
Chris Hart
SEKAI NO OWARI
Leo Ieiri
CHiCO with HoneyWorks
Flower
chay
Keyakizaka46
FUNKY MONKEY BABYS
=LOVE
NGT48
HY
Shiggy Jr.
AKB48
ayaka
```
乃木坂46の関連アーティストにmiwaやJUJU、FUNKY MONKEY BABYSなど、
J-POPのアーティストが多く含まれているのことがわかります。
実はこれは、他のグループの関連アーティストと比較しても非常に特徴的です。
AKB48の関連アーティストをみてみましょう。

```
Nogizaka46
SKE48
NGT48
Tomomi Itano
Mayu Watanabe
=LOVE
ノースリーブス
NMB48
Atsuko Maeda
山本彩
Momoiro Clover Z
Miyuki Watanabe
Keyakizaka46
STU48
HKT48
Leo Ieiri
French Kiss
miwa
Kumi Koda
SEKAI NO OWARI
```

AKB48の関連アーティストには、多くの他のアイドルグループが含まれており、実に15/20がアイドルグループです。この傾向は他のアイドルグループの関連アーティストも同様です。
**楽曲をよく聴くメインユーザー群がアイドルファン層のみに留まっているのか、それとも他の層にもリーチできているのか、そこの差が出ていると考えられます。**
こう考えると、乃木坂46は既にアイドルファン層を超えて広く浸透しつつあるアイドルグループであるといえるのではないでしょうか。


#Next
Spofity APIでは楽曲毎に特徴を数値化した値を呼び出すことができます。
こちらを用いた楽曲分析や、アーティスト関係図の描画にも挑戦していきます。