C#でEvernoteアプリを作る

Evernoteは言わずとしてたクラウドメモツールだ。
使い道は人それぞれだが、僕はwebクリップでプログラミング関連のページを保存したり、
2chで面白いと思ったスレやレスを保存したり、
画像スレの画像をページごと保存したり、
ロクでもない使い方をしている。
で、EvernoteはAPIを公開しており、これを使えば誰でもEvernote関連アプリケーションが作成できる。
C#でも公開されており、C#しか使わない僕にも使えた。
テキスト投稿アプリならすぐに作れてしまう程分かりやすい仕組みになっている。
何より日本語化されているのがいい。リファレンスは英語だけど。
備忘の為、0からの使い方を以下にまとめた。

  1. Developer登録をする
    1. https://dev.evernote.com/intl/jp/に行き、「APIを使いはじめる」をクリックする。
    2. APIドキュメントのページが表示されるので、「APIキーを取得」をクリックする。
    3. 申し込みフォームが表示されるので、必要事項を入力する。
      (API権限は作りたいアプリ種類によって選択する。投稿アプリならベーシックアクセスでいいし、既存Noteの編集を行うならフルアクセスが必要。
      とりあえず試すだけならフルアクセスにしておけばいいと思う)
    4. コンシューマーキーとコンシューマーシークレットが発行されるので、メモしておく。
  2. SDKを取得する
    1. APIドキュメントでC#の「SDKをインストール」をクリックする。
    2. Githubのページがでてくるので、右下の「Download ZIP」をクリックし、ソースコードを取得する。
      (勿論クローンでもいいです。お好きな方で)
  3. EvernoteSandbox(開発環境)のアカウントを取得する
    1. EvernoteのAPIはいきなり通常のアカウントに対しては使えず、
      まず開発環境内で動作検証をして、OKだと思ったら本番環境での使用許可を得る、という形になっています。
      開発環境はEvernote社が提供しているので、そのアカウントを取得します。
    2. https://sandbox.evernote.com/で「アカウントを作成」する。
      以下、手順にしたがってアカウントを作成してください。
      このときのアカウントとパスワードは自分のEvernoteアカウントとは全く無関係なものでOKです。
  4. デベロッパトークンを取得する
    1. いちいち自分の環境に対してユーザーIDとパスワードを入力して認証するのは
      面倒ですが、デベロッパトークンを用いることでその作業を省略できます。
    2. ここのページ中段の「サンドボックス用のデベロッパトークンを取得」をクリックする。
    3. 先程取得したSandboxのアカウントとパスワードを入力する。
    4. 「Creat a developer token」とクリックし、表示されたデベロッパトークンをメモする。
  5. Sampleアプリを動かしてみる
    1. 2でダウンロードしたSDKをZIPなら展開し、sample→client内のEvernote.slnをVisualStudioで開く。
    2. SampleAppプロジェクト内のEDAMTest.csを開く。これがサンプルアプリのコードです。
    3. 40行あたりにauthTokenが定義されているので、先程取得したデベロッパトークンに設定してください。
    4. VisualStudio上で実行してください。上手く実行されればsandbox環境内に新規ノートが作成されます。

後はソースを眺めてAPIの仕組みを大まかに把握し、色々変更してみたりして弄ってみてください。
なお、自分のアプリでAPIを利用する場合は、EDAMプロジェクトをビルドしてできた「Evernote.dll」と「Thrift.dll」をコピーし、アプリのプロジェクトのの参照設定に追加してください。
細かい使い方やリファレンスは他のページにまとまっていますので、そちらを参照したほうが良いと思います。
ちなみに、地味に躓くのが認証する所だと思います。
僕は下記のソースを参考にしています。
参考というか、利用させてもらっています。
MITライセンスだからね。本当に感謝しています。
https://github.com/matchy2/EvernoteOAuth
Sandbox上の検証が十分に完了したら、プロダクション用のデベロッパトークンを使って自分の本アカウントEvernoteに使ってもいいし、アクティベートしてコンシューマーキーをプロダクト環境で利用可能にして、一般公開してもいいと思う。
僕が作ったAppも一応このサイトに置いてあります。
クソコードなので中身はあまり見せられません。