
OAuth WRAP という新しい OAuth の仕様が話題になってるので、ちょっとドキュメントを訳してみました。
全部翻訳するのは大変なので、利用シーンごとに分けて作られている "Profile" というのだけをそれぞれ訳しています。(WRAP は Web Resource Authorization Protocol の略らしい)
Facebook Connect を置き換えるものとしても注目されており、Javascript 単体のアプリケーションなんかも想定してあります。今回翻訳したドキュメントでは、まだ Javascript Profile は定義されていないのですが、MLに仕様書のドラフトが添付されていたので、そちらも同時に訳しています。
Smart.fm でも Javascript アプリ上での認証はオープン化の key なので、特に Javascript Profile に注目しています。
Read more
ruby oauth gem も rails oauth plugin も OAuth 1.0a 対応になったので、smart.fm も OAuth 1.0a に対応することにしました。
実装は既に終わったので、予定通りだと明日の昼前に本番に反映される予定です。
OAuth の脆弱性が発見されてから、暫定的に以下の2つの制約を加えましたが、OAuth 1.0a 対応でどちらの制約も外れます。
- authorize 時に渡される oauth_callback を無視
- request token の有効期間もかなり短く
ただし OAuth 1.0a では oauth_callback を指定するタイミングが authorize 時から get request token 時に変更になっているので、authorize 時に oauth_callback 渡しても無効、というのは変わりません。
もちろん従来のフローでアクセスする consumer に対する動作は変わらないので、oauth_callback を利用しない場合は特に consumer 側の変更は必要ありません。consumer 登録時に登録する oauth_callback は、従来通り有効です。
Read more

