2018年8月19日日曜日

raspberry pi でTwitter botを作りたい話

帰ってきました。セルディアです。

あまりに投稿間隔が開きましたが、生存報告を兼ねて。

Twitter botを唐突に作りたくなったので、備忘録を兼ねてまとめてみました。

どんな方法でTwitter botを作ろう


botを作るにあたって、思いつく、あるいは発見した方法で以下のようなものがあります。


  • 無料のTwitter bot作成サービスを利用
  • Herokuなどのクラウドサービスを利用
  • Windows端末を上げっぱなしにしてタスクスケジューラなどで自動投稿
  • raspberry piで簡易サーバを立てて自動投稿


最初は、無料のサービスで完全ランダムに呟かせようかな、と思っていたのですが、個性がないとつまらないかな、と思ったのでやめました。
Herokuはおもしろそうですが、クラウドの環境更新やWebサービス向けの仕組みに慣れる気がしなかったので見送りました。完全に実力不足です、はい……。
Windows端末も、ずっと上げっぱなしにするのは消費電力的に嫌なのと、趣味で平行して使っていて障害が発生してbotに影響が出るのは嫌なので取りやめです。一番簡単そうですけどね。

ということで、前々から気になっていたraspberry piを買って使ってみることにしました。

ちなみに、PaizaCloud という、とてもbot向けなサービスも見つけたのですが、あまりに公開が最近過ぎて怖くてやめました。っていうか月2000円って、botで収益でも得る予定でないと無理じゃ。

raspberry pi のバージョン選出


本当はraspberry pi 2 Moderu B+ がコスパのバランスがとれていたのですが、店頭で売られていたのが raspberry pi 3 Model B だけだったので、こちらを選択しました。

CPU 処理能力が高ければ、構築時の設定やビルド・インストールの処理時間が短縮されるので、これはこれでいいのではないでしょうか……道具をそろえるだけで諭吉一枚飛びましたが。

raspberry の初期設定


以下のページで、必須設定・セキュリティ対策共に網羅されています。
神ページです。ほぼこの通りにやって大丈夫でした。

Raspbianのインストールと最強の初期設定
https://jyn.jp/raspbian-setup/

例外的なところを追記します。

私はGUIを有効にしていたので、ユーザ名の変更は以下のページを参考にしました。

Raspbianでユーザー名piを名前変更する。http://matsudamper.hatenablog.com/entry/2017/01/05/020502

日本語入力(IME)の導入


日本語入力をするためには、まず日本語のフォントが必要なのでそれをインストールします。
フォントを入れた後はIMEとしてmozcを入れます。
以下2行がそのコマンドです。

sudo apt-get install fonts-vlgothic
sudo apt-get install ibus-mozc

IMEを入れるときの注意点として、再起動(ログアウト・ログインだけでもいいのかな)しないと有効にならないです。
あとは、入力切り替えをしても日本語入力にならなかったので、一度入力メソッドを削除 → 追加とやってやる必要がありました。

左上のスタートボタン
 ↓
設定
 ↓
IBusの設定
 ↓
入力メソッド
(「日本語 - 日本語」 を削除・追加)


ちなみに、日本語化しても、CLI起動で直接 raspberry pi 本体にコンソール接続すると、日本語表示できませんでした。
こうなると Raspbian Lite の場合は日本語化できなさそうな気がしますが、要調査です。
(CLI起動使わないと思うし……たぶん)

日本語化は、以下のページを参考にしております。

Raspberry Pi3で日本語表示/入力https://qiita.com/izuki_y/items/4587eb2f1634644fec05

Raspberry Pi で日本語入力https://qiita.com/negiboudu/items/9623a7f0fc565b341fab

rubyの初期設定


以下のサイトの通り、rbenvを通してインストールしてみました。

Raspberry PiにRuby (2.4.1)インストールhttps://qiita.com/orihomotakanat/items/b4a983617f64d4768b7c

せっかくlinuxディストリビューションのOSに入れるので、バージョン管理しておきたいですね。
ただ、わざわざ最新バージョンに乗り換えることはないと思いますが……。

今はRuby 2.4シリーズのバージョンが2.4.3まで公開されているので、今回は2.4.1ではなく2.4.3を指定してインストールしました。マイナーバージョンなら最新バージョンを使ったほうが無難なはずです。

しかし、いざインストールしてみると、BUILD FAILEDのエラーが……。


Results logged to の先を見てみると、以下のエラーログ(抜粋)が記録されていました。

The Ruby openssl extension was not compiled.The Ruby readline extension was not compiled.ERROR: Ruby install aborted due to missing extensionsTry running `apt-get install -y libssl-dev libreadline-dev` to fetch missing dependencies.
Configure options used:  --prefix=/home/yukari/.rbenv/versions/2.4.3  LDFLAGS=-L/home/yukari/.rbenv/versions/2.4.3/lib  CPPFLAGS=-I/home/yukari/.rbenv/versions/2.4.3/include

メッセージの通り、「sudo apt-get install -y libssl-dev libreadline-dev」を実行してみると以下の通りビルドが通ったようです。よかった。


あと、rubyを導入して、バージョン切り替えをしたときになぜか即時反映されず、一度sshをつなぎ直すと反映されました。
そういうものなんでしょうか。

Twitter bot の下ごしらえ

少し以下のサイトを参考にしました。raspberry pi ではなく Heroku 上でやっていますが、アプリ連携の部分は一緒です。

RubyでTwitter Botを作ってHerokuで動かすhttp://b0npu.hatenablog.com/entry/2016/06/15/230101#f-860a519a

恐らく、時期によってアプリ連携の作成・連携方法は変わるかもしれないので、最新の情報を探すのが良いでしょう。

半年越しの追記

実はここまでの文章は今から半年前に書いていたのですが、途中で力尽きて放置していました。もう今さら、という感じもしますが、もう書き加えることもないので上げちゃいます。

あ、Twitter botは運転中ですよ。こちらです。
https://twitter.com/stgyukari

シューティングのことをつぶやくだけの、ゆるいbotです。
今は呟きといいねだけだけど、そのうち機能を追加したい。

あとはraspberry piをもう一台買いました。
増えるわかめ、ならぬ増えるラズベリーパイ。
こちらはTwitter botではなく、データベースとWEBサービスの練習台になってもらいます。
それも、果たしてこのブログにネタを上げられるかどうか……。

以上、超久しぶり更新でした。