まゆすきの可視化 ~botとAPIを作った話~

本記事は佐久間まゆ Advent Calendar 2017の1日目の記事です.

目次

まゆすきの概念

本題に入る前にまずは「まゆすき」とはなにかについて.それを知るにはまず「佐久間まゆ」を知る必要があると言えよう.とりあえず次の画像を見てほしい.

f:id:zenmaibane:20171130170207p:plainf:id:zenmaibane:20171130170019p:plain

f:id:zenmaibane:20171130170021p:plain

うん,かわいい.とてもかわいい.なんと言ってもかわいいのだ.そしてきっとあまりのかわいさに「あれ,佐久間まゆすきだな....」という感情が芽生えることだろう.芽生えなかったとしたらあと153回くらい見てみよう.きっと同じ気持ちになるはずだ.

この「あれ,佐久間まゆすきだな....」という気持ちこそが「まゆすき」の根幹とも言えよう.

つまり

あれ,佐久間まゆすきだな....
↓
佐久間まゆすきだな
↓
佐久間まゆすき
↓
まゆすき

なのだ.

ここで重要なのは「まゆすき」はひらがな4文字で構成されていることだろう.ひらがなとは日本語で最も基本的な文字であり,学校教育では初めに教えてもらう文字である.ひらがなさえ覚えてしまえば「まゆすき」の読み書きをすることが出来るのだ.すなわち,ひらがなしかまだ読み書きが出来ないような小さな子どもでも「佐久間まゆがすき」という気持ちを文字にして表現することが可能であり,「佐久間まゆがすき」という表現の場にとっつきやすいとも考えられる.近い将来ひらがなの練習として"まゆすき"という文字列が使われることもあり得るだろう.*1

また,ひらがな4文字であるというメリットはこれだけにとどまらない.ひらがなが初歩的な日本語の文字であるため,日本語を勉強し始めてまだ間もない方もこれを表現出来るのだ.どういうことか.実例を見てみよう.

とある佐久間まゆPが集まるコミュニティでは(シンデレラガールズは日本発ということもあり)もちろん日本人の比率が多いわけで,海外の方がこのコミュニティに入った場合日本語を読解するのに非常に困難だった(だろう).そこで英語用の会話の場(チャンネル)が設けられた際の会話が次のものである.

f:id:zenmaibane:20171130174752p:plain

ここで焦点を当てるべきはそう, All you have to know is まゆすき である.「ひらがなやカタカナしかまだわからないんだ....」という人に対して「まゆすきだけ知ってりゃなんとかなる」という返しである.ここで意味することは佐久間まゆP間では例え国境を越えたとしても「まゆすき」という4つの文字でお互いコミュニケーションがとれるというところだろう.このとおり「まゆすき」は非常に便利でグローバルなのだ.

ここまでをまとめると佐久間まゆがすき」という気持ちを4文字までに圧縮して普遍的に,かつカジュアルにとっつきやすくしたのがこの「まゆすき」という言葉と言えるだろう.*2*3

作ったもの

bot

そんな広くカジュアルに「佐久間まゆがすき」を表せる「まゆすき」を計測しようという考えから生まれたのがこのbot

twitter.com

普段はこんな感じに動く

ちなみに日曜にはその週のまゆすきツイート数の推移をグラフ化して投稿するようにしている.例えばこんな感じ.

f:id:zenmaibane:20171130185047p:plain

このグラフからわかることと言えば11/21だけ異常に「まゆすき」が多いこと.それもそのはずでこの日はオンリーユアキューピッドが実装された日.公式からまゆの動きが出ると露骨に反映される.検証はしてないけどきっと二次創作で影響力がとても強い作品が出たときも反映されるはず.

ところで皆様オンリーユアキューピッドは引けましたか?僕は引けなかったです😇

「まゆすきツイート」の定義はツイート内に"まゆすき"という文字列が含まれているかどうかだけ.1ツイートに何回"まゆすき"と書いてあってもそれは1まゆすきでしかないという意味になる.「まゆすき」は想いが外に表れた結果である.つまりいくら何回"まゆすき"と書いてあってもそれは飽くまでも1ツイートである以上1回の想いでしかないということになる.だからこそ何回"まゆすき"と書いてあっても「まゆすき」という想いを表した事実自体は1回であり,これは1まゆすきという扱いとなる.*4

ちなみに「佐久間まゆ」以外の「まゆ」に対する「まゆすき」であってもカウントされてしまう.そのためある程度ファジーなまゆすきカウントであることを覚えておく必要がある.

API

APIってなんですか?なんて人もいるとは思うのですっごい簡単に言うとbotで計測した「まゆすきカウント」のデータを他のみんなも使えるようにしたということ.

