5日と20日は歌詞と遊ぼう。

歌詞を読み、統計したりしています。

#2016年ボカロ10選 を集計してみたよ!

こんにちは!

いきなりですが自己紹介します。

わたしはハコサトといいます。音楽の歌詞を見るのが好きです♪ 最近好きな作詞家さんは秋元康さんです。

さて去年こんな記事を書いたところ、たくさんのボカロリスナーさんに見ていただきました♪

hacosato.hatenablog.com

知らない曲たくさんあって、世の中はすごく広いなぁって実感したのでした。

ぜんぜん接点のなかったボカロクラスタのみなさんに声かけていただけたのもうれしかったです!

それもなんと1年も前。今年もその季節がやってきました。

というわけで、今年も「#2016年ボカロ10選」を集計してみました!

よろしくお願いします!!

(注意:この記事は記事にある範囲内で誠実に集計しましたが、どうぞおあそびとして受け取ってください)

Twitterのボカロクラスタのみなさんの間では、毎年年末(か年始)に、年号の付いたハッシュタグで、好きな曲を10曲紹介する文化があります。

今年なら「#2016年ボカロ10選」です。

それを追いかけていくと今年クラスタのみなさんの心をつかんだ曲たちがわかってきます。

でも、みんなてんでに紹介しているので、(紹介文のものすごい熱量はうんと味わいがいがあるとはいっても、)ほんとうにボカロクラスタのみなさんに人気の曲がどれなのかはわかりません。

こんなときにはどうしよう…。

…そうだ! 集計すればいいんだ!

というわけで、安直なわたしは、今年も集計業務にいそしんだのでした。

なお、集計業務に使うツールはすべて一新しました! これで来年も(あるていど)使い回せるはず!

いまから段取りをご紹介しますが、結果だけ見たい向きはどうぞ気兼ねなくスクロールしてください♪

だんどり!!

  • ステップ1.ツイートを収集
  • ステップ2.リンクを集める
  • ステップ3.数を数える
  • ステップ4.表にする

ステップ1.ツイートを収集

前回は、アタマのいい収集はいっさいせず、力で解決したのですが、今回はAPIを活用しました。
Tweepyを使ってTwitter REST APIを活用しています。

Twitterの検索、古いツイートはヒットしなくなっちゃいますが、今回は最大でも直近1ヶ月程度ツイートしか収集しないため、とくに弊害はないと判断しました。
3〜7日程度の間隔を開けながら、数回にわたってツイートを収集して、ローカルにテキストファイルとして保存しました。

12月25日にも収集してる履歴がある…。わたしはなにをしていたんだろう……。

合計951ツイートを収集しました。これは前回(345ツイート)の3倍近くです!

ステップ2.リンクを集める

今回も前回と同様、ニコニコ動画へのリンクだけを集計対象としました。
ニコニコ動画へのリンクは、ここでは2種類あります。

  • 動画への直接のリンク(「sm〜(数字)」が含まれる)
  • マイリストへのリンク(「mylist」が含まれる)

ここではどちらも対象としました。

短縮URLを展開した上で、正規表現で検索しています。

ハッシュタグの名前「#2016年ボカロ10選」ですが、数は10を超えても特に制限しませんでした。

ステップ3.数を数える

今回は、前回と少し方針を変えました。

  • 同じひとが複数回Twitterで言及している曲は、1票。
  • 違うひとが同じ曲にTwitterで言及していたら、もちろん別の票。
  • 同じひとが複数回Twitterで言及しているマイリストは、1票。
  • 別のひとが同じマイリストにTwitterで言及していたら、数えない。

こうしました。
たったひとつのマイリストのうちのひとつとして載っているだけの曲、マイリストURLがTwitterで言及されるたびにカウントされると実感と合わないと考えたのでした。

ステップ2と3はまとめてPythonさんで処理しました(前回はRubyちゃんなので言語がちがう)。

ステップ4.表にする

こうして今回も無事に集計することができました。


途中で泣いたりしたこともあったけど、それもいまはよい思い出です!!

異なり曲数は872曲、総票数は1189票でした。

