Stimulator

機械学習とか好きな技術話とかエンジニア的な話とかを書く

フォロワーを管理するためだけのWebアプリを作った

- はじめに -

フォロワーも増えてきて大体毎月n*100単位でフォロワーが変動するようになってきて、巷のフォロー管理ツールじゃ全然要求を満たせないので、自作する体でGWに友人と1日ハッカソンみたいなのを開いて勢いだけで作った話。

「100万人とかフォロワーが居る訳じゃないけど1000から1万くらいの "小さな界隈のアルファ" 」は多く居て、皆どうやってTwitterを見てるのか知りたいのでまず自分から。

自分がTwitterを見ている方法や、フォロバに関する個人的な意見など、偏見を含む記事。ほぼポエム


 

- 作ったもの -

自身の要件を満たす物を一旦作った。

  • 裏側はpandasが走る事でquery検索やsort、別途の分析、拡張が容易
  • 画面内でqueryの調整、閲覧、フォロー、アンフォロー、リスト管理ができる
  • tableに最低限の情報が羅列されている
  • queryを保存したりDB側にも更新機構がある

f:id:vaaaaaanquish:20190518145931p:plain:w400
つくったもの

formにpandasのquery条件やsort条件が入れられるようになっていて、その場でuserテーブルを見るのはもちろん、よしなにqueryを作ってURLパラメータで保存しておけば、同条件でいろいろ見られる。

例えば

# 直近のフォロワー100件をフォローされた順に表示
# http://127.0.0.1:5000?nq=followed&tcrq=yy-mm-dd&tltq=yy-mm-dd&fcrq=yy-mm-dd&fltq=yy-mm-dd&sorq=follower_number&asq=True&samq=100
# 片思いでフォローしてるけど最新のつぶやきが1年以上前の人をアカウント生成日順に表示
# http://127.0.0.1:5000?nq=~followed and following&tcrq=yy-mm-dd&tltq=2018-05-01&fcrq=yy-mm-dd&fltq=yy-mm-dd&sorq=created_at&asq=True&samq=100
# bioに機械学習と書いてあり2018年以降に作られたアカウントでフォロワーが1000以上の人をフォロワー数順に
# http://127.0.0.1:5000?nq=description.str.contains("機械学習") and followers_count > 1000&tcrq=yy-mm-dd&tltq=yy-mm-dd&fcrq=2018-01-01&fltq=yy-mm-dd&sorq=followers_count&asq=True&samq=100

これだけ色んな情報を持っておいていつでも見れるようにしておけば、完全にフィードアウトしてしまって定期botと化してしまったアカウントとか、フォロバ即フォロー解除でフォロワー増強するクソ野郎だとかを定期的に見つけてフォロー外していったりできると思う。ランダムサンプリングする事もできるので、定期的に見てれば長期的にフォロワーが整理されていくだろうという仕組み。


 

- フォロバ作業 -

実際にこのツールをVivaldiのWebパネルに登録して、擬似的な2画面でフォロバ作業をやってみている様子。

f:id:vaaaaaanquish:20190518153301g:plain:w500
なんか変なアカウントをフォロバして外している様子

ここからはかなり偏見が混じるが、私のフォローに関する話とかを書いておく。
多分これを書かないと、管理ツールの思想が理解しづらいと思う。

 

リスト管理とフォロー

たまに「めっちゃフォローしてますよね」と言われるが、私はただTwitterとリスト管理が好きなだけ。
エゴサは出来る限りの検索queryと正規表現を作ってあるし、リストは34つある。
フォロバすると、「ここ半年」という名前の「フォローしてから半年経ってない人が入るリスト」におうちサーバが自動的に入れてくれる。
そのリストは割と見ていて、半年後にはそのリスト内の様子から大体どこかのリストには振り分けられている仕組みでなんとかやっている。
ただそれを色んな方法で見ているだけ。

 
リスト分けは「つぶやく頻度」なんかがわかりやすくて、週一だとか月一ペースのフォロワーは「たまに見る」といったリストに入っている。

エンジニアは分かりやすく「フロントエンド」「インフラ」「アプリ」といった分野でも分けているし、「機械学習」のような自分の専門であれば興味度合いを大体で3段階に分けて「げきつよ」「つよい」「興味ある」みたいに分けている(もう2段階くらい必要だなと最近は思っている)。もちろん技術全体的にすごい人は「高レベル人材」「好きな神」なるリストがあるし、「CTO」とか「経営」とか「採用人事公式アカウント」とかにも分けてある。「オタク」とか「あったことある」とか「仕事したことある」とかもあって、それぞれ複数のリストにまたがって入っている人が居る形になっている。