いくつかはこっそり公開されてます。
そろそろドキュメント書かなきゃ(汗
- Activity API
-
GET http://api.smart.fm/activities
GET http://api.smart.fm/users/:username/activities
公開済。マイニュース用 API。Activity は、Status Update や List / Item / Sentence Create を行うと自動的に作成されるので、現時点では特に Activity Creation Call は用意していません。
- Status Update API
-
GET/POST http://api.smart.fm/status
GET http://api.smart.fm/users/:username/status
未公開。
- User Profile Update API
-
PUT /users
公開済。パラメータはドキュメントにまとめます。
- Shoutbox API
-
GET/POST http://api.smart.fm/shouts
GET http://api.smart.fm/users/:username/shouts
公開済。「一言ボックス」用の API です。
- OpenSearch response in JSON
-
公開済。JSON でも open_search=true で OpenSearch Response が含まれます。
- Image, Sound Upload API
-
公開済。こちらはドキュメントも公開されています。add image / add sound
あたらしい学習アプリ向けの API も、着々と進んでおります。ついに学習結果が保存できるようになります!

おかげさまで、smart.fm API もいろんな場所で使われるようになってきました。社内だけでも、これくらいの場所で使われています。
- iPhone アプリ
- Android アプリ
- Facebook アプリ
- OpenSocial ガジェット(世間一般では mixi アプリ?)
- iKnow! / Dictation / BrainSpeed の各学習アプリ
そんな中で、機能追加/変更/削除やフォーマット変更など、API 側の変更が必要な場合も多くなって来たので、先日ついに API のバージョニングに着手しました。
今月末〜来月くらいには smart.fm API ver.2 がリリースされる予定です。もちろん ver.1 もサポートされます。一定の猶予期間内に URL を変更する必要はありますが。
そしてそれと同時にいくつかの新機能も追加されます。
Read more
OpenSocial もすばらしいのですが、やっぱり自分のマイリストはブログにも表示させたい!ということで、smart.fm API と jQuery を使って、このブログのサイドバーに自分のマイリストを表示するようにしてみました。

使っているのは smartfm.css と smartfm.js と start_swf.js の3つです。CSS をちょっといじってもらえれば、きっとあなたのサイトでも利用できるはず。
使い方は以下の通り。
Read more
金曜日、mixi アプリ説明会なるイベントのため mixi オフィスに行ってきました。

もちろんリアル世界で。
本当は申込みしたパートナー企業しか参加できないのですが、セレゴのパートナーの方に誘っていただいて、なんだかんだで入れちゃいました。
イベント内容はあまり漏らしちゃ行けないらしいので、「あんまデベロッパ向けではない」くらいにとどめときます。内容はともかく、smart.fm API (iKnow! API) リリース直前と同じような雰囲気を感じることができて、なんだか親近感が湧きました。あと、mixi アプリより mixi Connect の方が楽しみです!
Read more
一部の方(特に女性)には「また意味の分からないこと書いてる」と言われるような内容ですが、あしからず(汗

今週の月曜日から4週間連続で、gihyo.jpに「特集:ゼロから学ぶOAuth」という連載を書かせていただいています。
第1回は「第1回 OAuthとは?―OAuthの概念とOAuthでできること」と題して、OAuth のざっくりした概念の説明と、smart.fm で使ってる Google OAuth を触ってもらって、裏でどういうことが起きてるかを簡単に説明するような内容です。
第2回と第3回は OAuth Consumer の実装と、実際の通信内容の理解を行います。実際に最初から実装手順を説明するのは大変なので、事前に実装しておいた OAuth Consumer Sample を使って話を進めていきます。
ちなみにこのサンプルアプリケーション、僕が smart.fm OAuth の動作検証に使う為のものだったりします。もちろん Rails で書いてます。
第4回は OAuth Service Provider の実装とサービス提供者側でチェックする項目などを説明する予定です。こちらも現在 Sample をちまちま実装中です。
そして OAuth Consumer の実装に興味を持たれた方は、ぜひ smart.fm API を使って何か!
以上、宣伝でした m_ _m
Read more
iKnow! API を利用したアプリケーションを紹介する iKnow! Applications Gallery を公開しました。

自分のアプリケーションが載ってない!とか、新しくサービス作ったから登録して!とかはこちらにお願いします。
Show people what you made! - iKnow! Developer Forum
メッセージは日本語でも英語でもそれ以外でもOKです。きっと Team iKnow! の誰かが読めます。
あ、アラビア語は無理かも知れません。
既に登録されているサービスについても、説明文を変更したいとか、日本語の説明を追加したいとかの要望があれば Show people what you made! - iKnow! Developer Forum にどうぞ。
For Mobile, iPod and TV というカテゴリの分け方は、某 italiaotoko の趣味、かな?
Commenting with Facebook Connect より

Facebook Connect を利用したコメントフォームをプログラミング無しで簡単に導入できるようになったので、早速このブログにも導入。Disqus よりは Facebook 利用者の方が多いだろうということで、Disqus Comment Widget は削除しました。
Facebook Comment Widget の設置方法は以下の通り。
Read more
iKnow! に sphinx という検索エンジンと、Rails プラグイン thinking_sphinx を導入しました。

sphinx 導入で Total Count とか検索オプションとかが格段に扱いやすくなったので、iKnow! API でも順次 OpenSearch 対応 API を拡大しています。(第一弾は3月上旬リリース予定)
OpenSearch は Wikipedia では以下のように説明されています。
Read more
ちょっとタイミングを逃しましたが、今週月曜日に iKnow! API Developer Conference があり、そこで iKnow! API KICKOFF の結果発表が行われました。

心配していた応募数も最終的には30を超え、第1回としてはまずまずのスタートを切れたかなと思います。
このイベントの最初の挨拶では、人生初の通訳を体験しました。CTO の Kirk の挨拶を置いてかれないように必死に聞いて、なんとか流れは理解はできたのですが、その後の日本語が全く出て来ない。。あれはもっと修行せねば!!

その後は Team iKnow! の開発陣からのプレゼンテーションがあり、僕もトップバッターとして iKnow! API の OAuth についての簡単なプレゼンテーションをさせていただきました。僕のプレゼンは「iKnow! では OpenID 利用率が高く Basic 認証では対応できないユーザが多いので、ぜひ OAuth を使ってください」という内容です。資料は SlideShare にアップしたので、ここにも貼付けときます。
Read more
今日は iKnow! API について、「実戦科学技術英語フォーラム交流会」というイベントで講演させていただきました。
会場はお台場の隣駅にある「船の科学館」というところ。東京ベイエリアが一望できる素敵な場所でした。
講演内容は API の簡単な使い方とサードパーティーアプリの紹介くらいの簡単なものです。これまた 280slides で作ったので、その勢いで以下にアップしときます。一緒に利用した iKnow! 3G の demo movie も一緒に。
Read more
10月半ばにリリースしてからかれこれ3ヶ月。iKnow! API KICKOFF の締切も、とうとう2日後にせまって来ました。
冬休みに入ったあたりからは iKnow! API Developers ML への質問が増え、一つ一つ答えていくものの、なかなか追いつくのが大変です。(もしまだ答えもらってないという方いらっしゃったら、ガシガシつついてください!)API のコール数も冬休み前からずっと上昇を続けており、あと2日になってもまだまだ Developer の皆さんの開発は続いているようです。
まだ応募作品をすべて見切ってはいませんが、明日あたりから順番に触っていこうと思います。17日にとある講演で iKnow! API について10分ほど話さないと行けなくなったので、そこで紹介できるサンプルアプリをピックアップせねばならんのです。
会場のネット環境が怪しいらしく、おまけに「発表は Mac ではだめで、Windows のみらしいです」という理不尽な環境なので、デモは無しでビデオかキャプチャで。。。
すばらしい紹介ビデオがあるサービスとかがあれば、迷わずそれ紹介しますよ!
Read more
Gee さんという方が、iKnow API 用の Python ライブラリをリリースしています。
外部のデベロッパの方にライブラリを開発していただけるとは、すばらしい♪
Google AppEngine のことはよくわかりませんが「iKnow API implementation in Python for Google AppEngine」ということで、Google AppEngine 上で iKnow! API を利用するにはもってこいってことですね!
サンプルプログラムなどは Google Code に載っているので、興味ある方はそちらをご覧ください。
iknow-api-appengine - Google Code
注)2009年1月9日時点では、Sentence API は実装されていないとのことです。
version 0.1.0 では Basic 認証に Mechanize を使っていましたが、どうも Mechanize の DELETE の動作がおかしかったので、Mechanize をあきらめて Net::HTTP::POST (_method='DELETE') を使うように変更しました。
これで Basic 認証に関しては動作が安定したので、安心して他の要認証 Call も実装できるようになりました。
来週中にはすべての API Call の実装を完了して、version 0.2.0 をリリースしたいです。また、OAuth が安定したら version 1.0.0 にしようと思います。
インストールは
gem install iknow
本日、iKnow! gem を OAuth と Basic 認証サポートを追加して、リスト作成/削除とリストへのアイテム追加/削除を実装して、version 0.1.0 をリリースしました。
OAuth を実装してみて、iKnow! OAuth も Google や Yahoo! の OAuth と同じくらい使いづらいのが分かって来ました。というか、そもそも若干動作がおかしい気がします(アセ
冬休みまであと2日しか営業日が無いので、急ピッチで iKnow! OAuth を使いやすくして、gem もリリースする予定です。もっと多くのデベロッパーに iKnow! API 使ってほしいしね。
ちなみに今 Basic 認証には Mechanize を使ってますが、こいつもまた動作が変。どうも DELETE の動作が怪しい。。。OAuth 関連のタスクがスムーズに行って時間に余裕があれば、Mechanize 使わないようにしたいです。
冬休み中には、RSpec でテストも書きたいな。
ps.
iKnow! gem 使った感想とかもらえると、モチベーション急上昇するよ☆
モバイル版はあるけど、iPhone 版は無かった iKnow! に、初の iPhone 対応サイトが登場しました。(PC からは Safari で見てね)
といってもセレゴが開発した訳ではなく、iKnow! API を利用して作られたサードパーティのサイトです。
開発者は、おっぱい エンジニア - Google 検索で世界を取った technohippy 氏。
iKnow Web App for iPhoneできました

現時点では Show people what you made! - iKnow! Developers Forum に報告されたアプリ3つのうち2つを technohippy が作っている。
すばらしい♪
iPhone ユーザ必見ですよ!
「Ruby開発者のためのiKnow! API入門:CodeZine」というタイトルで、iKnow! API および iKnow! gem の紹介記事を書きました。
RAILS PRESS の記事の紹介という形なので、僕が新たに書いたのは iKnow! Extract API の簡単な紹介と記事の序文、まとめくらいですが、Extract API は現時点では一番面白い API だと思うので、ぜひお試しいただけると幸いです。

iKnow! APIは2008年10月15日に公開された、英語学習SNS「iKnow!」のコンテンツや学習エンジンを利用するためのWeb API(REST形式)です。このAPIを使うと、iKnow!のコンテンツを利用した独自のWebアプリケーションやブログパーツを作成できます。
Rubyで開発する場合は、GitHubにある「iKnow! RubyGemサンプル」を参考にするとよいでしょう。
Ruby開発者のためのiKnow! API入門:CodeZine
転職してから数件の原稿執筆案件をいただいていて、11月末までにまた別の案件で記事を書くことになりそうです。そっちの記事は、タイトル聞いた瞬間吹き出しそうになりましたが、それについてはまた後日。。。
先週 iKnow! API をリリースし、それと同時に10/15 - 12/15までの2ヶ月間、 iKnow! API KICK OFF というプログラミングコンテストも開催しています。既にいろんなところで記事が載っていましたね。
既に海外からも API 利用に関する問い合せが届き、国内も API の仕様に関するご質問やご指摘をいただいていて、反応の大きさに驚いています。
コンテストの方も、来週あたりには早速初 API 利用アプリが公開されそうです。もしかしたら今週中にも公開されちゃうかも!?
まだまだ「ソーシャルラーニング・プラットフォーム」になるには物足りない API だけど、今後もサービスプラットフォームという軸をぶらさずに開発を継続していきたいです。
しかし、API の紹介とかコンテストの応募ページのコンテンツとか、入社数日の人間にやらせるってのは、懐が深いというかあぶなっかしいというか(笑
でもまぁ、楽しくてしょうがないので全然 OK です!
昨日の「RAILS PRESS » [Press 0024] Google OpenSocial API Documentationを日本語に訳してみた。」に引き続き、今日はOpenSocial APIを使ったサンプルアプリが紹介されているOpenSocial API Developer’s Guideを翻訳してみました。
別に直接Railsと関係するわけではないですが、読みやすさとかもろもろのため、翻訳した文章は、Rails Pressの方にのせています。
RAILS PRESS » [Press 0025] OpenSocial API Developer’s Guideを日本語に訳してみた。