例えば以下のリンクにアクセスすると2017/11/20~2017/11/22のまゆすきカウントデータを返してくれる.見慣れない表示かもしれないがまぁこんなのを使う界隈もあるんだろう程度の認識でいいと思う.

https://script.google.com/macros/s/AKfycbwPDUJ4-EKuSJSptDJBBAqqZK-CNM9_Q4Q5avAdnHxcPHe7Z7A6/exec?since=2017/11/20&until=2017/11/22

ちなみにただデータだけ見たいよ!って人がいるなら以下のスプレッドシートにアクセスするとこれまでのまゆすきカウントデータが閲覧出来る.

mayusukiDB - Google スプレッドシート

これを書いている現在ではまだまだデータが少ないがこれから日を経る毎にデータが増えていく.もしかしたら1年後とかに見て比較をしてみても面白いかもしれない.

で,これらが役に立つ場はあるんですか?

f:id:zenmaibane:20171130151600p:plain

開発者本人すら作った機能が何の役に立つのかわからん.誰か活用方法を思いついたらじゃんじゃん使ってくれ.

開発的なお話

興味ない人は飛ばしていいです.躓いた点とかそういう話.

コードを見せろ

github.com

ReadmeにAPIのリファレンス的サムシングは書いたので万が一使いたい人がいれば活用してください.

なんでこれ作ろうと思ったの

「一見役立ちそうで全然役立たないもの」を作るのがすきだからってのもあるけど単純にGASでbotなりAPIを作りたかっただけです.ツイート機能もグラフ化もAPIも全て「作ってみたかったから」という理由が先行しています.サーバーレスだからこういうのを作るのはむっちゃ楽って聞いてたので.

だから作った理由は「まゆすきを数えたい」という欲求が根幹ではなく「GASを使ってなんか作りたい」という欲求がメイン.そこにちょっと前に「まゆすきを可視化したくない?」みたいな話をした覚えがあったからこうなった.

本当だったらこれまで全ての「まゆすき」をカウントしたかったけど全ツイートを取得するには有料版API*5か公式CS/CKを使ってゴニョゴニョするかの2択で,前者はこんなんのためにお金払いたくないし後者はそもそもアウトなのでやめました.ただいつごろから「まゆすき」が普及してどれだけ増加していったのかって可視化するとちょっと面白そうですよね.誰かやってください.

躓いた点

GASを使ってなにかを作るのってまだ2回目なので全部躓いたっちゃ全部躓いたんですけどJSON.stringifyをすると内部の時刻データが全てUTCで返ってくるってのは今回初めて知りました.*6時刻関連を扱うのはやっぱりめんどくさいなと強く感じるなど.

解決策はひとまず下記リンクを参考にしました.今思うと時刻を文字列として吐き出しておいたほうがよかったのかなという気もするけどどうなんだろう.

JavaScriptのDateオブジェクトをJSON.stringify()したときの時間のずれについて | ぶろぐち

あとはGASってどうしてもWebエディタなのでgit管理めちゃくちゃめんどくさくないですか???って思ってたら解決策があってものすごく助かりました.

手軽にGoogle Apps ScriptのコードをGithubで管理する | Recruit Jobs TECHBLOG

それ以外にも普通にローカルで保存,開発が出来るようにもする方法もあるらしいので次機会あればそういう感じで開発したいなと思います.好きなエディタ使いたいし.

おわりに

botだから動いてる様子見せないとしょうがないしテスト稼働させてこの記事の公開と同時にbotの存在が知られればいいかみたいに思ってたらなんとテスト稼働初日で捕捉されました.*7 逆になんで見つけられるんだ.びっくりした.

本文は9割がジョークで構成されているので各々自分が信じる「まゆすき」をしてください.僕はというとここまで書いておいてなんですが思い返すとあんまり「まゆすき」って使ってないことに気づきました.使うにしても,詳細を語ってもしょうがないからお茶を濁すときか語彙を全部投げ捨てたときくらいな気がする.

そんなこんなで以上となります.明日12/2はCassis0906さんによるまゆの話をしようです.

最後はかわいい*8まゆを貼って〆です.まゆすき.

f:id:zenmaibane:20171130160530p:plain

*1:あり得ない

*2:諸説あります

*3:これによる弊害も色々あるけど今回は触れません

*4:自分で何言ってるかわからなくなってきた

*5:https://developer.twitter.com/en/docs/tweets/search/overview/enterprise

*6:GASというかjsで躓いた点ですね

*7:https://twitter.com/mayusukiCount/status/933735848759255041

*8:既知の事実