記念日を事前に知りたい
こんにちは。mogyaです。最近の趣味は、インフルエンサーの女の子のマネをして映え写真を撮ってインスタにあげることです。フォロワーさんも順調に増えているよ。
こういう趣味とか、コスプレイヤーなど、自撮りした写真をSNSに上げたい人にとって、記念日というのはわりと重要な意味を持ちます。メガネの日には眼鏡をかけた写真を上げたり、ミニスカートの日にはミニスカートの写真を上げたり、その日に合わせた写真というのは、そうでない写真よりもフォロワーさんの反応がいいのです。
世の中にはそういう記念日を教えてくれるBotというのがたくさんあるのですけど、「今日はメガネの日です」と言われても、かわいい写真を取るには相応の準備が必要なので、当日言われても遅いわ!ということになりがちです。遅くとも一週間前には教えていただきたい!
ということで、最近メイクとか洋服に夢中になって失われつつあるエンジニア能力のリハビリも兼ねて、TwitterBotを作りました。
データを集めよう
テレビとかネットで記念日を話題にする場合、だいたいは日本記念日協会 のデータをもとにしていることが多いです。ただここはぶっちゃけ記念日を登録しておくことが商売なので、データのダウンロードは有償で、勝手にぶっこ抜くと怒られそうです。
順当にフォロワーさんが増えてきたら考えないでもないのですけど、まずはMVPということで、Wikipediaからお借りしてきました。
適当に計算式を入れると、記念日と、その7日前の日付と、ツイートすべきテキストの集合を定義することが出来ました。立冬の日とかは、手作業で日付に直していますw
ツイートしよう
Twitter APIへのアクセスは、みんなご存知TwitterWebService.gsを使いました。OAuth1が古いから新しいのに置き換えないといけないのとか、みんな知ってるよね。
地味にハマったのが、「今日ツイートすべきデータを取ってくる」処理です。ループ回してその日の日付のデータを取ってくるだけなのですが、ゆるふわ頭脳だとそういうのを書くのも困難です。GASのデバッガって使い勝手悪いから、動かないときの原因を突き止めるのも大変だし。
スプレッドシートの内容をAPIにしてくれるsssapi をつかって自分をAPI化して、そのAPIからとってきたデータをツイートする、という仕組みにしたのですけど、そこまで書いたあたりでようやく技術脳が目を覚ましたのか、「ループで回して今日の日付だったらそれをツイートする」だけだよね、ということに気づいたので、SSSAPIは結局使わないことになってしまいました。でもSSSAPI自体は便利なのでまたなんかの機会に使ってみたいですね。
出来た
ということで出来上がったのが、7日後はなんの日?bot です。
ちょうどいいタイミングでネイルの日が予告されています。よーし、今週末はめっちゃかっこいいネイルを撮って準備するぞ、という計画ができる余裕、嬉しいですよね。
スプレッドシート単体で完結しているので運用費用はかからないし、日付とツイート内容があれば全然別のbotにも転用できそう。ソースコードはGistにあげておいたので、興味があればご覧ください
https://gist.github.com/mogya/c3e2b4654d4898c7a06d300eb6443064