Page 3 of 27: « 1 2 3 4 5 6 7 8 9 10 11 »





さくらのレンタルサーバで Twitter bot を動かす

Posted at Wed, 14 Apr 2010 in computer::web

私のタイムラインには人間だけじゃなくてbotがたくさん混ざっているのですが、自分でもなんとなく作りたくなったので作ってみることにしました。
主な手順としてはざくっとこんな感じです。

Twitterアカウントを取得

ひとつのメールアドレスで複数のアカウントは取得できないので GMail のエイリアス機能を使いました。example+twitter@gmail.com みたいなアドレスです。もちろん Bot 専用のメールアドレスを用意してもいいと思います

Bot用スクリプトをダウンロード

pha さんによる「プログラミングができなくても作れるTwitter Botの作り方 からスクリプトをダウンロードしてこれを使いました。最新版の 2.0x系を使用しています。今のところこのスクリプトが一番有名でHowtoも多いのではないかと思います。もっと簡単な方法として、 ボットジェネレーター を利用する、という方法もあるようですが、こちらは使ったことがありません。

データの用意

Botが呟くデータを用意します。今回は小説のキャラクターのBotだったので文庫本に付箋を貼ってセリフを打ち込みました。なんだかんだでこの工程に一番時間がかかっています。
また、Bot の挙動についてもこのへんで決定しておく必要があります。ただ呟くだけ、タイムラインに反応する、@ つきで話しかけられたら返事をする、など。
pha さんのスクリプトの場合は、「用意したテキストからランダムに発言する」「用意したテキストを順番につぶやく」「@ つきではなしかけられた場合にリプライを返す」「タイムラインを取得してリプライを返す」の4パターンの挙動が設定可能です。リプライの場合には反応するキーワードとそれに対応する答えをセットで決めておくことができます。
Bot がリプライを返すようにする場合、Bot をフォローしてくれそうな層(今回の場合だと同じ小説の別のキャラクターのBotをフォローしているユーザなど)があらかじめ想定できる場合には、そういった人たちが Bot になにを話しかけたりしているか調べてみたりすると参考になるかもしれません。
http://search.twitter.com/ で to:(screen_name) と入力するとどんなふうに Bot にはなしかけられているかを見ることができます。

データファイルについては先述のサイトに詳細があるのでそちらを参照してください。

OAuth認証用のアプリケーションの登録とキーの取得

今回使ったスクリプトは OAuth の認証が必要になるものなので、「Consumer key」「Consumer secret」「 Access Token」「Access Token Secret」の4つのキー(+Botのscreen_name=ユーザ名)が必要になります。このうち「Consumer key」「Consumer secret」は、Botを動かしているスクリプトごとに固有となり、「 Access Token」および「Access Token Secret」が、アカウントごとに固有文字列になります。pha さんのところでも取得できますし(その場合発言元が EasyBotterになります)、少し頑張って PHP+OAuthでTwitter - SDN Project などを参考にして自分でOAuth用のスクリプトを設置して設定しても良いと思います。と書くと少し大げさですが、実際は拍子抜けするぐらい簡単にOAuthスクリプトが設置可能です。

Bot用スクリプトの設置

pha さんのサイトに書いてある説明を見ながら設置を行いますが、1.0系の説明が少し混ざっていたりするので適時応用させることが必要です。とりあえず展開したファイルをフォルダごと全部FTPなどでサーバに転送して、bot.php だけ実行権限を 705 とかに変更しました。
さくらのCronでしか動かさないというのであれば公開できるところに置いておく必要はない(実行権限を与える必要もおそらくない)のですが、Google App の Cron で動かす場合やブラウザ経由で手動で動かすときのために、WWW からアクセスできる場所に設置しておいたほうが便利だと思います。ただしURLを知られるとむやみやたらと Bot が喋りだすということになりかねないので、その辺は適時自衛が必要だと思います(わかりにくいディレクトリにファイルをおく、スクリプトをいじって決められた時間以外はツイートしないようにする、Basic 認証をかけておく、etc)
http://~/bot.php をブラウザで叩いて、投稿に成功しました、というメッセージが出れば設置は完了です。

