Heroku で運用している Twitter bot について書きます。
どういう bot か
ソースコード: https://github.com/yono/yonobot
定期的に
- ランダムに生成した文章のポスト
- メンションへの返信
をします。
私のツイートのログを基にしてるので、ランダムとはいっても比較的日本語っぽい文章が出てきます。
特に実用性は無くて観葉植物みたいな感じです。
例
ちょっと何言ってみるつもりです
— yonobot (@yonobot) 2017年12月2日
Heroku での運用について
以下の構成で動いています。
これで2年くらい動かしてますがノーメンテで元気に動いてくれてます。
その前は GAE/Python で動かしてましたが料金体系の変更により Ruby で作り直して Heroku に引っ越ししたという経緯があります。
heroku-buildpack-mecab
デフォルトでは mecab gem がビルドできないため。
mecab は発言生成時でなく、発言の元となるツイートを形態素解析するのに使ってます。
(でもよく考えたら Heroku 上では解析処理してないので使わずに済むかもしれません……)
Heroku Scheduler
定期的な発言と返信の実行に使ってます。
返信はもう少しこまめに実行したいですが、10分おきが最短なのでやむなくそうしています。
mLab MongoDB
発言の元データを置くのに使っています。
PostgreSQL でなく MongoDB を使っているのはレコード数が17万件くらいあって Heroku Postgres の Hobby Dev プランの制限にひっかかるからです。
まとめ
Heroku で運用している Twitter bot の構成について紹介しました。
イレギュラーっぽいですがこういう使い方もあるということで。