ずっと君のターン

2010-07-27 暑くて死ねる

RubyでGoogle Waveのロボットを作れるライブラリ作りました

02:03 |  RubyでGoogle Waveのロボットを作れるライブラリ作りました - ずっと君のターン を含むブックマーク はてなブックマーク -  RubyでGoogle Waveのロボットを作れるライブラリ作りました - ずっと君のターン

http://github.com/technohippy/ruby-wave-robot-api

今年のGoogle I/OでGoogle Waveのロボットプロトコルが公開されたので、ちょっと待ってればいろんな言語のライブラリが出てくるのかなーと思ったら全く出てこなくて*1、待ちきれずRuby版を自分で作ってみた。んで、考えて見ればv2対応した自家版ロボットライブラリって初かもしれないので「どやっ」って感じでGooge Waveのフォーラムで公開したらほぼ相手にされなかったから、ションボリしつつここで自分で紹介することにする。

サンプル

サンプルコードはいまのところこんな感じ。もうちょっと動いたら糖衣メソッド作って使いやすくするつもり。

require 'rubygems'
require 'sinatra'
require 'waveapi'

robot = Waveapi::Robot.new(
  'Ruby Tutorial', 
  :base_url => '/sample-robot', 
  :image_url => 'http://ruby-wave-robot.heroku.com/images/icon.png',
  :profile_url => 'http://ruby-wave-robot-api.heroku.com'
)

robot.register_handler(Waveapi::WaveletSelfAddedEvent) do |event, wavelet|
  wavelet.reply("\nHi everybody! I'm a Ruby robot!")
end

robot.register_handler(Waveapi::WaveletParticipantsChangedEvent) do |event, wavelet|
  new_participants = event.participants_added
  new_participants.each do |new_participant|
    wavelet.reply("\nHi : #{new_participant}")
  end 
end

robot.start

PythonでもJavaでもロボットAPI知ってればやってることは分かるだろうし、知らない人はこの記事に興味ないと思うので説明は省略。とにかくこれでロボットはWave上で参加者にあいさつしたりする。

サンプルを動かす

サンプルはどこで動かしてもいいけどHerokuを使うのが準備不要で一番手っ取り早いと思う。Herokuをインストールしてない人はgemでインストールしておく。

$ sudo gem install heroku

次にherokuコマンドで新しいアプリを作成。アプリ名は一意じゃないと叱られそうな予感。

$ heroku create 任意のアプリケーション名

んでライブラリ&サンプルをgithubから取ってくる。右上の「ダウンロード」から落としてくれば簡単なんじゃなかろうか。それをアプリケーションディレクトリに展開。

その時の気分次第では、gitの上がっているものは起動されるはずのサンプルが作成中だったりするので、先に書いたサンプルを実行するのであればconfig.ruを開いてrequire文を

require 'examples/ruby-tutorial'

だけにしておく。

GAE以外で動かすロボットはGoogleに登録しておく必要があるのでここで登録。まずは登録サイトを開いて必要な情報を入力。

f:id:technohippy:20100728150309p:image

ロボットのベースURLは先程Herokuで作成したアプリのURL+任意のディレクトリ。ディレクトリ名はデフォルトでは'/sample-robot'になってる。違うのを指定した場合はロボット初期化時の:base_urlパラメータを変更しておくこと。

robot = Waveapi::Robot.new('Ruby Tutorial', :base_url => '/指定したディレクトリ名')

あと、submitすると登録者がこのロボットのURLの管理者であることを確かめるためにverify tokenが示されるので、サンプルに次の行を追加。

robot.verify_token = '画面で指定されるトークン'

で、デプロイ。

$ git add .
$ git commit -m 'new'
$ git push heroku master

デプロイできたらロボットの登録を完了。完了時にコンシューマ・キーとコンシューマ・シークレットが表示されるので、使わないけど一応メモっとくこと。

あとはWavesandboxを開いて*2、登録したロボットIDをwaveの参加者として追加してやると普通に動く。

f:id:technohippy:20100728021118p:image

ちなみにwaveロボットライブラリを作るのは、JSONを受け取ってまたJSONを返すだけなので別に難しくはないんだけど、APIが多くて単純に面倒くさい。いまgithubに登録されてるものも多分まだ全体の3-4割しか実装されてないので注意。これ使ってなにか作りたいから優先して実装して欲しいAPIがある人がもしいれば検討するのでコメントをどうぞ。

*1:中の人(多分)が作ったGo言語版のライブラリはデモ専用みたいな適当すぎる作りだし・・・

*2:GAE外のロボットはいまのところサンドボックスでしか利用できません

2010-05-29 雨にふられて

TokyuRuby会議のLT資料を貼っときますね

| 00:50 | TokyuRuby会議のLT資料を貼っときますね - ずっと君のターン を含むブックマーク はてなブックマーク - TokyuRuby会議のLT資料を貼っときますね - ずっと君のターン

今日はTokyuRuby会議02でした。

前日寝ながら構成考えて資料は当日の朝やろうとか思ってたのに、起きたら13時を軽く過ぎてたので、慌ててググって拾ってきた画像やら文章を適当に貼りつけてるだけです。これだけ見ても何も分からないと思います。ごめんなさい。

あと、資料作成が間に合わず、オチも特に思いつかなかったので、途中で時間切れになることを前提にLTしました。そんなわけで基調講演がぐだぐだになってごめんなさい。

さいごに、くまくまーのひとごめんなさい。

2010-05-28 iPad日和

physicSketch for iPad

| 00:43 | physicSketch for iPad - ずっと君のターン を含むブックマーク はてなブックマーク - physicSketch for iPad - ずっと君のターン

昨夜、渋谷のGoogleオフィスで「HTML5: W3C Widget とその応用を考える会」が開催され、そこでちょっとしたプレゼンとデモをさせてもらいました。

その際使用したアプリケーションもGAEに上げなおしたので、よかったら買ったばかりのiPadをいじり倒すついでに試してみてください。

http://physicsketch.appspot.com/ipad/index.html

f:id:technohippy:20100529002223p:image

上記は単なるHTMLですので、iPadのSafariでアクセスすればすぐに動きが確認できます。

単なるWebサイトではなくWidgetを試してみたい方は以下をローカルにダウンロードしてから、中島さんのサイトで紹介されている手順に従えばインストールできます。

http://physicsketch.appspot.com/ipad/physicsketch.wgt

iPadでも我が家のiMacとさほど変わらない速さで動作していたようなので、それなりに遊べるのではないでしょうか。*1

・・・

会は、Operaのダニエルさんの基礎講座から始まって、続くデモもそれぞれに特徴があり、最後の中島さんによる現在のWidgetに留まらない応用的な話まで、私も参加者として非常に楽しめましたし、勉強にもなりました。特に中島さんの、電子書籍のビューアーをHTML5を駆使して作りませんかと言う提案はなかなか魅力的で、時間が取れれば実際に作ってみようかなと考えています。

スタッフ&スピーカーの皆さん、どうもありがとうございました。

*1:単にPC上で試したい場合は http://physicsketch.appspot.com/ の方がcanvasのサイズや背景画像の関係で高速に動作します

2010-05-25 靄ってる

オーガナイザが実機を認識しないとき

| 17:28 | オーガナイザが実機を認識しないとき - ずっと君のターン を含むブックマーク はてなブックマーク - オーガナイザが実機を認識しないとき - ずっと君のターン

二度目なのでメモ。

http://support.apple.com/kb/HT1747?viewlocale=ja_JP

iTunes再インストールしないとダメってひどいよね・・・