票数が3以上の曲をまとめました。ではどうぞ!

票数 投稿者 タイトル 再生数
15 saiB 【初音ミク】パイロキネシス【オリジナル曲】 102004
10 カルロス袴田 【ミクウナ】ちがう!!!【オリジナル曲】 203280
8 Neru [MV] 脱法ロック / Neru feat. 鏡音レン 1702369
7 バルーン シャルル/flower 579844
7 しじま 初音ミクは死ぬことにした/初音ミク 52942
6 りゅーりゅー 【初音ミク】Birthday【オリジナル】 22446
6 鈴鳴家 フリーはフリーダム 13370
6 koyori 【初音ミク】「月を探して」【オリジナル】 68674
6 小菅こんにゃく 【初音ミク】六月の君は。【オリジナル曲】 13170
6 koyori 【flower】「magic city」【オリジナル】 242459
5 ナユタン星人 エイリアンエイリアン / 初音ミク 1912640
5 yeahyoutoo 【daina,dex】 but the sky is blue 1486
5 八王子P 【初音ミク】気まぐれメルシィ【オリジナル曲+PV】 448149
5 EZFG 【Lily】デツアーツアー【オリジナル曲】 38184
4 みきとP 少女ふぜゐ /GUMIver. 84432
4 松傘 【MV】煙の殺意 6853
4 ハヤシケイ / KEI 「きみがすき」 - KEI feat.VOCALOID Fukase 38428
4 ウインディー 【鏡音リン】 遠くの街にいる君へ 【オリジナル】 601
4 ピノキオピー 【初音ミク】すきなことだけでいいです【オリジナルPV】 1105293
4 ニックネーム GUMI 「/93」 3005
4 みきとP Tears River/初音ミク 45400
4 ぽて 果てにはハテナ/鏡音リン 19511
4 ハヤブサ 【初音ミク】星屑オーケストラ【オリジナル曲PV】 205278
4 稲葉曇 歌愛ユキ 『クーラーガール』 38652
4 きくお 【ミクオリジナル曲PV】光よ【きくお】 170534
4 23.exe Shelter - ft.初音ミク 27882
4 稲葉曇 歌愛ユキ 『ループスピナ』 32647
4 Haniwa 虚しいだけだよ。 / 結月ゆかり及び初音ミク 14961
4 松傘 カワイイラップショー/でんの子Pと松傘 10186
4 12uck 蛍が飛んだ/滲音かこい 6196
4 ポリスピカデリー 【闇音レンリ】Sugar Guitar【オリジナル】 91766
4 ryo 【初音ミク】 罪の名前 1096802
4 Jille. 【GUMI】Winter Fantom/Jille.Starz☆ 1482
4 ΩBAKE ノ・ノ・ディスコ / 闇音レンリ 3961
4 ナユタン星人 惑星ループ / 初音ミク 451322
4 ein シュガー・タンバリン / IA(ein) 3491
3 前略 【GUMI】ゼロの国 【おりじなる】 3078
3 mayrock 【重音テト】季節性アブストラクト 9129
3 Clean Tears 【初音ミク V3】 旅の終わり 【オリジナル曲】 21698
3 tilt 【tilt×百舌谷】夜明け前のレゾナンス【オリジナルMV】 66880
3 halyosy 【KAITO】あったかいと【祝10周年】 90639
3 Bau 【Rana】 Tramonto 【オリジナル】 by Bau 558
3 有機 lili./flower 95292
3 ピノキオピー 【初音ミク】きみも悪い人でよかった【オリジナルPV】 472101
3 こんにちは谷田さん 【鏡音リン】芥の部屋は錆色に沈む/こんにちは谷田さん 85550
3 はるまきごはん 銀河録 / 初音ミク 191104
3 稲葉曇 歌愛ユキ 『秘密音楽』 27229
3 YASUHIRO(康寛) 【IA】踊れオーケストラ【オリジナル曲】 274842
3 しめさば 【重音テト・雪歌ユフ】 ワールドミュージック 【オリジナルMV】 21899
3 八王子P 【初音ミク】Hand in Hand (八王子P Remix)【Remix】 93666
3 Mwk / みわく 【初音ミク】Damnation【オリジナル】 9961
3 Task キドアイラク / 初音ミク GUMI 303384
3 梨本うい 【初音ミク】クソみたいなJ-POP【オリジナル曲】 69455
3 5u5h1 六月の空蝉 / 初音ミク 44294
3 ナユタン星人 飛行少女 / 初音ミク 531848
3 和田たけあき 【音街ウナの】 キライ・キライ・ジガヒダイ! 744966
3 かぴるす 【初音ミク】Rootage【オリジナル曲】 3284
3 ぬゆり フラジール / GUMI 356572
3 ashcolor 初音ミクオリジナル曲『world's beginning』 2886
3 yamada ライカ/初音ミク 79979
3 Torero 【VOCARAP】Supernova 【Torero】 25902
3 HATOKO/窓助 【滲音かこい】ギブミーハート【オリジナル曲】 2893
3 (「・ω・)「 【初音ミク】スーパーハイ!【オリジナル】 28437
3 Haniwa 宗教に犯されているのではないか。 / 結月ゆかり 40661
3 大丈夫P 【初音ミク】おれの闘病日記【オリジナルPV】【VTR】 28949
3 Neru [MV] 捨て子のステラ / Neru & z'5 feat. 鏡音リン 216829
3 DECO*27 【初音ミク】ゴーストルール【オリジナル曲】 3552973
3 ポリスピカデリー 【闇音レンリ】 曖昧さ回避 【オリジナル】 350573
3 勝也 雨ときどき虹 4032
3 カルロス袴田 【ミク】ぼくらのディメンション【ウナ】 50006
3 ポリスピカデリー 【闇音レンリ】Cynic【オリジナル】 453517
3 164 嫌われ者の詩/164 feat.GUMI 134907
3 ムシぴ MV「色彩電気」ムシぴ × 初音ミク 6859
3 みやけ ラブ&デストロイ - GUMI 79139
3 amahisa 縁/結月ゆかり 3200

