ページ

2012-06-14

[web]”ろぐほー”の内側 [Twitter4jを使ったボットプログラム]

ろぐほー”では、最新のホットエントリーの要約をTwitterでつぶやいています。

いちいち要約をコピペしてつぶやくのは、面倒なのでボットを使ってつぶやいています。

今回は、そのボットがどのように作られているのか説明したいと思います。


ボットはJavaというプログラミング言語&Twitter4jというライブラリを用いて作られています。

ライブラリとは、ソフトウェアを作るときの部品のことで、この部品を組み合わせるだけで簡単に希望するソフトウェアを作ることが出来ます。

図書館に行って、参考書の記述をコピペして、希望するレポートを作成するのに似ています。
ちゃんと勉強しましょう。


話は戻って、Twitter4jを使うとTwitterのボットが簡単に作れます。

コマンドライン引数を受け取って、その引数の内容をつぶやくプログラムは以下のとおりです。短いですね。
ちなみに、コマンドライン引数ってのは、うまく使いこなすとハッカーみたいになれるとってもクールなものです。

通常、Twitterでつぶやくためには、Twitterへの認証処理(ログイン)やそもそもHTTPというプロトコル(通信のルール)に従ってTwitterのサーバと通信する処理が必要です。

また、HTTPというプロトコルはTCP/IPというプロトコルの上で作られてて、何か非常に面倒です。

いろんな法律が憲法の上に作られているのと似ている気がします。
法律が面倒なのと同様にプロトコルも面倒なのも似ているし、そもそもプロトコルは通信経路上の道路交通法と言えそうな気もします。


また脱線しましたが、そんなこんなでTwitterにつぶやきを投稿するだけでも様々な手続きが必要になり、自力で全てプログラムするのは大変です。

しかし、ライブラリを使うことで先にも示したとおり、どこで認証処理をしているのか、どこで通信をしているのかわからないぐらい簡単にプログラムが書けます。

少し詳しく説明すると、
public static void main(String[] args) throws TwitterException {
という行からプログラムが始まっています。
throws ~って部分は何かプログラムの実行に失敗したら、匙を投げるって意味です。
失敗ってのは例えばTwitterのサーバと通信ができない場合とかです。
Twitterのサーバとは大抵毎日通信ができない時があります。
if (args.length < 1) {
という行でつぶやく文章が有るかどうか見ています。
無ければ、プログラムを終了してしまいます。
Twitter twitter = new TwitterFactory().getInstance();
という行で、つぶやくのに必要な情報を設定ファイル(後述)から取得してTwitterを使用するための”通信機(twitter)”を作成しています。
twitter.updateStatus(args[0]);
という行では、さっき作った”通信機”を使ってつぶやいています。

args[0]ってのにつぶやくための文章が入っています。
この時、通信と認証が行われ、ツイートされます。

先程、認証処理(ログイン)と書きましたが、このプログラムで行なっている認証処理は通常TwitterのWebページにアクセスして行われるものとは違う認証処理です。

詳しいことは"twitter OAuth 認証"とかでググると詳しい説明が有ると思います。

ここでは詳しい説明は特にせず、先ほど行った”設定ファイル”のことを説明します。

twitter4jを使う場合には、プログラムと同じディレクトリ(フォルダ)に”twitter4j.properties”というファイルに以下の様な内容を書いて保存します。

それぞれ、意味の分からない文字列が書かれていますが、詳しくは”twitter developper 登録”とかでググると詳しい説明が出てきます。

登録するだけで、あなたもデベロッパーです。かっこいいですね。すぐに登録しましょう。

話しは戻って、”twitter4j.properties”には”自分の作ったソフトウェア”で”認証処理”に必要な情報が含まれています。

”Secret”という単語が含まれているところからも推測できる通り、他の人に教えては行けないものです。
自分のTwitterのパスワードを他人に教えないのと同じです。


そんなこんなで、JavaとTwittr4jを使って、数行のプログラムと設定ファイルを使って簡単にTwitterのボットが作れることが分かりました。

”ろぐほー”では、このTwitterボットプログラムとLinuxのコマンドであるcrontabを組み合わせて定期的につぶやく機能を実現しています。

また、今回紹介したものは簡単なものですが、プログラムを改造することによって、様々なボットが作れるようと思います。

プログラムの勉強をしたけど、腕試しになる面白い題材が無いと思っている人は、ひとつTwitterのボットを作ってみると面白いかもしれません。

あとTwitter4jのソースコードは公開されているので、読んでみると面白いです。
実際にHTTP通信しているところとか、良い感じです(もっともその辺しか読んでませんが…)。
apacheの様々なライブラリを読むのもいいですが、それらが実際に使われている場面とあわせて読めるので勉強になると思います。

0 件のコメント:

コメントを投稿