twitterの威力

アクセスが異常に多い

先週末の土曜日、Googleのアクセス解析結果を開いたら、目を疑うようなことが起きていた。

通常、このブログは休日になるとアクセス数が大体半分ぐらいに減るのだが、先週の土曜日は平日の倍以上、普段の土曜日と比べると4倍以上のアクセスがあった。

へ?

と思って詳細をよく調べると、過去に書いたある特定の記事だけ異常にアクセスが多い。

twitterのパワーだった。

そこで、リファラーを調べると、twitterからのアクセスとノーリファラーが非常に多いことがわかった。

どうやら、数千人単位のフォロワーを持っているユーザーの方が、私が書いたしょうもない記事にリンクを貼ってくれたらしい。

ちなみにその記事はこれ。

ちょっと、必要以上に不安な思いをさせる内容だったかもしれないと、反省しつつも、こういうコミュニティサイトの威力と、ブログを書くことに対する責任をちょっと感じてしまった。

マーケティング効果について考え直す

これも先日書いたのだが、最近新聞に広告を出したのだが採算どころか反応は全くのゼロだった。

それと比べると、今回のアクセス数は費用に換算すると計り知れないものがある。

極端な話、新聞広告に払った費用をtwitterユーザーに渡せば、小躍りして何か書いてくれるのではないだろうか?

つくづく、既存のメディアの広告の崩壊を確信してしまった。

atokのその後

Snow Leopardに変えてからatokの調子が悪くなったので、結局アンインストールして、現在は「ことえり」を使っている。

気のせいか、それ以来やたらひらがなが増えた気がする。(苦笑)

でも、やっぱり、あんな機能をデフォルトでONしておくような考え方は納得できないし。。。

twitterのつぶやきを取得して音声出力(MacOS限定)

以下で公開していたソースに「つぶやき」の中に「¥”」という文字を含めることで任意のコマンドが実行できるというセキュリティホールがありました。現在既に修正していますが、万が一すでに試した方は、以下のソースをもとに修正願います。
  • 15行目のダブルクォーテションをシングルクォーテションに変更しました。
  • 49行目の正規表現を修正しました。

ご迷惑をおかけしてすいません。

はじめに!!

以下はMacOSX限定です。
さらに、初めのうちはかなり笑えますが、それ以上のものは得られません。役にも立ちません。

一回目はかなり笑えます。そこだけは保証します。

このスクリプトは?

タイムラインから「つぶやき」を取得して音声で読み上げます。
音声は女性の声ですが、かなり棒読みです。

ところどころ改善の余地はありそうなのですが、それは皆さんにお任せします。

動作環境

  • MacOSX 10.5以上(開発は10.6で行いましたが10.5でも動作するはずです。)
  • Perlおよび以下のPerlモジュール
    • Net::Twitter::Lite
    • XML::DOM
    • LWP::Simple
  • Yahoo日本語形態素解析APIを使用していますので、アプリケーションIDの取得も必要です。
  • SayKana

インストール方法

1)まずはじめに、SayKanaをダウンロードしてインストールしてください。
インストール後は、ドキュメントに従って音声が出力されることをご確認願います。

2)以下のPerlモジュールをインストールしてください。

  • Net::Twiter::Lite
  • XML::DOM
  • LWP::Simple(これはプリインストールかもしれません。)

私の環境では、CPANシェルで問題なくインストールできました。

3)以下のソースをデスクトップ等に設置して、パーミッションを755にしてください。

3)twitterアカウントのアカウント名およびパスワードを12行目および13行目に入力してください。

4)YahooアプリケーションIDを取得して15行目に記述してください。

ソース

#!/usr/bin/perl -wT

undef %ENV;

use strict;
use Encode;
use LWP::Simple;
use Net::Twitter::Lite;
use XML::DOM;

my $twt_user = '';
my $twt_pass = '';
my $yahoo_id = '';
my $api_url = 'http://jlp.yahooapis.jp/MAService/V1/parse?appid=%s&sentence=%s&results=ma';
my $saykana = "/usr/local/bin/saykana '%s'";

my $twt = Net::Twitter::Lite->new(
 username => $twt_user,
 password => $twt_pass
);

my $r = $twt->friends_timeline();

my $n = 0;
foreach (@$r) {
 my $txt = encode_utf8($_->{'text'});
 my $url = sprintf($api_url, $yahoo_id, &enc($txt));
 my $xml = get($url);
 my $kana = &xml2kana($xml);
 print $kana."\n";
 system(sprintf($saykana, $kana));
}

sub enc($) {
 my $str = shift;
 $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
 $str =~ tr/ /+/;
 return $str;
}

