Twitter関連の何かをしたいとき、本当は、CPANなんかにある「Net::Twitter」関連のモジュールをインストールするのがてっとり早いんですが、普通のPerl/CGIが動くサーバーは、CPANすら自由に動かすことができないので、別の方法で実現する必要があります。
では、具体的にどんな方法があるか?
私が思い浮かぶ一番簡単な方法は、RSSフィードを生成して、それを使ってつぶやかせることです。RSSフィードさえあれば、それをTwitterに送るサービスはいくつもありますので、比較的簡単に実現することができます。
では、具体的にやってみましょう。
■PerlでRSSフィードを生成する。(RSS 2.0の方が簡単なので 2.0で生成してます。)
※当然ですが、このまま記述しても、環境によって違うので動きません。ソースの一部だけですし(笑)
#
# RSS 2.0 フィード生成 サンプルソース
#
sub rss_20 {
open(RSS,”> $rss_file_name”) || &error;
my ($week, $month, $day, $time, $year) = split /\s+/, scalar(localtime());
my $now = “$week, $day $month $year $time +0900″;
print RSS <<END;
<?xml version=\”1.0\” encoding=\”UTF-8\” ?>
<rss
xmlns:dc=\”http://purl.org/dc/elements/1.1/\”
xmlns:content=\”http://purl.org/rss/1.0/modules/content/\”
version=\”2.0\”>
<channel>
<title>ロボットのいる生活。</title>
<link>http://b1.robot.am/</link>
<language>en</language>
<description>キリ番を報告</description>
<lastBuildDate>$now</lastBuildDate>
<item>
<title>[$time] ブログ「ロボットのいる生活。」は、$cnt アクセスを通過しました。</title>
<link>http://b1.robot.am/?cnt=$cnt</link>
<description>
♥このお知らせ機能は、TwitterのAPI(Net::Twitterなど)を使用しないで実現してます。
このため、CGIの動く一般的なレンタルサーバーにも組み込み可能です。
詳しくはこちら → http://b1.robot.am/
</description>
<category>Counter</category>
<dc:creator>avalon1982</dc:creator>
<pubDate>$now</pubDate>
<guid isPermaLink=\”true\”>http://b1.robot.am/?cnt=$cnt</guid>
</item>
</channel>
</rss>
END
close(RSS);
}
※日時を変更してもURLが変わらないと変わったと認識されなかったりするので、パラメータとして、カウンター値を設定してます。実際には何も使っていません。(拾えることは拾えるんですけど。)
■Yahoo! PipesでRSSフィードを統合する。
上記で生成したRSSフィードをそのまま、twitterfeedなどに送ってしまってもいいんですが、私は一旦Yahoo! Pipesに入れています。
この理由は、複数同じような実現したいものがある場合(上記のプログラムを複数アイテム仕様に変更するのはイベントが同時に起こるわけではないので意外と大変です)、あるいはブログ本体と配信元を揃えたい場合、Yahoo! Pipes経由にした方が便利だからです。 流したくない内容のフィルタリングもできますし。
■Yahoo! Pipesで統合したフィードをtwitterfeedなどに登録する。
以上でできあがりです。いかがでしょうか?