(いかりゃく!)

というわけで、今回一番票を集めたのは、saiB『パイロキネシス』でした!

わたしは知らなかった曲です…。世界はあいかわらず広い…。

聴いてみるとコード進行もメロディも拍子も予想と少しちがう風に動くのに、それなのに、なんかぜんぜん不愉快な感じが出なくて、っていうか逆にすっごく気持ちいいですね〜〜!!


わたしがボカロクラスタのみなさん好きそう!って思ってたバルーン『シャルル』は4番めでした。

すごくいいの! ボカロ感うすいよね、おしゃれなJ-POPっぽさあるよね。

ご本人歌唱Ver.もめっちゃかっこいいから聴いてほしい!! バルーンさんもっとたくさん歌ってくれないかな…。


話題を少し変えて、ランクインした中で一番再生数が多かったのはDECO*27『ゴーストルール』でした。

この曲は2016年のボカロ界のトレンドをがんがん更新していったバケモノです(ゴーストだけに!)。

たくさんおしゃべりしたいことがあるのですが、この曲の音韻については前に文章を書いたことがあるのでとりま読んでほしいです!
hacosato.hatenablog.com

おまけ

投稿者別でも集計とってみました!
こういう結果でしたよ♪

票数 投稿者
16 稲葉曇
15 saiB
15 カルロス袴田
14 ナユタン星人
13 バルーン
12 koyori
12 八王子P
12 みきとP
12 ポリスピカデリー
11 Neru
10 松傘
10 ピノキオピー
9 DECO*27
9 しじま
9 Clean Tears
8 みやけ
8 Haniwa
8 鈴鳴家
8 ぽて
8 かぴるす
7 はるまきごはん
7 ハヤブサ
7 EZFG
7 小菅こんにゃく
6 23.exe
6 りゅーりゅー
6 anomimi
6 こんにちは谷田さん
5 ein
5 mayrock
5 ΩBAKE
5 きくお
5 岩見陸/ナナホシ管弦楽団
5 Orangestar
5 勝也
5 HaTa
5 \*Luna
5 さまぐら
5 Mwk / みわく
5 yeahyoutoo
5 (「・ω・)「
4 とおる
4 mint*(薄荷キャンディP)
4 12uck
4 よの
4 クロワッサンシカゴ
4 ムシぴ
4 たま
4 ryo
4 ウインディー
4 ニックネーム
4 しめさば
4 nowhere man
4 瀬名航
4 ねこむら(cat nap)
4 YASUHIRO(康寛)
4 talaw
4 nadauyu
4 キノシタ
4 和田たけあき
4 Bau
4 Jille.
4 samayuzame
4 tilt
4 名無し
4 ぴぼ
4 有機
4 Task
4 ハヤシケイ / KEI
3 ぐらんびあ
3 HATOKO/窓助
3 ねじ式
3 ぬゆり
3 regulus
3 Bernis
3 廻転楕円体
3 れるりり
3 なぎさ
3 コトバ*ユキ(archuk)
3 うぽつ絶対殺すマン
3 青屋夏生(アオヤナツキ)
3 amahisa
3 おあ
3 NIYMORIY
3 daniwell
3 Daphnis
3 田中 尾為
3 thommofonia
3 nanami
3 halyosy
3 RUBY-CATMAN
3 n-buna
3 あえる
3 mie
3 物煎餅
3 はるふり
3 ジグ
3 大丈夫P
3 5u5h1
3 前略
3 Torero
3 土山時雨
3 tekalu
3 164
3 AVTechNO!
3 ashcolor
3 雄之助
3 平田義久
3 鼻そうめんP
3 WAHIKO
3 梨本うい
3 Omoi
3 yamada