sub xml2kana($) {
 my $xml = shift @_;
 my $parser = new XML::DOM::Parser;
 my $doc = $parser->parse ($xml);
 my $list = $doc->getElementsByTagName('reading');
 my @kana;
 for (my $i=0; $i<$list->getLength; $i++) {
 my $text = $list->item($i)->getFirstChild->getNodeValue;
 $text =~ s/'//g;
 if ($text =~ /^[0-9]+$/) {
 $text = "<NUMK VAL=".$text.">";
 } elsif ($text =~ /^\s+$/){
 $text = ',';
 }
 $text =~ s/\//\\\//g;
 push @kana, $text;
 }
 return encode_utf8(join("/", @kana)).",,,";
}

その他

  1. 空白はコンマに変換して一瞬だけスリープが入るようにしています。
  2. つぶやきとつぶやきの間にはコンマを3つ挿入して長めのスリープが入るようにしています。
  3. シングルクォーテションはsaykanaコマンドにおいてアクセントを意味する記号であることとセキュリティ上の配慮により削除しています。

本来は「。」であるが妥当なのですが、テキストエディタで本スクリプトを編集した際にsaykanaコマンドでエラーが出るため、半角の記号で代用しました。(UTF-8-MACによる問題と思われますが、くわしく検証していません。)

(追記)
よく考えたらUTF-8-MACは関係ないかも、いずれにしろJeditで「。」を入力した場合とvimで「。」を入力した場合で何かが違うみたい。(両方ともUTF-8なんですけど。)

ソースをご覧になるとわかりますが、別にtwitterじゃなくても別のものをしゃべらすのも、それほど難しくないので、適当にお楽しみください。

ライセンス

SayKanaおよびYahoo APIのライセンスは厳守していただけますようお願いいたします。

気に入ってくれた方は、ブログ等で紹介してくだされば、十分うれしい限りです。

Subversionでコミットした結果をtwitterに投稿する。

毎度懲りずに、マニアックなスクリプトを公開します。

最近、何かと話題になっているミニブログサービスのtwitterですが、私自身最近使い始めたところ、いろいろなオープンソースプロジェクトやメーカーが、サポートや開発の進捗状況などのアナウンスに利用していることがわかりました。

たとえば、WordPressもイベントの案内や新バージョンのリリースの発表に活用しています。

そこで、プロジェクトの情報共有等に役立つかと思いSubversionでコミットした結果をtwitterに投稿するためのスクリプトを作成しましたので公開します。

ソースをご覧いただくとわかるのですが、割と簡単なスクリプトなので、にるなり焼くなりして皆さんのお役に立てば幸いです。

投稿される内容について

本スクリプトはSubversionでコミットした際に、そのリビジョン番号およびコミットメッセージを以下のような感じでtwitterに投稿します。

[20] hogehogeを修正した

140文字を超えるメッセージの場合は137文字でカットして末尾に…を追加します。

重要な情報の漏洩等については、くれぐれもお気をつけ下さい。

ダウンロード

ダウンロードはこのリンクをクリックしてください。

インストール方法

以下で説明する方法はsubversionリポジトリにhookスクリプト(post-commit)が無い場合を想定しています。
すでにpost-commitが存在する場合は、post-commitから本スクリプトをコールするように修正してください。

1)まずはじめに、PerlのCPANモジュールの”Net::Twitter::Lite”をインストールしてください。

2)本スクリプトの21行目および22行目にtwitterのアカウント名およびパスワードを入力してください。

3)Subversionリポジトリ内にあるhooksという名前のディレクトリ内に本スクリプトを設置してパーミッションを755にしてください。(同じディレクトリ内には*.tmplという名前のファイルがいくつか存在しているはずです。)

4)Subversionリポジトリ内にあるhooksという名前のディレクトリ内にあるpost-commit.tmplをpost-commitというファイル名でコピーしてパーミッションを755にしてください。

5)post-commitに以下のソースをペースとしてください。

#!/bin/sh

REPOS="$1"
REV="$2"

/path/to/svn2twitter.pl "$REPOS" "$REV"

6)post-commitの/path/toの部分をご自身の環境にあわせて修正してください。

7)以上で設置は完了です。試しにクライアントから何かをコミットしてみてください。

免責事項

本スクリプトを使用したことによるいかなる損害にも補償いたしかねますのであらかじめご了承願います。

ライセンス

MITライセンスとします。
使用した結果のご感想やご意見をコメントくださるととてもうれしいです。

寄付について

このスクリプトは無料でご利用いただいても大歓迎ですが、寄付は大歓迎です。