帰ってきました。セルディアです。
あまりに投稿間隔が開きましたが、生存報告を兼ねて。
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サービスの練習台になってもらいます。
それも、果たしてこのブログにネタを上げられるかどうか……。
以上、超久しぶり更新でした。