sifue's blog

プログラマな二児の父の日常 ポートフォリオは www.soichiro.org

GAE/Jで作られたOAuth認証可能なTwitterボット作成サービスを作成

今まで、ずっとRubyで作ってきたTwitterボットですが、ついにGoogle App Engine Javaに移植し、誰でも簡単にOAuth認証Twitterのボットが作れるサービス(Twitter bot generator)を作りました。これで、だれでも簡単にTwitterボットを作成できます!


Twitterボット作成サービス - キャラボット v0.8.0


ちなみにサンプルは、いつものことながらアイシャボットです。GAE/Jのクラウド環境に移行しても順調に稼働してくれています。


この度は初めてのクラウドプログラミング。サーバーの実体が仮想化してどこにあるかわからないだけあって、やっぱりロケールタイムゾーンに気を使う実装となりました。なにげにスリープ機能が厄介。あと、なにげにデータストアは保存に失敗することもあるらしいので、今後そいういう部分の実装もしていきたいところ。


あとGoogleのアカウントとTwitterのアカウントがあれば誰でも簡単にボットが作れるので、例えば自分のTwitterアカウントを登録しておいて自動返信させるとかもひとつの手です。何かキャラクターのボットを作って見たいというかともぜひお試ししてみてください。


以下、ボットの機能の説明です。Ruby版とほぼ一緒です。

  • Twitterボット作成サービス - キャラボットについて

Twitter ボットとは、定期的に決められたメッセージの中からランダムにTwitterに投稿したり、また自分に当てられたメッセージや自分がフォローしている人のタイムラインを解析して自動的に返信を行ってくれるロボットです。このサービスでは、GoogleのアカウントとTwitterのアカウントを使って Twitterボットを作成、管理できます。ちなみにこのサービスを使って作成しているボットに、アイシャボットがあります。


世の中にどのようなキャラクターボットが存在しているかは、Twitterのアニメ・ゲームなどのキャラクターbotまとめ をご覧ください。


  • このサービスで作成するTwitterボットの機能ついて

・決められたリストの中からランダムに投稿する機能

・自分宛の投稿に対して、キーワードをが含まれる場合に返信を行う機能

・自分のタイムラインに対して、キーワードが含まれる場合に返信を行う機能

・自分のフォロワーをフォロー仕返して、ウェルカムメッセージを投稿する機能

大きく分けて4つの機能があります。投稿は決められたリストの中からランダムで投稿されます。投稿を行う間隔などは設定することができ、普通の投稿は夜の2 時から6時の間はスリープさせておくことができます。なお解析に使うキーワードは含むかどうか以外に、正規表現を使ってマッチさせることもできます。なお、返信に関する投稿は自分宛のもの、さらにキーワードの上から優先して返信され、一度返信を行った投稿に対しては二度返信を行いません。

なお、投稿メッセージは改行でリストとして以下のように入力します。


こんにちわ。

今日は、#date#ですよ。

まだ#time#、がんばってね。

#user_name#さん、お疲れ様。

この#stop#タグが含まれる場合は投稿をしません。


以上のようにいくつかのタグを投稿に含めることができます。#date#は「◯月◯日」に、#time#は「◯時◯分」、#user_name#は返信相手のユーザー名に置換されます。なお、#stop#タグが含まれる場合は投稿を中止します。ボット同士で会話が続いてしまうようなキーワードに対しては、#stop#タグを返信の中に含めておくことで永久にループしまうようなことを防ぐことができます。

なお、このサービスで作成する Twitterボットは、BASIC認証ではなく、OAuth認証という方式を使っています。ですので、このサービスを作成する際に、Twitterのパスワードをこのサービスに入力するということはなく、安全に使うことができます。さらに、OAuth認証を使った時のメリットとして、投稿時の from◯◯からの◯◯を自由に設定することができます。



  • 早速ボットを作成してみましょう!

まず最初にGoogleのアカウントとTwitterのボット用アカウントが必要になります。

Googleのアカウント作成

Twitterのアカウント作成

なお、そのどちらも持っている場合は早速このページの右上のログインを行って、新規作成を行ってみましょう。


  • 要望、質問など

このサービスは、吉村 総一郎 (Soichiro Yoshimura)個人で開発・運営しています。何か要望や質問がある場合には、Twitterのアカウント(@sifue)にダイレクトメッセージなどを送って頂ければと思います。まだv1.0.0になっていないβ版ですが、少しずつ要望を取り込んで行こうと思います。温かい目で見守ってください。