Cron(定期実行)の設定

このままだと手動で Bot の URL にアクセスしたときにしか Bot が呟かないので、定期的に呟くためと、リプライを行うために Cron の設定を行います
レンタルサーバのスタンダードプランだと5つまでCronの設定がコントロールパネルから可能です。
設定については「さくらインターネットのCRON設定を可能な限り簡単に解説したい 」なんかがわかりやすいと思うので参考にしてください。

この Bot はリプライを返すのですが、プログラム側で条件分岐するのも面倒だったので、rep.php というphpファイルを新しく作って、ランダム投稿および自動フォロー返しをする本体 bot.php とは別々に動かしています。

rep.php の中身はこれだけです。

<?php

require_once("EasyBotter.php");
$eb = new EasyBotter();
$response = $eb->reply(6,"data.txt","reply_pattern.php");

基本的に bot.php を1時間に2回、rep.php を6分おきに動かしています。さくらのレンタルサーバでの Cron の最短実行間隔は不明ですが、2分とか3分でもいけるのではないかと思います。このアカウントは後述するあらったーやローカルクライアントでも参照しているのであえて間隔をあけてあります。
Cron の設定では実行コマンドで、bot.php を設置したフォルダに移動してから php で実行しているところがポイント。cd での移動がないとライブラリが読み込めず、Bot が動作しない模様です。

通常発言の設定

実行コマンド
cd /home/~/botを設置したフォルダ ; /usr/local/bin/php -q bot.php > /dev/null
実行日時
月、日、時がそれぞれ「*」、分が「22,50」
曜日
全ての曜日にチェック

リプライの設定

実行コマンド
cd /home/~/botを設置したフォルダ ; /usr/local/bin/php -q rep.php > /dev/null
実行日時
月、日、時がそれぞれ「*」、分が「3,9,15,21,27,33,39,45,51,57」。
曜日
全ての曜日にチェック

分の設定は6分おきなら「*/6」とかで構わないのですが、毎時0分にいろんなBotの発言がタイムラインにどばっと流れるという現象が自分のタイムラインで起きていて、そのタイミングを回避しようとした結果こんなことになっています。

テスト

設置してからしばらくはアカウントに鍵をかけて非公開にして運用テストをしている人もいるようです。が、まぁお遊びBotなのでこのへんは適当に。私は試験運用ですとBotのプロフィールにのせて最初からずっと公開アカウントで運用しています。

Bot説明サイトを作成

Bot の説明と Twitter 以外の窓口(中の人あてのフォームメールやメールアドレス)があったほうがいいと思うのでそのための Web ページを用意しています。これは Wiki で簡単に作りました。DM を Bot にとばせばたしかに中の人には届くのですが、そのために Bot をフォローしなくてはいけない、というのはなんだか面倒くさい気がしたので。

その他

どんなことを話し掛けられているか、というのをあらったー を使ってメールで知らせてもらっています。これを見てリプライの内容を増やしたりしています。このサービスだとプロテクトのユーザの発言も知ることができます。「基本的には2分おきにAPIを参照」しているようです。
また、リムーブされたときに知らせてくれるQwitter というサービスがあるのでこれも併用しています。このサービスはリムーブされる直前の発言を知らせてくれるため、これを知るために使っています。Bot なのでどんなタイミングでどんな返信を返すか完全は把握しきれない(というか、そのほうが「らしい」と思うのであえてそういったランダムな要素をいれている)というのがその理由です。



Mac OSX Snow Leopard でディスプレイをスリープさせる(オフにする)ためのショートカットキー

Posted at Thu, 08 Apr 2010 in computer::mac