幸せになってほしい人を入れる「幸せになってほしい人リスト」もあり、こちらは公開している。
昔いろいろ言われたリストだが幸せになってほしい。


今回作ったものを奥さんに見せたら「そんなアプリ作ったの…?暇じゃん…」と言われたし、自分でもアホだと思うけど、検索queryとか考えたり特定界隈のバーストを見るのが楽しいので仕方ない。
月に数百人にフォローされても返せるのには、その辺りが好きなのが起因してると思う。


 

どんな人をフォローしているか

リスト管理が好きなので、フォロバの基準はアホみたいに低い。
最近はリスト内で見れないものがあると悔しいのでブロックもミュートも0人という、一部から見たら異常な運用だと思う。

 
実際フォロバする作業をしていくと、低いとはいえ「フォロバしない人」の基準自体はある。
例えば「留学、英会話をマスター、世界一周、恋愛テクニック、FX、FXツール、独立、投資、Wワーク、小遣い稼ぎ、フリーランス、自由、起業、複業、未経験、相互フォロー、エロ、〜〜と繋がりたい、DM、LINE@」辺りの単語がbioに入ってると、注意視度合いが上がる。大体フォロバした瞬間にDMでスパムやアフィリエイトリンク、情報商材のリンクを自動で送ってくる経験則から来てると思う。数撃ちゃ当たると思いやがってと思いつつ、フォロバ即商材DMを貰うと「俺もまだまだだな…」ってなる。

中でもエロだとか「人気のツイート格言まとめ」「話題の画像、人気画像まとめ」といった転載、パクツイbotはそもそも信念としてフォローしていないが、仮にTwitter公式認証のついたアカウントでもパクツイや商材DMと同じことやってくるアカウントはあるので疑念が強い。

f:id:vaaaaaanquish:20190518175056p:plain:w400
すぐDM送ってくるタイプの
 
他にも「月間100万PVみたいなブログアピールがすごい」とか「〜〜の中の人です」系は、実際直近のツイートを見に行くと完全な宣伝botと化していて、見る必要性がないなと思ってフォローしないパターンが多い。その点、最新Tweetの投稿アプリがTweetbotだったりすると、ツイートを舐めなくても直感的に分かりやすい。

f:id:vaaaaaanquish:20190518175418p:plain:w400
amebloまで見に行くとわかる情報商材


bioという意味では「エンジニア」も怪しい単語に最近入りつつある。
「アプリ作ってます」と書いてあるのでフォロバしてリストに入れようかなと思うと一生自アプリを宣伝するbotだったり、「初心者エンジニアがプログラミング教室通って独立して月50万」みたいなリンクを送ってくるパターンは、体感でかなり増えている。後は、捨て垢で質問だけするためにフォローとか。QiitaとかTeratailとかQuoraとかでやると良いと思う。


酷い乱数IDだとか、ツイートが0~10、アイコンもヘッダーもプロフィールもなしとか、情報出さずに鍵垢とかは普通に判断に困る。
IDでは、「(@hoge)の移行垢、サブ垢」とかも危険で、実際はサブでも何でもないパターンがあってこれも判断に困る。
実際「ばんくし」で検索した時に出てくるアカウントはvaaaaanquish以外私ではないし…


