Twitterボット復旧

旧Open Tech Pressの時代から、FollowするとTwitterで本サイトの更新をお知らせするbot(http://twitter.com/opentechpress)を運用しているが、10/13ごろから更新が止まっていた。しばらく時間が取れずに放置していたが、復旧させたのでご報告する。今後もご愛用頂きたい。

botはPlaggerで実装されているのだが、特に最近当方がいじったということはないので首をひねっていた。いろいろ調べてみたところ、止まった10/13前後にTwitter社のほうで、いくつかスパムアカウント対策が導入されたらしいことが分かった。「いくつか」「らしい」というのには理由があって、公式ブログでは一つだけ(スパムアカウントの報告が出来るようになった)しかアナウンスされていないのである。

で、他のいくつかというのがどうやら、(1)一定期間内(あるいは一定投稿数以内?)の同一文面による重複投稿をはじく(2)140字を越える投稿は無視して更新しない、というようなものだったらしい。本サイトのbotのつぶやきは大概の場合140字を越えてしまうので、今回は後者のほうにひっかかってしまったわけだ。今までも最大160文字という制限はあったが、溢れた場合でも単に溢れた部分が切り捨てられるだけで更新自体は行われていたように記憶している。黙って無視するのではなく、せめてエラーでも返してくれればもっと簡単に分かったのだが…。

ちなみに対処としては、Plagger/Plugin/Publish/Twitter.pmにおいて

- if ( length($body) > 159 ) {
- $body = substr($body, 0, 159);
+ if ( length($body) > 139 ) {
+ $body = substr($body, 0, 139);
などとするとよいと思う。

ちなみに、botのテスト中は短期間のうちにどうしても頻繁に同内容のメッセージをつぶやかせてしまうわけだが、こちらは(1)にひっかかってしまうので、やはり更新されない(おまけに、期間の長さや投稿数の閾値はころころ変わるようである)。しばらくその切り分けが出来ず悩んでしまった。再現条件が分からないバグほどうんざりするものはない。

まあ、スパム屋との戦いで手の内を全て見せたくないという気持ちは分からないではないが、こういうのを見ると、やはりウェブサービスであっても実運用中のソースコードが見られないというのはひどく不便なものだというのが身に染みて分かった。そのうち、フリー/オープン・ウェブサービスの定義と必要性についての記事を書くことになろう。