(いかりゃく!)


1位は稲葉曇さんでした。はじめて曲聴いた! これはアレだ、高校の文化祭や大学の学園祭で、教室の一角から流れてるタイプの音楽じゃん!!
4曲に分かれて幅広い層で票を獲得しました。

同率2位はsaiBさんとカルロス袴田さん。このおふたりは割と一点突破で人気を集めているので、今回の上位層は人気の傾向がちがうとわかりますね♪

おまけ2

今回も集計に使ったPythonスクリプトを公開しておきます。
こんなでよければ、追試などにお役立てください♪

Twitterからツイートを収集してテキストファイルに保存。

>|python|
import tweepy

CONSUMER_KEY = 'わわわ〜〜'
CONSUMER_SECRET = 'わわわ〜〜'
ACCESS_TOKEN = 'わわわ〜〜'
ACCESS_TOKEN_SECRET = 'わわわ〜〜'

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)
with open('パスを入れる.txt','a') as fout:
for tweet in tweepy.Cursor(api.search, q='#2016年ボカロ10選').items():
print({"id":tweet.id, "user_id":tweet.user.id, "screen_name":tweet.user.screen_name, "text":tweet.text}, file = fout)

|

テキストファイルを読み込んで集計して表示。

import re
import json
import feedparser
from urllib.request import urlopen
from collections import defaultdict
from bs4 import BeautifulSoup as soup
import time

# リストから重複を取り除いてリストを返す。
def uniqlist(li):
    uniqed = []
    for x in li:
        if x not in uniqed:
            uniqed.append(x)
    return uniqed

def getnicoinfo(url, attr):
    from urllib.request import urlopen
    from bs4 import BeautifulSoup as soup
    try:
        url = "http://ext.nicovideo.jp/api/getthumbinfo/" + url.split("/")[-1]
        return soup(urlopen(url), "lxml").find(attr).string
    except:
        return url

# 短縮されたURLを元に戻す
def expandurl(url):
    from urllib.request import urlopen
    try:
        expandedurl = urlopen(url).geturl()
        if url == expandedurl:
            return url
        else:
            return expandurl(expandedurl)
    except:
        return url
    
# 時間を計測
start = time.time()

# 事前にテキストファイルを加工しておく。
# シングルクオートをダブルクオートに変更し、アポストロフィを手動で検索して戻す(world'sっていうところ)。

with open('パスを入れる.txt','r') as fout:
    tweets2json = json.loads(fout.read())
# 重複するツイートがあるので、それをなくす。
uniqtweets = uniqlist(tweets2json)