「興味あり、憧れて、勉強中、初心者」辺りもレベル差が激しいだけでなく、「同じ初心者を釣って相互フォローになって商材を送るアカウント」である場合があるので、本当に勉強してるかとかは見ないと大体「俺もまだまだだな…」ってなる。

 
ただ、これらは私が経験的に警戒しているというだけで、「こうしているとフォロバされない」とかでもなければ「こうした方が良い」とか「こうあるべき」という話ではない。もちろん自動DMのアカウントを作るなんて、プログラミングを2日くらいやれば誰でも出来るだろうし、そういうTwitterアカウント運用ツールが存在する事も知っていて、それ自体が悪いとは一切思ってない。
どれだけ謎めいたアカウントでも、アカウント作成日が2009年とか、最新ツイートが完全に人に寄っていたりだとか、明らかに転載でない画像投稿があると「ん〜、まあいいか」となる場合もあるし、知ってる人だと何もなくてもフォローしたりする。警戒する単語があったからどうするというより、総合的に見て私がモデルになって判断するというだけである。


 
積極的な方で言うと、最近は「オタク全面出しアカウント」がむしろめちゃくちゃ信頼できる。
2010年〜2015年くらいのTwitterは、アニメアイコンのアカウントが溢れかえっていて色んな所で争っていたり騒動を起こしていた事もあって「え、あの人フォローしてるん?」みたいな事を言われる機会も多かったのでフォローを厳選する必要は正直あったけど、良くも悪くも年齢層の変化か頓珍漢な人が減ったか自身のアンテナの変化か、〇〇好きをアピールしてくれている人の方がリスト分けもしやすいし、まだ見ていられるので閾値がグッと下がる。政治や意識だけ高い人より好きな事喋ってる人は良いよね…という事かもしれない。

全部車!ガジェット!みたいな雰囲気だったり、アイコンとヘッダーとbioが統一的な(概念的に近いような)アカウントだったり、得意な事が統一的に書いてあったり、〇〇株式会社のエンジニアみたいな人もフォロバする時の安心感がすごいし、何よりリストに入れやすい。


安心感的なところでいうと、はてな等のブログ、プロフィールサイト、Amazon wishlist、Qiita、Kaggle、競プロ、…他サービスと共通のIDが見えているとスパムアカウントではないだろうなと思うし、IDと同じドメインを持って運用しているアカウントだと即フォロバできるくらいの勢いがある(最悪whoisできる)。画像投稿もあると人柄が見えて実は嬉しい。

f:id:vaaaaaanquish:20190518182440p:plain:w400
安心感があるアカウント

後は「bioが単発のダジャレで面白い」とか「幾何学模様アイコン」「数式、文字アイコン」「猫アイコン」とか「bioにvimと書いてある」とか感覚的に良いと思っている指標はいくつかあるけど、大体その辺が見えていれば一旦信頼できると思っている。

最悪今回作ったツールみたいなやつでフォロー解除していけばいいだけなので、まずはフォローから。


 
こんな感じの概念を元に、フォロワーを見るためだけに作ったのが今回のツールである。


 

- できたもの -

GitHubにコードを置いた。

github.com

近年では、TwitterAPI規制が激しく、こんなしょうもないアプリを公開してペイできるほど甘い世界じゃなくなりつつある。API有料化自体は賛成しているが、ある程度定期的に使われて、収入源があるAppじゃないと厳しいという現実はある。


なので、TwitterAPI keyとClient Secretを自身で取ってこれて、Python実行環境が作れる人に絞って一旦公開する運びとなった。
アホみたいなTwitter連携アプリがガンガンリリースされていたあの頃に戻りたいという気持ちもある。

 

概念

概念として3つ大事な要素を考えて作った。

  • バックエンド何も考えたくないのでdata_managerなる神を1つ作ってAPIやファイル操作、pandas I/Oを一任したい
  • 主目的であるWebAppでフォロバ作業はしたい
  • 先述のように自分がどんな基準でフォローするかを考慮しながら調整、分析のPDCAを回したい
    • ipynbで分析できると嬉しい
    • MLモデル作れるようになりたい
    • 更新、拡張可能な形式だと嬉しい

f:id:vaaaaaanquish:20190518191743p:plain:w500
ハッカソンで出した概念図的なやつ

pandasで管理されてるので、そのファイルさえ読み込めば直接ipynbで分析したりできるのが今回の目的に沿ってると思う。
私のfollow情報を用いた簡易分析例のipynbはこんな感じ
twitter_manager/簡単に見ていくやつ.ipynb at master · vaaaaanquish/twitter_manager · GitHub

f:id:vaaaaaanquish:20190518214250p:plain:w650
こういうのがやりたかったんだよな
f:id:vaaaaaanquish:20190518183254p:plain:w400
フォロワーbioとtwから生成したワードクラウド

jsonファイルの管理が適当なのでDB建てるなり徐々に綺麗になっていくと思う。

 

- おわりに -

書き始めてから気付いたけど、技術的な事はハッカソンでやり切ってるので特に目立った工夫もないし、技術記事にする必要はなかったかも…

邪念な文章な気がするけど、はてなブログは大体これで良いと思う。


2時間くらいフォロバ作業してたらソッコーAPI枯れたので悲しい図