2010年11月20日土曜日

Evernote API を使ってみる (1) 準備

Evernote API (for Java) を使うメモ。とりあえず、事前準備&付属サンプルを動かすところまで。Evernoteの知名度からすると日本語ソースが少ない気がするけど、APIの存在は実はあまり知られてないのかな、積極的にPRしている感じもないからだろうか。


APIの入手場所

Evernote API Overview
(Evernoteサイトのフッターにある控えめな "Developers" というリンクを辿った先の "Evernote Service API" というリンク)

準備

使えるようになるまで、若干めんどうな手順がいる。
※当たり前といえば当たり前だけど、Evernote のアカウントが必要。

①APIキーを申請
APIを使うには、キーが必要なのでまずは申請。
上記 Evernote API Overview ページの "Request an API Key" フォームに必要事項を入力して、キーが送られてくるのを待つ。"Application Type"はデスクトップアプリとかモバイルアプリの場合は"Client Application"を、Webアプリの場合は"Web Application"を選ぶ。違いは認証方式で、クライアントアプリは普通にユーザ名/パスワードで認証、Webアプリの場合はOAth認証になる。とりあえず今回はローカルで動かしたいので Client Applicationを選択した。
人手でチェックしているらしく、数日かかる(リクエスト受付けメールによると、プレミアムユーザーなら1日で審査結果?が届くよ、と)とのこと。

辛抱強く待っていると、メールで consumer key と consumer secret が届くので控えておく。

②サンドボックスのアカウントを取得
いきなり本サイト用のデータを読んだり書いたりすることはできなくて、サンドボックスから始めてね、といわれる。プロダクションシステムを使う準備ができたら教えてね、って、連絡手段書いてないなぁ。。

The API key will work against sandbox.evernote.com, but not against www.evernote.com yet.  We can activate it on the production system once you let us know that you're ready to go live.


というわけで、サンドボックス用のサイトにアクセスしてアカウントを登録する。
サンドボックスの見た目や使い方は普通のEvernoteサイトと同じ。

③ドキュメントに目を通す
30ページくらいの概要ドキュメントをざざーっと流し読むとなんとなくアーキテクチャがわかる。途中 Thrift を使ってどうの、とか出てくるけれど、APIを使うぶんには特に詳細を意識する必要はない。サーバーへの接続時のおまじないとして目にするくらい。
(とはいえ、ちょっとだけ調べてみる。Thrift は、クロスラングエッジな RPC フレームワークで、元々はFacebook が開発していて今は Apache Incubator に入っている。Thrift IDL という定義言語で型やサービスを定義して、Thrift にかけると色んな言語用にスタブを生成してくれる、らしい(使ってみたわけではないので表現が間違っているかもしれない)。対応している言語は"C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml"とけっこういろいろ。)

④必要なもの一式をダウンロード
Evernote API Overview から、zipファイルを落としてくる。展開すると、(各種言語の)ライブラリ、ドキュメント、サンプルプログラムが入っている。libフォルダやsampleフォルダの中を見ると、java, perl, php, python, ruby がある様子。


サンプルを動かす

Java の クライアント用サンプル(アカウントの全ノートをリストアップ&画像ファイル付きノートをひとつ作成するプログラム)を動かしてみる。
事前にサンドボックスにいくつかノートを作っておいたほうがいい。
java/client にサンプルプログラムがあるので、その中の consumerKey と consumerSecret を自分のキーに書き換えてやって、実行(lib/java にある jar にクラスパスを通しておく)。引数にサンドボックスのユーザ名/パスワードを渡す。

無事、ノートのリストが出力されて、デフォルトノートブックにノートがひとつ追加されれば成功。

0 件のコメント:

コメントを投稿