Evernote APIのライブラリとサンプルはAPIのページからダウンロード可能です.サンプルはJava,Perl,PHP,Python,Rubyが用意されています.Rubyのサンプルはsample/ruby/EDAMTest.rbです.まず,EDAMTest.rbの13-16行目を,取得したAPI key,secret,開発サーバのユーザ名,パスワードで置き換えます.


consumerKey = "your-api-key-here!"
consumerSecret = "your-api-secret-here!"
username = "your-username"
password = "your-password"

次に,EDAMTest.rbの先頭にEvernote APIのライブラリのパスを追加します.


$:.unshift("../../lib/ruby/")

ライブラリにはバグがあるので以下のパッチを当てます.thriftのほうを直すべきだと思いますが,とりあえず動かすために.


--- lib/ruby/thrift/struct.rb.orig      2009-02-07 17:07:30.000000000 +0900
+++ lib/ruby/thrift/struct.rb   2009-02-08 09:40:56.000000000 +0900
@@ -97,11 +97,11 @@
         end
         iprot.read_struct_end
       end
-      validate
+#      validate
     end

     def write(oprot)
-      validate
+#      validate
       if oprot.respond_to?(:encode_binary)
         # TODO(kevinclark): Clean this so I don't have to access the transport.
         oprot.trans.write oprot.encode_binary(self)

--- lib/ruby/thrift/transport/httpclient.rb.orig        2009-02-08 09:46:12.000000000 +0900
+++ lib/ruby/thrift/transport/httpclient.rb     2009-02-08 09:46:53.000000000 +0900
@@ -19,6 +19,7 @@
     def flush
       http = Net::HTTP.new @url.host, @url.port
       http.use_ssl = @url.scheme == "https"
+      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
       headers = { 'Content-Type' => 'application/x-thrift' }
       resp, data = http.post(@url.path, @outbuf, headers)
       @inbuf = StringIO.new data

後は,残りの必要なライブラリをインストールします.Ubuntu8.10だと以下のように入力します.


$ sudo aptitude install libreadline-ruby libhttp-access2-ruby

ここまで設定すれば,ruby EDAMTest.rbと入力することでサンプルプログラムが起動すると思います.
入力した文章を新しいノートとして取り込むという単純なプログラムです.

Evernote は去年から開発者向けのAPIを提供しています.Evernote APIは,Facebookが開発したThriftで書かれています.Thriftは多言語間を接続するためのRPCフレームワークで,現在はApacheのプロジェクトとしてオープンソースとして公開されています.Thriftは現在C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskel,C#,Cocoa,Smalltalk,OCaml用のコードを生成できるようです.Thriftを用いることで,資源管理をC++,並列処理をErlangといったように,得意な分野ごとに言語を分けるといったことが可能になります.Thriftについては,CyDN – フレームワーク 「 Thrift 」 調査報告Kansai.pm#10 での発表資料 (Thrift について)が参考になります.

Evernote APIを使うためには,まず初めにAPI Keyの申請を行う必要があります.その際に,どのようなアプリケーションを作りたいかをコメント欄に書きます.私はコマンドラインツールを作りたいという旨を書きました.問題なければ,API keyを送ってくれるはずです.API keyは,開発用のサーバのみで使えます.運用サーバでも有効にするには,開発後に別途申請が必要のようです.開発用サーバは,機能は運用サーバと同等ですが,バックアップされておらず,処理も限定的だそうです.開発サーバを使うためには,別途アカウントを作成する必要があります.複数アカウントを作成することもできます.

以下のリストはAPIの資料です.次のエントリで,Rubyでの開発について書きます.