Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

Pythonで使って覚えるEvernote API

ノート内容からタグを付与するプログラムを作ってみよう

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 Evernoteは直感的な操作でクラウド上に情報を蓄積できるサービスです。本記事ではEvernoteが公開しているAPIをPythonから利用し、APIの基本機能を確認していきます。また、Evernote APIの活用方法として、ノートの内容からタグを付与する、簡易なプログラムの作成方法を紹介します。

目次

はじめに

 Evernoteはクラウド上にあらゆる情報を記録できる便利なサービスです。筆者も技術情報から日常生活におけるちょっとした備忘録まで、さまざまな情報をストックするのに活用しています。EvernoteはAPIを公開しているので、Evernoteを活用したアプリケーションや、自分専用のツールを作るとその便利さがさらに広がっていきます。

 本記事ではEvernote APIをPythonから利用する方法を解説し、ノートの内容からタグを付与する簡易なプログラムを作成していきます。

対象読者

  • Pythonの基本文法を理解している方
  • Evernoteをプログラムで操作して便利なものを作ってみたい方

必要な環境

  • OS:Windows 7/8.1/10 ※Pythonが動作するLinux/Macでも可ですが、本記事ではWindows環境を想定しています。
  • Python:Python 2.7.13
    • Python 3系用のEvernote SDKはテストSDK(2017/3/20時点)という位置付けのため、Python 2系用の最新版を利用します。
    • pip、easy_installが使用可能であれば2.7系の他バージョンでも恐らく大丈夫ですが、同一バージョンを推奨します。
    • 「Pythonインストールディレクトリ\Scripts」にPATHを通しておいてください。
  • Evernoteアカウント(無料のベーシックプランでOK)

Evernote APIの特徴

 Evernote APIは汎用的な機能を提供しており、Evernote公式クライアントからも利用されていることから公式クライアントと同等の機能を実現可能なAPIになっています。

Thrift

 Evernote APIは軽量RPCフレームワークApache Thriftを使って実装されています。Thriftは異なる言語間のリモート呼び出しを可能とし、例えばサーバーサイドをJava、クライアントサイドはRubyで実装する、といったことが可能です。

 そのため、Evernote APIのクライアント用ライブラリ(以降、Evernote SDKと記します)は幅広いプラットフォームをカバーしています。2017/3/20時点で、Python、JavaScript、iOS、Android、Windows、PHP、Ruby、Java、OS X、Perl、C++、ActionScript 3向けのSDKが提供されています。

Thriftの開発元

 Thriftは元々Facebook社が開発した軽量RPCフレームワークで、現在はApacheソフトウェア財団のプロジェクトApache Thriftとしてオープンソース化されています。Evernote APIリファレンスのタイトルも[All Thrift declarations]と記載されていて、Thriftベースであることが読み取れます。

認証トークン

 Evernote APIを使用するには認証トークンが必要です。認証トークンを手に入れるには2つの方法があります。1つ目はOAuthを実装することです。開発者向けEvernoteサイトからAPIキーを申請し、発行されたAPIキーを使ってOAuthを実装することになります。

 2つ目はデベロッパートークンを利用することです。デベロッパートークンは1年間の期限付き認証トークンで、OAuthを実装することが不要なため手軽にAPIの利用を開始することができます。本記事ではデベロッパートークンを利用します。

Evernoteサンドボックス環境

 Evernote APIを使ってEvernoteを操作するプログラムをいきなり本番環境で動作させると、自分のEvernoteデータに予期せぬ変更を加えてしまうことや、Evernoteサービス自体への影響も懸念されます。そこでEvernote社は、本番環境から隔離されたサンドボックス環境と呼ばれるテスト環境を提供しています。まずはサンドボックス環境向けのデベロッパートークンで開発をして、動作に問題がないことを確認してから本番環境向けのデベロッパートークンを取得して動作させる流れになります。(OAuth認証の場合、APIキーをアクティベートすることで本番環境での利用が可能になります)

機能

 Evernote APIはNoteStore、UserStore、Types、Limits、Errorsの5つのモジュールで構成されていて、それぞれ以下の機能を持っています。

モジュール 主な機能
NoteStore ノートブックやノートの作成・更新・取得・共有。ノート添付ファイルの取得、 検索条件の保存
UserStore 認証(パスワード認証以外にワンタイムパスワードを使った二要素認証も可)、ユーザー情報の取得、Evernoteビジネスアカウントへのユーザーの招待
Types APIで扱うデータモデル(ユーザー、ノートブック、ノート、ノート検索条件、ノート検索結果仕様等)
Limits Evernoteサービスの制限値の定数(ノートサイズの上限、ノートタイトルの長さの最小値・最大値等)
Errors APIのエラーコード、各種例外オブジェクト

APIレート制限

 Evernoteサービスの性能を保つため、Evernote APIには制限が設けられています。1つの認証トークンで1時間当たりの呼び出し回数に制限があり、制限に達した場合、API呼び出し時にEDAMSystemExceptionが発生します(エラーコードは19 RATE_LIMIT_REACHED)。

 残念ながら具体的な上限値は公表されていません。例外をハンドリングする方法や、制限に引っかかりにくくするための設計方針が公式サイトに記載されているので、参考にしてみてください。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 水倉 良明 (サイオステクノロジー株式会社)(ミズクラ ヨシアキ)

    分子生物学の世界からIT業界に飛び込み、エンタープライズなシステム開発の面白さに魅了される。アプリケーションエンジニアとして経験を積み、AWS、Azureの登場でいつの間にかインフラ構築、運用にも携わるように。現在はサイオステクノロジー(株)で主にクラウド上でのデータ分析基盤構築や関連ツールの開発に...

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5