動機
最近はTwitter Botを作るのも飽きたので、仕事でも使うことになるかもしれないGoogle Wave Robotを触ってみました。Python Hackathon #3で id:a2c さんにざざっと概要や勘所を教えてもらったので、そのメモを書きます。
参考
準備
RobotのPython Clientをダウンロード
Google Codeのプロジェクトから取得。Downloadsにあるzipは多少古かったりするみたいなんでSubversionの最新版をcheck outした。
$ svn co http://wave-robot-python-client.googlecode.com/svn/trunk/ wave-robot-client
$ tree wave-robot-client
wave-robot-client/
|-- LICENSE
|-- NOTICE
|-- pydocs
| |-- api-objects.txt
| |-- class-tree.html
...
|-- samples
| `-- dummy
| |-- app.yaml
| `-- dummy.py
`-- src
`-- waveapi # これをRobot用のAppEngineプロジェクトにコピー
|-- __init__.py
|-- document.py
...
|-- run_unit_tests.py
|-- simplejson
| |-- LICENSE
| |-- __init__.py
...
AppEngine Spotを用意する
Google Wave Robot (以下Robot)を作る際はAppEngineで1アプリケーションを必要とします。とりあえず適当にアプリを作成します。

今回はとりあえずデモを作ってみるということで、下記のサンプルを使いました。
このサンプルからwave.pyを下記の配置になるようにコピー。
$ tree ymotongpoorobot
ymotongpoorobot/
|-- app.yaml
|-- index.yaml
|-- main.py
|-- wave.py # Robot本体。サンプルよりコピー
`-- waveapi # SVNからとってきたものをコピー(上記ディレクトリ構造参照)
|-- __init__.py
|-- document.py
|-- document_test.py
...またapp.yamlの編集。RobotはAppEngineの/_wave/.* を見に行くようなのでその設定をする。
$ cat app.yaml application: ymotongpoorobot version: 1 runtime: python api_version: 1 handlers: - url: /_wave/.* # Robot用に追加した。サンプル内のapp.yamlよりコピペ script: wave.py - url: .* script: main.py
RobotをWaveに登録する
上記のようにAppEngineにRobotの本体を置いたら、下記のようにRobotをWaveのContactに追加します。
@appspot.com

登録するとcontact listに追加するか聞かれるので追加して、それを選択してあげてからNew Waveを選択。

すると、AutoReplyのサンプルなのでRobotが「Waveに追加された」というイベントを受け取って返信してきました。

ここから先は?
APIリファレンスとかサンプルをとりあえず見てみるのが早いと思います。
自分の理解でRobotの実装の中心はイベントハンドラの実装だとおもうので
- waveapi.events
- waveapi.document
あたりがよいかと。
Robotを自律させたい
やっぱりRobotなんで勝手に働いてもらいたいなあと思いますよね。で、id:a2cさんから「AppEngineのCronに仕込めるみたいだよ」と教えてもらいました。
この関数に与えるべき引数が若干曖昧ですがトライしてみようと思います!