Google Wave @ pySpa

pySpa こと、python 温泉 2 日目です。昨日から今日にかけて、@atusi さんと、Google Wave のロボットを作ってみました。pyzon (旧 pyAWWS) を使って、asin:[ASINコード] をタイトルに変換するというボットです。アカウントをお持ちの方は、amzbot@appspot.com を追加すると試すことができます。今のところ、html を blip に表示することはできないので、リンクもテキストになっています。
参考にさせていただいたサイト、およびコード
以下が実際のコードです。

# coding:utf-8

from waveapi import events
from waveapi import model
from waveapi import robot
from pyzon import AWSECommerceService

ROBOT_NAME = 'amzbot'
PROFILE_URL = 'http://%s.appspot.com/' % ROBOT_NAME
IMAGE_URL = PROFILE_URL + 'icon.gif'

awsecapi = AWSECommerceService(
  ACCESS_KEY_ID,
  SECRET_ACCESS_KEY,
  associate_tag = ASSOCIATE_TAG,
  locale = LOCALE
)

DEBUG = True

def get_title_from_asin(contents):
  pass
  """
  contents の中身を変換するための関数
  """

def OnBlipSubmitted(properties, context):
  # blip の取得
  blip = context.GetBlipById(properties['blipId'])
  logging.info(u'blip (%s -> %s' % (blip.GetWaveId(), blip.GetId()))

  # blip のテキストを取得
  contents = blip.GetDocument().GetText()

  # テキストを変換
  result = get_title_from_asin(contents)

  # blip に変換後のテキストをセット
  if result:
    blip.GetDocument().SetText(result)

if __name__ == '__main__':
  # ボットの作成
  bot = robot.Robot(
    ROBOT_NAME.capitalize(),
    '1',
    image_url=IMAGE_URL,
    profile_url=PROFILE_URL
  )

  # サブミット時のハンドリング
  bot.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmitted)
  bot.Run(debug=DEBUG)

appengine で bot 書いて wave に突っ込むというのは、すっごい楽ですね。メールやチャットでのコミュニケーションではできない、情報に付加価値をつけていくことが wave では可能となると思います。

Google Developper Day 2009 in Japan

Google Developper Day 2009 Japan

#gdd09 @パシフィコ横浜です。html5, opensocial, android, appengine enterprise, etc...。

HTML5 により拓かれる次世代 Web

あんまり良い表現が思いつかないけど、最近の buzzword は html5 な予感。昨日の wwdc で apple も html5 について触れていたけど、open なブラウザは、10年越しで メジャーバージョンアップ (?) する。google, apple, mozilla, opera 等のいわゆるモダンブラウザは順に対応するかと。ie は... "ie8 から web 標準に準拠していく" という言葉を信じるw

html5 でできるようになること。ブラウザは html5 でアプリケーションプラットフォームになる。学生時代に、C言語で座標で絵を描いていたようなことでも、現行のブラウザでは難しい。html5 では、canvas タグや video タグ等の新しいメディアタグが提供される。3d 等も browser + html + dom のみで動作する。これは、デモを見た方が速い。flash, java, silverlight...とかが必要だったグラフィックスがブラウザだけでいけるというのはすごい。他にも、オフラインで動作するための、aplcash/db や、スレッド処理機能、ジオ機能も提供される。これでアプリケーションプラットフォーム完成。時代は js ですね。。。

OpenSocial in Japan / OpenSocial Advance

mixi や goo 等、日本国内でも開発が盛んな opensocial。もともと sns は人と人を結びつけるものだったけど、そこに技術者が参加した。技術者が参加することで、コンテンツが増え、コンテンツが増えることでユーザが増え、ユーザーが増えることで技術者もウハウハというエコシステム。javascript, xml 等で開発。Advanced セクションではローレベルなテクニックを紹介。リクエスト数、転送量に発生するコストを削減する。私のサイトでも使っているyahoo user interface (通称: YUI) の使用や、画像は 1 つにまとめて、css のみで制御するなど。それにより、リクエスト数、転送量毎にかかるコストが 1/3 ぐらいに抑えることも可能。要らない部分は省いて、ローレベルなテクニックを使って、速く、低コストなサービスを作る。ユーザ、開発者共に win-win。safari なら inspector、firefox なら firebug + yslow 等を利用して開発。ちなみに、google の oss な page-speed なプラグインを firebug と一緒に使うとスピード計測ができる。

Google Wave

きたこれ。新しいコミュニケーションツール。wave = im + mail + apps (opensocial) + much more... って印象。wave -> wavelet -> blip という構成。embedding と extention という拡張。embedding は map 等外部のサービスで wave を使うというもの。 extention は wave に他のサービスを組み込むというもの。embedd の例として、orkut は wave をコミュニケーションプラットフォームとして実験的に使いはじめている。extention は robot と gadget から構成されている。 GDD 参加者には開発用のアカウントが払いだされます。

Office Ours

Google App Engine の管理コンソールを開発している john 氏と、lindsey 氏と対談。App Engine についての要望を聞かれたので、「容量制限あるし、zipimport 遅いし、java でいう maven 的なものを提供してほしい」と言いました。Google がリポジトリを管理してくれて、利用するライブラリーとバージョンを yaml 等に書けば、パスを通してくれる的な。そしたら、いちいち django 1.0 や pytz みたいにファイル数が多いライブラリーは、制限に引っ掛かるからといって遅い zipimport なんて使わなくてよくなる。それに、ローカルで easyinstall でインスコして、ライブラリーの同梱とか気にせずにデプロイできるしハッピー。ついでにいうとライブラリーがアップストアに並ぶ時代がくればいいとおもふw

me

さて、今回の gdd では思いっきり遊べるおもちゃを新たに 2 ついただいた。google wave, android 。とりあえずは wave の api を読むことにする。