# 短縮されたURLを元に戻しつつ、TwitterユーザーIDと動画URLだけの辞書のリスト(urllist)にする。
smlist = []
mylistlist = []
for x in uniqtweets:
    try:
        urltext = expandurl(re.search(r"(https?://\S+)", x["text"]).group())
    except:
        urltext = "none"
    
# URLがマイリストだったら、mylistlistにURLをappend
    if re.search(r"mylist", urltext):
        mylistlist.append(urltext)
# URLがマイリストでなかったら(動画だったら)、ツイートした人の名前とURLを辞書にしてappend
    else:
        smlist.append({"screen_name": x["screen_name"], "url":urltext})

# smlistから重複をなくす。同じひとが複数回同じ曲をツイートしたのが1カウントになる。
urllist = [x["url"] for x in uniqlist(smlist)]

# mylistlistから重複をなくす。ちがうひとが同じマイリストをツイートしたのが1カウントになる。
mylistlist = uniqlist(mylistlist)
for urltext in mylistlist:
    urltext = urltext + "?rss=2.0&lang=ja-jp"
    #         RSSを読むのはBeautifulSoupでもできるみたいだけど、feedparserのほうがカンタンみたい。
    doc = feedparser.parse(urltext)
    # mylistに入っている曲をurllistにappendする。
	# mylistlistとsmlistが統合される。
    for entry in doc.entries:
        urllist.append(entry.link)
# ここでurllistはただのurlだけのネストのないリスト。

# URLの数を集計(ここでTwitterユーザーIDの情報はなくなる)。
urlcountdict = defaultdict(int)
for item in urllist:
    urlcountdict[item] += 1

# 結果をlistにまとめる。
# がんばれば1行に収まるけど、見づらいので分割。
urlcountlist = []
for url, counter in urlcountdict.items():
    try:
        doc = soup(urlopen("http://ext.nicovideo.jp/api/getthumbinfo/" + url.split("/")[-1]), "lxml")
        title = doc.find("title").string
        view_counter =doc.find("view_counter").string
        user_nickname = doc.find("user_nickname").string
        urlcountlist.append({"url":url, "counter":counter, "title": title, "view_counter": view_counter, "user_nickname": user_nickname})
    except:
        urlcountlist.append({"url":url, "counter":counter, "title": "error", "view_counter": "error", "user_nickname": "error"})

urlcountlist = sorted(urlcountlist, key=lambda x:x["counter"], reverse=True)

# 所要時間を表示
elapsed_time = time.time() - start
print ("elapsed_time:", elapsed_time, "[sec]")



おしまい。

今回はコアなボカロクラスタのみなさんのおすすめ曲をまとめたかたちになります。

コアな人たちは語りもわたし大好きです!
shirobanasankaku.hatenablog.com
しろばなさんの語りは今年も頭おかしい!!(だいすきです)

ところで、一般のひとたちも視野に入れてどれが人気かを知るのだったら、再生数のランキングが頼りになります。
2016年の年末にわたしが書いた記事があるので、よければ合わせて読んでください!
hacosato.hatenablog.com

ネットから情報を集めてまとめることをスクレイピングっていいます。
スクレイピングはすごいスキルがなくても(とりあえずは)できるので、プログラミング初心者(たとえばわたし)にとってもオススメです。
Pythonという言語を使うなら最近出たばかりのこの本がすごくいいです♪
今回は使わなかったけど、Scrapyっていうフレームワークが超絶便利っぽいので、それを使うともっとすごいことがもっとカンタンにできそう! さいこう! みんなこの本読んでお勉強しよう!

Rubyという言語を使ってスクレイピングするならこの本もめっちゃ好きです!
去年まではわたしもこの本を使ってお勉強していました。
Pythonに乗り換えたのはPython原理主義者さまにお会いしたからというだけの理由なので、Rubyスクレイピングするのもとってもいいと思います!
こっちのほうが本が小さくてかわいいです♪(両方持ってる)

そんな感じできょうはおしまいです。
今年もボカロ業界が楽しくありますように。

次回は乃木坂46『サヨナラの意味』の歌詞について書きます!