Twitterのクラスタを調べる

## 背景

「バーチャルイノベーター」なるVirtual Youtuberもどきというか仮想人格で、アグレッシブな活動を始めようと思いました。  
しかしながら、Virtual Youtuberに全くうといし、知り合いもいない。コミュニティに属し、興味ある仲間と共闘したいので、どうしたものかと。Twitterに活動の情報を集約したいなぁ、と思っていたのでVirtual Youtuber **クラスタ** に飛び込もうと。しかもイノベーターの多い **技術系**Virtual Youtuberクラスタへ。

で、特定のクラスタはどう見つけたらよいか？

### クラスタのイメージ

クラスタを見えるようにするサイトってないんですかね、見つけらませんでした。

一番イメージに近かったのが、株クラスタがわかる[株ライン](https://kabuline.com)というサイトの「[株式投資用ツイッターアカウント](https://kabuline.com/twitter/)」のページです。
株クラスタの一員からのフォロー数でランキングになっているので、発言の影響力がわかりやすい。

![株ライン.png](https://qiita-image-store.s3.amazonaws.com/0/296307/1f337d44-1e81-f2f9-6e25-8023a0c63d20.png)

しかしながら他のジャンルではこういうのなさそう。
ないなら作ろういうことで、仕組みを考えてみました。

### クラスタを見つける仕組み

あくまで仮説です。株ラインっぽいのを目指します。
「クラスタのコアなアカウントをいくつか手動で見つけて、コアをフォローしている人がフォローしている人はクラスタの可能性が高い」という「友達の友達は友達だ」説です。図にするとこう。

![クラスタ説明.png](https://qiita-image-store.s3.amazonaws.com/0/296307/1411bf31-c2b1-6918-1b16-68ddb7977bc9.png)

1. クラスタのコアとなるアカウントを探す。５～１０人くらい。
2. コアアカウントをフォローしている人をTwitterAPIでリスト化する。コアな人はメジャーな人が多いので数万人になる。
3. フォローしている人がフォローしている人をカウントアップしていく。誰かにフォローされていたら＋１。その数は数十万人になる。

クラスタを公開できる仕組みが良かったので、どのプラットフォームを使うか色んな選択肢があるなかGoogleAppsScriptをチョイス。
タダだし、公開できるし、Google様だから安定しているし。

### ソース

https://script.google.com/d/10HEavsU0jGNjwuZClMTnV156z94m7fjzf9eDhzK5C1rkwXPIxGPADGL7/edit?usp=sharing

### 使い方

1. [ソース](https://script.google.com/d/10HEavsU0jGNjwuZClMTnV156z94m7fjzf9eDhzK5C1rkwXPIxGPADGL7/edit?usp=sharing
)をGoogle Driveにコピーする。
1. Twitter APIを使えるようにして、Consumer Key(API Key)とConsumer Secret(Secret Key)を取得してください。
   * [こちら](https://qiita.com/bakira/items/00743d10ec42993f85eb)を参考にしたり、「Twitter API アプリケーション登録」などの単語でググってください。
1. [ソース] (https://script.google.com/d/10HEavsU0jGNjwuZClMTnV156z94m7fjzf9eDhzK5C1rkwXPIxGPADGL7/edit?usp=sharing
)のtwitter.gsの一番上にあるAPI_KEYにApi Keyを、API_SECRETTにAPI Secretを設定する。
1. ソースのリソース→ライブラリでOAuth1(version 15)を設定する。
    * [こちら](https://qiita.com/Ikanogo/items/1dce33c26559eac56a03)を参考に設定する。
    * 設定してあったら不要
1. twitter.gsを選択し、「関数を選択」に「twitterAuthorizeUrl」を選び実行▶する。
1. GoogleDriveの[専用Spread Sheet](https://docs.google.com/spreadsheets/d/1Dvzx9_sNp-PbyliusFIrY09Hiv7Hup0vWLX4xzPelKY/edit?usp=sharing)をコピーする
1. コピーした専用スプレッドシートのCoreシートに自分の探したいクラスタのコアメンバーのTwitter IDを記入する。名前は不要です。
1. コピーした専用スプレッドシートのIDをコピー。
    * URLの、「1Dvzx9_sNp-PbyliusFIrY09Hiv7Hup0vWLX4xzPelKY」みたいな部分。
1. スプレッドシートのIDを、ソースのmain.gsの一番上の「SPREADSHEET_ID」にコピー。
1. main.gsで「関数を選択」に「GetCoreFollower」を選び実行▶する。

あとはスプレッドシートの「Friends」シートにクラスタがたまっていくのを待ちます。
ちなみに、Twitter APIの制約で15分で15アカウントのフォロワーしかゲットできないので、数万人のフォロワーをゲットするのに**数日**かかります。一晩とかキリのいいところで止めてもいいかもしれません。

### サブ機能１

list.gsのAddFriendsを実行すると、Friendsシートの中身の上位5000人(Twitterの制約)までTwitterのリストに追加できます。リスト名は、list.gsの一番上にあるLIST_NAMEになります。

結果から自分の作ったリストは、[こちら](https://twitter.com/vrtl_innvtr/lists/vtuber?lang=ja)なります。
5000人をリストに入れたつもりがなぜか1000人くらいになってます。
おまけ機能ということで。

### サブ機能２

ranking.gsのRankingを実行すると上位1000名の名前が「Ranking」シートに追加されます。
「Friends」シートだけだとUserIDしかないので誰が誰やらわかりません。

### 結果

コアメンバーとその結果の抜粋はこちらになります。

詳細は、[こちら](https://docs.google.com/spreadsheets/d/1Dvzx9_sNp-PbyliusFIrY09Hiv7Hup0vWLX4xzPelKY/edit?usp=sharing)の「Ranking」シートを参照しくてださい。

技術系Youtuberクラスタできるかな、と思いましたが普通のVTuberクラスタになってしまいました…。
コアメンバーやアルゴリズムの改良は必要そうです。

**コアメンバー**

|screen_name|表示名|
|------------|--------------|
|kemomimi_oukoku|けもみみおーこく公式|
|todoki_uka|届木ウカ/Viola@VR演劇「Virus」「クエストV」|
|kohack_v|坪倉輝明@メディアアーティスト|
|vroadcaster|VR放送局VRoadCaster|
|hikky_official|HIKKY@VR制作チーム|
|phio_alchemist|動く城のフィオ⚙仮想空間興行師⚙|

**結果クラスタ**

|クラスタ内フォロワー数|表示名|
|------------|--------------|
|2955|けもみみおーこく公式|
|2760|動く城のフィオ⚙仮想空間興行師⚙|
|2759|のらきゃっと＠バーチャル美少女（毎週火・日曜20時～生配信）|
|2587|電脳少女シロ🔋|
|2526|Kizuna AI@Ver.2.0|
|2515|ミライアカリ(Mirai Akari)🦋|
|2492|輝夜 月 🍤|
|2422|届木ウカ/Viola@VR演劇「Virus」「クエストV」|
|2400|月ノ美兎🐰|
|2348|坪倉輝明@メディアアーティスト|
|2314|ニーツ/VT-212|
|2292|あっくん大魔王@バーチャルYouTuber|
|2260|ときのそら@LINEスタンプ発売中！MMDニコニ立体で公開中！|
|2241|万楽えね♈️|
|2206|ばあちゃる|
|2191|猫宮ひなた(Nekomiya Hinata)|
|2107|もちひよこ|
|2069|薬袋カルテ💉バーチャルNs|
|2056|富士葵@デビューシングル先行予約開始！|
|2030|樋口楓🍁29日22時1期生コラボ|
|2014|春日部つくし💿Vtuber|
|2012|名取さな🍆ば～ちゃるな～す|
|1976|魔王ヘルネス＠VTuber|
|1970|ミディ@作曲バーチャルYouTuber|
|1969|VR放送局VRoadCaster|
|1957|ディープブリザード❄️Vクリエイター|
|1929|ケリン🚀Vtuber個人勢|
|1905|Vtuber Icotsu|
|1891|静凛|
|1871|Virtual_Gorilla(バーチャルゴリラ)|
|1865|クーテトラ@ヴァーチャルダンジョンフェアリー犬妖精|
|1864|ロボ子さん🤖|
|1834|巣黒るい@MAXEND動画投稿したアル！！🐿✨|
|1831|乾伸一郎|
|1800|ヨメミ - 3Dアップデートなう|
|1785|水菜|
|1781|じーえふ|
|1762|かしこまり🌻9.28昼11時お知らせあるよ🌻|
|1758|モスコミュール放送局@グッズ通販開始しました。|
|1747|田中ヒメ🥕ヒメヒナ|
|1732|モイラ@にじさんじ所属の女神|
|1725|おめがレイ@バーチャル双子YouTuber|
|1703|甲賀流忍者ぽんぽこ🍃10月6-7日24時間|
|1701|おめがリオ＠妹の方|
|1700|鈴鹿詩子🎶にじさんじ所属|
|1667|雨下カイト : Kite Channel：異世界転生大学生|
|1657|瀬戸サニー☀️@10/5まで|
|1654|さはな|
|1641|♥️♠️物述有栖♦️♣️|
8|1628|天開司⚀バーチャル債務者youtuber|
|1628|剣持刀也@にじさんじ所属|
|1627|イヌージョン🐕バーチャル犬|
|1627|家長むぎ@にじさんじ|
|1606|自己顕示欲が強い織田信姫🍡|
|1606|勇気 ちひろ🎀💙29、30日20:00～YouTube( 'ω'o[|にじさんじしょぞく]o
|1600|🍓宇志海いちご🍓@にじさんじ所属|
|1589|渋谷ハジメ@にじさんじ所属|
|1585|アズマリム@9/2620時〜生放送|
|1585|にじさんじ|
|1566|PANORA|
|1554|エイレーン (Eilene)|
|1547|白二郎/VRアライグマ|
|1538|ユキミお姉ちゃん🌸|
|1535|みゅみゅ|
|1535|カフェ野ゾンビ子|
|1531|ウェザーロイド Airi|
|1531|oddai(オッドアイ)|
|1516|文野環🐟にじさんじ所属の野良猫|
|1515|歌衣メイカ🤔29日14時生放送！|
|1498|ふぇありす🐦＠毎日0時Live配信|
|1495|パンディ😐ゆるいコラボがしたいマン|
|1492|パゲ美@オカマ系Vtuber|
|1486|鈴谷アキ🐈にじさんじ所属|
|1482|zen🐊|
|1473|次世代YoutuberYUA/藤崎由愛|
|1465|長兎路こより🐰🍣|
|1465|いわながちゃん|
|1464|リリー博士💡✨＠配信休止|
|1458|HIKKY@VR制作チーム|
|1451|🗼える🗼Elu@にじさんじ所属|
|1445|夕陽リリ|
|1437|たかじんちゃん＠バーチャルおくすり屋さん|
|1434|🌕環右金🌕Vtuber🌕|
|1431|東雲めぐ／Megu Shinonome平日朝7:30SHOWROOM&Youtube配信♪|
|1431|森中花咲🐻1日(月)21時配信|
|1426|六道冥|
|1413|DeepWebUnderground|
|1410|かみ👼ばーちゃる神さま|
|1406|伏見ガク†にじさんじ所属|
|1403|世紀末系Vtuberウル＝ケン・ノース|
|1387|海月ねう|
|1360|叶＠にじさんじゲーマーズ|
|1348|AIのユニとハ・カセ博士@バーチャルYouTuber|
|1341|ukyo_rst/魔王マグロナ🐟🍆🦊♎🥕|
|1331|宇宙怪獣アンチン🦖|
|1327|霊電カスカ@幽チューバー|
|1325|新川良@バーチャルめいど♂|
|1322|萌実（Moemi-chan)|
|1320|おきゅたんbot🏝VRすきま動画|
|1314|赤月ゆに 🦇 月とライカと吸血姫コラボ公開中|


### 注意

あまりCoreメンバーが多いと、フォロワー数が爆発してスプレッドシートでエラーになります。
スプレッドシートのセルが200万までだからです。
Coreメンバーを少なくするか、フォロワーの少ない人をCoreメンバーに入れるとかののが良さそうです。