2009年12月26日土曜日

Computer Humanoid Interface

Computer Humanoid Interfaceというソフトを10月くらいから開発を始め、25日にリリースができた。マシンの監視のためのジョブを簡単に追加できて、出力はついったーに流せるので、「その時間に何が起こったか」を確実に残すことができる。
自然言語を理解したりするが、そのあたりの一切の処理はコアがやるので、ちょっとした管理スクリプトを組みたいだけなのにI/O関連の処理で時間をとられることがない。人間に指示を出すように簡単に機能を追加できるようにしたかったため、コンピュータの人間用インターフェイスとした。
これからブログには、CHIの機能をつらつらと書いていこうと思う。今回は、今後の展望を書く。

まず、プラグインで拡張できるので、逆に言えば簡単に取り外せる。プラグインは全てplugin/の中に入っていて、このうち絶対に必要なのはplugin.rbとmother.rbだ。あとは消してしまって構わない。
そうすると、何も監視しない、かつ何も出力しないCHIができあがる。一体こんなものになんの意味があるのか、と思われるかも知れないが、逆に言えば、ここからいかなるBOTでも創ることが出来てしまうのだ。
例えば、「〜食べたい」「〜たべる」などというポストがTL上に現れたら「〜おいしいよね」と返答するBOTを作りたいと思った場合、仮想コードだがだいたい以下のようになる。(なお、以下は次回実装予定の、フレンドタイムラインが更新されたときに1ポストごとに呼ばれる「onfriendtl」を使っている)


require 'utils'
require 'plugin/plugin'

module Plugin
class WannaEat < Plugin

def onfriendtl(watch, message)
if(message.body =~ /([^ 、。 ]*?)[食た]べ/){
return message.post(Message.new("$1っておいしいよね!", :tags => [self.name]))
}
end
end

end

# プラグインの登録
Plugin::Ring.push Plugin::WannaEat.new,[:friendtl]


以上のように、ついったーにつぶやく部分や、取ってくる部分はそもそも書く必要すら無い。しかも、onfriendtlのようなイベントハンドラが用意されているため(次回リリースからだけど)定期的に確認に言ったりする処理も書かなくて良いのだ。CHI付属プラグインは、このあたりにコンピュータの管理ロジックを書いており、必要なコマンドが無い場合は、プラグインの登録をしないようにしている(自動的にOFFになる)。

ここから考えられるのは、TwitterのBOTのフレームワークになりうる、ということ(というか、もうすでになってる)。つまりBOTが量産できる。
さらには、GUIフロントエンドをつけてしまえば、Twitterクライアントまで創ることが可能になる。これはなかなか面白い試みだと思っている。

ほかにも、設定ファイルへの簡単なアクセス(各プラグインの@configに、設定ファイルの内容が最初から入っている)、簡単なkey-valueデータベースの提供(at(:key)で取り出し、store(:key,val)で書き込みができ、再起動後も値が維持される)、画像投稿への対応(画像を含むMessageオブジェクトを渡されると、twitpicにアップするようになっている)など、BOTを創るにあたって必要そうな機能をだいたい持っているし、これからも短縮URLなどに対応する予定になっている。

0 件のコメント:

コメントを投稿