Twitterのフォロワー数をモニタリングしよう！！

## 忙しい人のための要約

* フォロワーのフォロワー数をモニタリングして「ワシが育てた」遊びをしたくなった
* Goでフォロワー数を取得、Zabbixでそれをモニタリングした
* モニタリングしてみて伸びやすい時間帯や天気の影響など発見があった

## 背景

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223008/1cfcf73b-373f-b894-d94f-306de6e9d235.png)

しもたけさん https://twitter.com/pyor6P0r6SVzLoa

フォロワーの絵師 しもふりたけのこさんがフォロワー2,300人になりました。
この頃、精力的に絵を書いたり過去絵をRTして活動していた努力もあって段々とフォロワー数が増えていました。

露骨なフォロワー稼ぎを嫌う人もいるかも知れませんが、クリエイターにとって応援してくれるフォロワー数は武器の一つです。
ただ、人気になりすぎて気持ちが離れてしまうファンの心理もわかります。

というわけでモニタリングしましょう！（唐突）
フォロワー数をモニタリングしてその成長を見守るのが楽しいと思えるようになれば万事解決です！！(強引)
自称ネトスト検定準一級(冗談)なら、サクッと1時間くらいで作っちゃいましょう！！

今回は使い慣れているZabbixとGoで作っていきます。


## まずはTwitter Developer

既に作成していたアプリを今回は流用しましたが、ない人は作って`Consume API keys`と`Access token & access token secret`を取得しましょう。
作り方は適当にインターネットで調べてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223008/24a57db5-6f19-80de-9442-0ed79086bb7b.png)

## Goでフォロワー数を取得しよう

Goでコードを書きます。
Goのバージョンは1.14.7ですが他でも動くと思います。

```gofollowers.go
package main

import (
	"flag"
	"fmt"
	"github.com/dghubble/go-twitter/twitter"
	"github.com/dghubble/oauth1"
)

func main() {
	var (
		user = flag.String("u", "", "user")
	)
	flag.Parse()

	config := oauth1.NewConfig("<API key>", "<API secret key>")
	token := oauth1.NewToken("<Access token>", "<Access token secret>")
	httpClient := config.Client(oauth1.NoContext, token)
	client := twitter.NewClient(httpClient)

	followers, _, _ := client.Users.Show(&twitter.UserShowParams{
		ScreenName: *user,
	})

	fmt.Println(followers.FollowersCount)
}
```

`<API Key>`や`<Access Token>`は自分のTwitterアプリに合わせて書き換えてください。
これで、引数で渡したユーザのフォロワー数を出力してくれるようになりました。

このあとZabbixでデータ型を整数に指定するのでパニック等で数字以外が出力されてもZabbix側で検知ができます。
そのため、ここでは例外処理をあまり考慮していません。
今回はこのデータのモニタリングにZabbixを使いますが、
Zabbixよくわからんって人は自分の好きなツールでモニタリングしてください。

## Zabbixでモニタリングする

Zabbixサーバについては詳細は割愛しますが、詳細はこことか参考にしてください。
https://blog.apar.jp/zabbix/14098/

さて、Zabbixには外部チェックというアイテムで自作のスクリプトが実行できるので今回はそれを使います。
先程書いたgofollowers.goをビルドして、実行ファイルを`/usr/lib/zabbix/externalscripts`に置きます。

そしたらこんな感じにテンプレートを作っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223008/f15fa738-e5cb-8f18-04bb-618690432a39.png)

ホストはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223008/66af3ac6-b40f-cabd-66a2-70cfb05220da.png)

ホスト名にTwitterIDを使い、マクロでアイテムに引数として渡しています。
こうすることで、テンプレートの再利用性が高まります。

また、監視間隔を定期設定でm0(*時00分）にすることで実行時刻を揃えています。
実行時刻が揃うとグラフが見やすくなるので、特に理由がなければ定期設定でやるのがいいと思います(個人の感想)。

ホストにテンプレートをリンクしたら、監視データが取得できているかチェックしましょう。
最近のZabbixはアイテムの取得テストができるので便利ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223008/47b59849-3aee-cbad-b512-9c383cf4cc4f.png)

無事に現在のフォロワー数が取れていますね。
あとは、ダッシュボードにグラフとか追加したりして遊びましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223008/75507295-6fbd-b2ac-ff4d-47d60e2d579a.png)

トリガー設定をして「〇〇人達成おめでとうを自動ツイート」とかやってもいいですが、
自分でおめでとうを言いたい派なのでそこまではやっていません。

やるとしたら、計算アイテムを使って数値の上位2桁で切り捨てして、
"最新一つ前より最新が大きい" && "過去に同じ数字がない"
で条件作ればいけそうかなと(要検証)

とりあえず1時間くらいでモニタリングができるようになりました。
やったね！！

## 実際にモニタリングしてみて

やっぱり平日早朝の通勤/通学時間帯は伸びやすい傾向にありました。
ちょうどその時間帯に投稿された下記の🍉🍑イラスト以降、フォロワー数増加率に変化がありました。
https://twitter.com/pyor6P0r6SVzLoa/status/1296203792900222976?s=20

やぱり「投稿イラストのRTが、ご新規さんの目に留まってフォロワーになる」という流れがあるように
感じるので今後はキラーコンテンツのようなツイートの伸び方をモニタリングするのも面白そうだなと思いました。

あと一番面白かったのが8月22日に関東で急な大雨が21時頃にあり、そこが一番増えていました。
その時間帯にバーストしそうなツイートも無かったので、
おそらく多くの人が雨宿りしながらツイッターしていてRTで流れてきたりしたのだと思われます。
天気にも左右されるのは面白いですね。

というわけで、サクッとTwitterのフォロワー数をモニタリングしてみました！！
ただし、ストーカー行為は犯罪です。迷惑行為はダメ、絶対。


## 余談

フォロワー数2000人～2500人の期間に沢山いいねやRTをもらったツイートを上位5つくらいピックアップして、
成長記録をつけたいなーとか思いました。
いつかやりたい。