smart.fm API ver.2 - comming soon!!

おかげさまで、smart.fm API もいろんな場所で使われるようになってきました。社内だけでも、これくらいの場所で使われています。

  • iPhone アプリ
  • Android アプリ
  • Facebook アプリ
  • OpenSocial ガジェット(世間一般では mixi アプリ?)
  • iKnow! / Dictation / BrainSpeed の各学習アプリ

そんな中で、機能追加/変更/削除やフォーマット変更など、API 側の変更が必要な場合も多くなって来たので、先日ついに API のバージョニングに着手しました。

今月末〜来月くらいには smart.fm API ver.2 がリリースされる予定です。もちろん ver.1 もサポートされます。一定の猶予期間内に URL を変更する必要はありますが。

そしてそれと同時にいくつかの新機能も追加されます。

Read more

OpenSSL::Cipher は Ruby と JRuby (Java) で実行結果が異なる (場合がある)

Ruby OpenSSL は JRuby OpenSSL とは実装が違うので、同じコードでも結果が異なる場合があります。

昨日 OpenSSL::Cipher を利用していてそんな状況に遭遇したので、メモメモ。

以下のコードは、Ruby と JRuby (or Java) で実行結果が異なります。つまり、Ruby で暗号化したデータを JRuby (or Java) で複合化できません。。。

require 'openssl'
def display_bytes(bytes) bytes.each_byte do |byte| print byte, ":" end end
plain_text = "some plain text is here" key = "1234567890abcdef" # 16 bytes iv = "abcdef1234567890" # 16 bytes
cipher = OpenSSL::Cipher::AES.new("128-CBC") cipher.iv, cipher.key = iv, key cipher.encrypt cipher_text = cipher.update(plain_text) + cipher.final
display_bytes(cipher_text)

そして、なんと赤文字の部分を逆にしてやると Ruby と JRuby の結果は同じになります。

cipher.encrypt
cipher.iv, cipher.key = iv, key

JRuby は順序を変えても結果は変わらないので、Ruby OpenSSL の方に問題があるのだと思います。

Read more

Google Developer Day 2009

昨日は Google Developer Day 2009 に参加してきました。

Google Developer Day 2009

そして、もらってきました、Android♪
Google I/O 参加者の特権かと思ってたら、参加費無料の Developer Day でも配布してくれるなんて、太っ腹!!

Keynote では、Android, OpenSocial, HTML5 & Wave がメインな感じでした。Wave は、やっぱすごいですね。あれが単なるアプリじゃなくて、むしろ Web が Wave になって行く(?)ような感じを受けました。

あとオレンジシャツの @yoichiro さんの OpenSocial x Android 連携ガジェットは興味深かったです。あれは iPhone でもできる気がするし、smart.fm だったらメインサイトと OpenSocial ガジェット(と Facebook アプリ)、そして iPhone アプリ or Android アプリが連携して動くなんてのもありですね。

Read more

JsonBuilder Gem をリリースしました

smart.fm API で XML と JSON の双方に含まれる情報を一致させる為に、XML Builder (Builder::XmlMarkup) と同じインタフェースで JSON を生成する JsonBuilder をリリースしました。

http://github.com/nov/jsonbuilder

これで XML フォーマットも JSON フォーマットも同じインタフェースで定義できるので、「XML の仕様を変更したのに、JSON の変更を忘れてた」なんてことが無くなります。

いままで smart.fm の XML と JSON の情報を一致させるのにいろいろ苦労しましたが、これでようやくその苦労から解放されそうです。

こんな感じで使えます。

Read more

Friend Connect と Social Graph API があるのに、なぜ Shindig?

Google Friend Connect 上では、OpenSocial Gadget が動くけど、SNS 独自の Social Graph は扱えない。

SNS 独自の Social Graph を使いたい場合は、Shindig なんかを使わないとだめ。

でも Google は Social Graph API で、各サイトの Social Graph を使える。ってことは、Social Graph API を使えば、Friend Connect でも SNS 独自の Social Graph は扱えるはず。

Activity も AppData も UserPref も全部 Google さんが持って、SNS 側では Friend Connect の API 叩いてデータ取ってくるようにすれば、Shindig じゃないとできないことってあるのかなぁ?

Read more