「システム環境設定」「 デスクトップとスクリーンセーバ」で画面の任意の片隅にマウスカーソルを持っていくと画面をスリープにすることもできるのですが、私の場合は意図せず作動してしまうことが多かったので、キーボードでできないかと探したらありました。

Control + Shift + (ディスクの取り出し用キー)
Leopard 以降で有効だそうです。

Macの手書き説明書より。



blosxom のこまごまとした改造

Posted at Fri, 02 Apr 2010 in computer::blosxom

WOMO はたいてい下書きを howm-wrapper で書いて適当フォーマッタで blosxom 用ファイル生成、という手順で更新しているのですがその下書きの日付が3月9日だったので区切りとして残しておきます。blosxom の、というか WOMO の、このサイトの改造話。

アーカイブの日付を変更

右端または最下部に出る日付の「月」の部分が「/02」とかになっていて、目で見れば意味は(たぶん)わかるだろうけれど、ユーザビリティ的にこのリンクが何のリンクかさっぱりわからない、ということに遅まきながら気がついたので「2010-02」の形式にしてみました。
これなら辛うじてわかるはず。

ついでに年のところも「2010」とシンプルな表示だったのを「2010年」としました。わかりやすく。config.cgi および plugins/archives に直接手を入れています。

アーカイブから年を選択したときに、タイトルの一覧が出るように変更

2010年というリンクを押したときに、その年の記事がずらずらーと並べられるのではなくて、タイトルのみの一覧になるように変更しました。エントリの少ない年がさみしいことになっていますが、まぁ、細かいことは気にせずに。list_title_at_yearプラグインを改造して導入しました。

カテゴリの作成と整理

カテゴリを追加して、投稿を適切だと思われるカテゴリに移動しました。

はてなブックマークと del.icio.us と Twitter に対応

一覧のページを見ていてクリップしたい記事があったときにいちいち Permelink クリックしてからブックマーク、というひと手間が面倒だということを他のブログで思ったのでとりあえず暫定的に自分が使っているサービスとユーザの多そうなサービスに対応してみました。これは今後もうちょっと調整していきたいと思ってます。

Twitter のアイコンを右側に設置してみた

なんか Follow Me バッジとかがすごくはやっててあの鳥さんはたしかにスタイリッシュで可愛いと思うのですが日本人は鳥といったら千鳥でしょう、とベジェ曲線をぐりぐりいじって千鳥の画像を作りました。
フォローミー千鳥じゃなくてフォローミーエイとかにすれば良かったかもしれません。が千鳥の時点で相当わからないことになっているのに拍車をかけそうでもあります。



irc-mode の適当シンタックス on xyzzy

Posted at Mon, 29 Mar 2010 in computer::xyzzy

xyzzy の irc-mode で psearch をつかった検索をするときに、nick のハイフンとかアンダーバーとかが単語が区切りとみなされてしまうのが面倒なので、text-mode のシンタックスから適当にコピペしてみました。
psearch するときの便利さが格段に違います(自分調べ)。それから dabbrev-expand とかでの補完がばしっときまるのが嬉しい。
不具合が出たら適時調整していこうかなと。
コメントアウトした行があったりするのは text-mode からコピペしてきた名残などです。

(defvar *irc-dialog-mode-syntax-table* nil)
(unless *irc-dialog-mode-syntax-table*
  (setq *irc-dialog-mode-syntax-table* (make-syntax-table))
;  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\&)
;  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\*)
;  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\+)
  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\-)
