RailsでTwitter botを作成

スポンサーリンク

Rails プロジェクトで Twitter bot を作成する手順です。その名の通り twitter という名前の gem を使うと、とんでもなく簡単に Twitter の各種 API を操作できます。今回は単純に “Hello Twitter!” とつぶやく bot を、Rails の rake タスクとして作ってみました。

GitHub: sferik/twitter

Readme に大体のマニュアルが書いてあります。

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

— 環境 —
rails 4.1
ruby 2.1.2
twitter 5.13.0

Twitter bot 作成にあたって、以下のページが参考になりました。

3分でスッキリ! Oauth 1.0図解とRuby Twitter bot開発 | KumanBlog
rubyでtwitterのbotを実装する(第5世代のやり方) – Qiita

【追記 2014/11/20】
はてなブックマークで以下のコメントを頂きました。

supermomonga これRailsでやる必要性あるのかな

今回のケースでは、既存のRailsプロジェクト内にTwitter botを作成するのが目的でした。実際のツイート内容はRailsモデルのDBから取得します。

なので、Twitter botを単独で作成する場合は、Railsを使わずに単にRubyスクリプトで作成すれば良いかと思います。supermomongaさんご指摘ありがとうございました。また、言葉足らずな説明ですいませんでした!
【追記ここまで】

bot 用アカウントを作成し、コンシューマーキー&アクセストークンを取得

まずは bot 用の Twitter アカウントを作成してログインします。その後、以下の Twitter デベロッパーページからコンシューマーキーとアクセストークンを取得します。

Twitter Apps

「Create New App」をクリック。

1. PermissionsタブのAccess → Read and Write に設定。
2. Keys and Access TokensタブのAppication Settingsから「Consumer Key (API Key)」「Consumer Secret (API Secret)」を取得。
3. Keys and Access TokensタブのToken Actionsで「Create my access token」をクリック。
4. access tokenが生成されるので、Your Access Tokenの「Access Token」「Access Token Secret」を取得。

必要となるトークン類の準備は以上。

twitter gem をインストール

Gemfile

Twitter bot 用の Rake タスクを作成

Rails プロジェクト内に Twitter bot のプログラムを設置するので、rake タスクとして Twitter bot を作成することにしました。twitter という rake タスクをジェネレート。

rake タスクの中身を書きます。とりあえず、”Hello Twitter!” とつぶやくだけの bot です。

lib/tasks/twitter.rake

“YOUR_CONSUMER_KEY” など各種トークン類は、config/secrets.yml 等で設定すれば良いかと思います。client.update は140文字超だとエラーを返す仕様だったので、独自の update メソッドでラップしました。以下あたり参考。

10分でできるTwitter bot @ Ruby – 酒と泪とRubyとRailsと
twitter bot 作成 – Qiita

ツイートを行う rake タスクはこれで完成。

ツイートの rake タスクを実行

以下のコマンドで、rake タスクを実行します。

このコマンド実行で、設定した Twitter bot 用アカウントに “Hello Twitter!” とつぶやかれるはずです。試したところ、連続で同じ文字列でツイートすると弾かれるようなので、連続して試す場合は文字列(tweet)を変更させる。

あとは、実際にツイートする内容のロジックを組み立てるのと、定期的にツイートさせるための cron 設定など。Rails の場合であれば、whenever を使って cron でツイートの rake タスクを実行すればOKです。whenever については以下参照。

wheneverでActiveRecord管理の古いセッション情報レコードを自動で削除 | EasyRamble

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
 
スポンサーリンク

Leave Your Message!