CUIのTwitterクライアントを作ってみた(効果的にTLを取得して、かつ呟いてみる)

2010年 08月 13日8:14 pm @ 大和 比呂志

1


CUIのTwitterクライアントを作ってみた(効果的にTLを取得して、かつ呟いてみる)

ツイッター楽しいですよね? いろいろなクライアントが出ていて、普段は僕はechofonをつかってるんですが、あまりに楽しくてついついジャンキー状態に。「ああこれじゃ生産性があがらない!!」と思ったのですが、でもやっぱりTLに絡んでいきたいところもあったり、、、そこでまずechofonがgrowlに対応してるので、echofon側の設定でなにをGrowlで表示するのかを設定します。そのうえでechofonのTLは閉じておくということでジャンキー状態から脱却したいとおもいます!! 目指せ高生産性!!!(笑)。

下記のようにechofon側に設定すると、取得した@やDMはGrowlに表示されるはずです。この状態でechofonのメインウインドウは閉じておきます(もしくはドックにでも格納しておきましょう)。

さて、次に投稿ですが初めは以前も使ったことがあるScalareというOSXのクライアントを使おうとおもっていました。ところが、最新のバージョンをインストールしても起動してくれない。どうやら、アカウントで認証をしないとならない旨のメッセージが出るのですが、どうにも認証の方法がわからない。。。

というわけで、パンがなければお菓子を、投稿する為のクライアントがなければ自分で作ってしまえばいいじゃないと、と久し振りに簡単なスクリプトをPerlでつくってみました。

まず、僕はMacOSXを使っているので、MacPortsでNet::Twitter:Liteというモジュールをインストールしました。Net::Twitterという別のモジュールもありますが、それよりも依存関係があるモジュールが少ないうことと今回は投稿しかする気がない。ということから(特に違いについて把握してるわけではないのですが)Liteにしました。

さて、実際にはNet::Oauthというモジュールもインストールする必要がありますが(Twitterはベーシック認証からOAuthで今後認証をすることを勧めています、、、が、期限が伸びてますね)、こちらはMacPortsにはなかったので、cpanコマンドでインストールしました。

で、肝心のスクリプトですが、以下のサイトを参考に作ってみました。

http://perl-mongers.org/2010/06/_perltwitteroauth.html

Twitterクライアントを作るには、まず自分のTwitterクライアントを http://developer.twitter.com/ で登録します。そのあたりについては、上記のサイトに詳しく書いてありました(ありがとうございます)。

で、スクリプトは以下のようにしてみました。

#!/usr/bin/perl

use strict;
use warnings;
use Encode;
use utf8;
use Net::Twitter::Lite;
use Data::Dumper;

my $tw = Net::Twitter::Lite->new(
consumer_key => '*****************************',
consumer_secret => '************************************',
ssl => 1,
);

$tw->access_token('***********-**********************************');
$tw->access_token_secret('*******************************************');

for(@ARGV){
my $string = decode_utf8($_)
if( length($string) > 140 ){
print "over 140";
}else{
$tw->update($string);
}
}

exit
__END__

***のところにはデベロッパーサイトで取得したそれぞれの情報を入れてください。いちおう、140文字を超えていたら警告してくれるようにしてみましたが、自分専用ということでそれほど深く考えずにつくっています。

こうして書いたスクリプトを保存して(僕は tw という名前で保存しました)PATHをとおしておくことで、Terminalから

tw ‘おなかがへったから早くご飯にいきたよー。。。’

などと書いてリターンするとTwitter上に呟かれました。アプリケーション名にyamatwit_cmdと書いてある呟きはすべてこのスクリプトを経由してのものになります。

というように、今回はPerlでの簡単なスクリプトでしたが、僕が実際にかいたコードの量はこれっぽちです。実際の認証をしてるモジュールなど共有されている資産があることから、こういう生産性が実現されます。プログラムというと敷居が高いような気がしますが、こんな感じでちょっとしたプログラムの文法や作法と、便利なモジュールという道具を使うだけで実際に動いて結果がでるという経験が出来ます。これ、とても楽しいですのでみなさんもトライしてみたら如何でしょうか?

せっかくOSXもってるならこういう事にも使わないと損ですよ!!

さて、こういう簡単なプログラムについてアライアンス・ポートで毎月やっているサロンなどでも採り上げていこうとおもいますので、興味のある人は御気軽に参加してみてくださいね。

最後に実際のWebの画面とターミナルの画面の感じを掲載しておきます。これつかってると本当に只々「つぶやいてる」だけ、という感覚になるから不思議なものですね(笑)。機能があるってことは意味を変えていくんだなぁ、と感じた瞬間でした。