ひさくんガチ恋bot自動化進捗(1)

明けましておめでとうございます。
昨年末に思い立って初めたひさくんガチ恋botの自動化ですが、思ったより進捗したので共有します。

概要

端的には以下の通りです:

  • twitterAPI の権限の取得 ... 公式に申請(結果待ち)
  • Python コード開発 ... 実行デバッグ作業前まで完了
  • Heroku 登録 ... 無関係のテストプログラムで自動化できることを確認

なおほぼ全て google 先生の力をフルに使っています。

twitterAPI の権限の取得

twitterAPI を叩くには Consumer Key, Consumer Secret, Access Token, Access Token Secret という4つの文字列が必要です。これらを手に入れるためには、 twitter developer として申請し、審査をクリアする必要があります。「twitter API developer 申請」あたりでググると死ぬほど情報が出てきます。以下のサイトは一例です。
Python3でTwitterAPIを使い方をどのサイトにも負けないくらい丁寧に解説してみた
申請の文言を英語で書かせるあたり、米国の twitter 社で審査してるんではないかと思います。「数時間程度でレスポンス返ってきたよ」とか「数日かかったよ」といった情報がありますが、おそらく米国 twitter 社の営業日や営業時間が主に影響しているんではないかと思っています。
この審査がまだ返ってこなくて他の作業が待ち状態になっています。もしかしたら年末年始休み(アメリカンに言えばクリスマス休暇?)に入っていて明けるまで返ってこない可能性もありますね。

Python コード開発

twitterAPI 自体は「適当な URL を叩くと json 形式で結果が返ってくる」という仕様のようなのですが、直接それを作るのは面倒というもので、実際簡単に扱うための Python モジュールが存在しています。ググって見つけたところだと代表的なのが python-twittertweety の2つのようでした。自分はたまたま先に見つけた python-twitter で開発しましたが、どちらも大きく仕様は変わらなさそうなので、ググラビリティとか使い勝手の良さを見極めて好みで使えばいいかなと思います。
いろいろググって出てきた情報をかき集めて開発しましたが、特にまとまっていたサイトを紹介します。

... 公式ドキュメントです。細かい仕様を確認するには公式を見るのが一番です。

... 公式のソースです。example の他に testdata ディレクトリの中に具体的に返ってくる json の例が大量に入っています。擬似的にこれらを利用してテストすることができます。

... 日本語で機能の一覧表があります。公式が全部入りとはいえ、こうやって要約した情報があるとより使いやすいですね。

... サンプルコードモリモリです。正直このページと上記の一覧表を眺めればかなり記述できると思います。

... twitterAPI 開発者用ドキュメントの日本語版です。Status (個々のツイートの情報) オブジェクトにどんなプロパティがあって、どれを取得すれば目的に合致するかなど、詳しく見ることができました。

以上のあたりを使ってガシガシコードを書いた結果、第一弾は 12/31 中に書けてしまいました。ちょいちょいバグもあったので修正していっているものの、まさかこんなに早く書けてしまうとは、と google 先生の偉大さに感服しています。API の key の類が手に入れば実際に手元で実行してテスト&デバッグしようと思っています。

Heroku 登録

公式: Heroku
Heroku とはオンラインで開発環境が揃うサービスみたいなやつです。ちゃんと理解してないので詳しく説明するのは割愛するとして、手元のPCをシャットダウンしていても自動で実行させられるようにするために利用しました。1プロセス換算で合計年間1000時間以内であれば無料で使えるため、せいぜい定期実行するぐらいのこのプログラムだと十分な機能です。

実は以前 slack bot の開発で試しに使ったことがあって、そのときのドキュメントに結構助けられました。とはいえそれもググりながらかき集めた情報で作ったものなので、「Heroku Python 自動化」あたりで探せば自分で見つかるかと思います。git を使うため馴染みのない方にはやや辛いかもしれませんが、ぜひ勉強するべき便利なツールであることは間違いないので、頑張ってください。

進捗としては、Hello world を表示するプログラムだったり環境変数を取得するプログラムだったりを試験的にリモートで実行したりしたというところです。定期実行も問題なくできそうなので、本体のプログラムがそもそもちゃんと動くことさえ確認できれば、あとは登録するだけという感じです。環境変数というワードが出てきましたが、Heroku はこちらで自分で環境変数を追加できるので、twitterAPI の key 類はそこで設定して os.environ あたりで取得する感じにしたいと思います。

結論

twitter 社仕事して

蛇足


誰だよそんなことする変人は