;  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\/)
  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\_)
  (set-syntax-symbol *irc-dialog-mode-syntax-table* #\|))
(add-hook '*irc-dialog-mode-hook*
          #'(lambda () (use-syntax-table *irc-dialog-mode-syntax-table*)))


Wiki ばな #8「Wiki と集合知」に行ってきた

Posted at Mon, 22 Mar 2010 in computer

第八回Wikiばな - Wikiと集合知 に参加してきたので、例のごとく走り書きのメモを転記します。懇親会の10秒自己紹介で口走っていた wiki に関する記事は「FreeStyle Wiki を使って普通の Web サイトを作る」。

LT

銅鑼が鳴るまでがLTです。

shino:第八回Wikiばな「銅鑼を叩かれるまでが前説」

(Wiki ばな #8 についての説明)

西小倉宏信:mindia.jpを運営して気づいた個人Wikiの可能性
svslab:はみ出し者に,愛を:「みんなの意見」の超え方
motohasi:集合知は、どこまでできるか?

塚本牧生氏:群衆の知恵・集団的知性と Wikiコラボレーション

日下九八(User:Ks aka 98)氏:Wikipediaと集合知

江渡浩一郎氏:「合議の知を求めて」を読む

岡田良太郎氏:「わたしの、みんなの・・・とタイムライン(+ α)」

おわりに(ただただし氏)

その他

懇親会

プログラムだけ見て長いと思っていたのですが、全然そんなことはなく密度の濃い短いぐらいの時間でした。Wiki ばなの懇親会は初参加だったのですが参加して良かった。
やっぱりこういうイベントはちゃんと自分の足で移動して参加することが自分の中ではとても重要だと再確認しました。UST 参加とかは本当に向いていないようです。

マイクロトレンド―世の中を動かす1%の人びと マイクロトレンド―世の中を動かす1%の人びと
マーク・J. ペン
日本放送出版協会 (2008-04)

「みんなの意見」は案外正しい (角川文庫) 「みんなの意見」は案外正しい (角川文庫)
ジェームズ・スロウィッキー
角川書店(角川グループパブリッシング) (2009-11-25)

「空気」の研究 (文春文庫 (306‐3)) 「空気」の研究 (文春文庫 (306‐3))
山本 七平
文藝春秋 (1983-10)



Windows 版 Opera 10.5 でタブバーを出さずにメニューにアクセスするには Alt キーを押す

Posted at Sat, 20 Mar 2010 in computer::software

世界最速のブラウザというので Opera の 10.5 をインストールしてみたら、今までと微妙に使い勝手が違ってきていました。

そして設定がどこにもない、どこからも設定変更ができない、といろいろ探したところ、タブバーを表示して左上のO(Opera の O)ボタンをクリックするとメニューが出てくることが判明しました。でも私はタブバーを表示しなくなってしまっているので、これはどうにかならないのかな、と Twitter で(またしても)つぶやいてみたところ、Alt キーを(気持ち長めに)押すとメニューが出てくることが判明しました。教えてくれた方ありがとうございます。

パネルやステータスバーで右クリックすると概観のカスタマイズだけはできるので、どうせならここに一緒に加えてもらえるとわかりやすかったのですが。

教えていただいたサイト

Choose Opera 日本支部 - はじめての Opera #2 : タブ



開発環境として使っている Firefox の Addon リスト

Posted at Fri, 19 Mar 2010 in computer::software

(X)HTML や CSS、時々 Javascript などの作成や修正を行うのに便利な拡張をこれでもか、と投入した Firefox のプロファイルで、アドオンの数が結構すごいことになってきたのでメモしておきます。全部有効にしていると結構重たいのが難点なのですが、無効にしてしまうといざ、というときにつかえなくて再起動する羽目になって結局非効率的であったりします。

改めてみてみると開発に関係ないものも沢山入っていますが、開発関係で重要なのはFirebugIE TabPopup ALT AttributeEditCSSHtml ValidatorViewSourceWithWeb DeveloperFireMobileSimulatorぐらいでしょうか。

Extensions (enabled: 31, disabled: 3):

Themes (2):

Plugins (7):

  • Adobe Acrobat
  • IE Tab Plug-in
  • Java Deployment Toolkit 6.0.160.1
  • Java Deployment Toolkit 6.0.170.4
  • Java(TM) Platform SE 6 U17
  • Mozilla Default Plug-in
  • Shockwave Flash