Windows版Evernoteの軽量化を考える

 Evernoteは便利で日常的に使っているんだけど、Windows版の挙動が非常に不安定。というか遅かったり、プチフリーズしたりと正直に言って出来が悪い。で、Evernoteの設定を見直したら大分マシになったような気がするという話。

 多分にオカルト的な要素を含むかもしれない。本当かどうかは知らないよ。プラシーボかもね。

どこが遅いか見てみよう

 しばらく遅さを観察していたところ、概ね同期処理周りがダメっぽい。もう少しいうとディスクへのアクセスが発生すると「応答がありません」とか出てきてフリーズするっぽい。

 じゃぁ、ディスクにアクセスするタイミングはどんなだろうと考えると、多分こんなパターン。おそらくここら辺を避ければマシになるんじゃないかと検討をつける。

  • 同期処理
  • 検索など
  • アプリがWindowsのメモリから追い出された状態からの復帰

 というか同期処理を実行する際のロックのかけ方とメモリの扱い方が下手なんじゃないだろうか。

 基本的にEvernoteWindows版のアプリはローカルのデータベースを信じてないんだろうな。なので事ある毎にAPI経由で取得に行くんだけど、そこら辺がボトルネックになっている的な。

 で、プログラムの都合か知らないけど、APIからデータを取得すると、それをローカルのデータベースに格納してから処理を始めるとか?まぁ、ホントのところはわからないので、推測でしかないけどね。

 だから逆に考えると、Evernoteの同期を最小限に抑えて、常にオンメモリにしておけばある程度動くようになるはず。

実際にやったこと

 なので、この仮設に従って、以下のような対応をしてみた。

Evernoteが置いてあるドライブを変更

 普通にインストールするとCドライブ内にインストールされるEvernoteを別の内蔵ドライブへ移動させる。移動自体はオプションから「全般」→「Evernoteローカルファイル」→「変更」で設定できるはず。

 SSDとかに移せればだいぶましになったりするのかな。

ノートブックの数を減らす

 同期する処理を予想するに、おそらく同期はノートブック単位で行われているような気がする。ので、対象となるノートブックの数を減らせば同期にかかる時間が減る、と思う。

 いきなり減らすとしんどい目に合うので、いままでノートブックで管理していたノートを、タグで管理するように置き換えていく。

 また、おそらくノートブック毎に最後に更新されたノートの最終更新日時をみて同期しているような気がするので、更新しないノートはまとめてノートブックに放り込んでおく。自分の場合は、過去の未分類のノートは年ごとに作ったノートブックにまとめて放り込んだ。

(未実施)1ノートブックに含まれるノートの数を減らす

 あと、多分ノートの一覧と詳細を表示する画面で、必要な情報をメモリキャッシュに乗せているので、一旦Evernoteアプリがバックグラウンドに回ってメモリを開放されてしまうと、一覧を表示するために再度ノートの一覧と詳細を読み直す必要が出てきて、その更新の間、固まってしまうような挙動をしてる気がする。

 せめて表示されている範囲分だけ差分で取得してくれれば良いんだろうけど、なんとなくそんな動きじゃない気がする。

 これに対応するためには、1ノートブック内のノートの数を減らす必要がありそうだけど対応するのが面倒臭いので今のところ放っておいている。

同期関係のオプションの見直し

 同期関連の処理のオプションを見直す。以下のオプションのチェックはすべて外す。要するに自動的に同期が始まらないようにする。自動で同期することに慣れていると、一々同期ボタンを押すのが若干ダルいけど、正直すぐに慣れる。

 なぜなら、更新しているのは今さわっている端末からだけなので、基本的に作業が終了したら同期する or Evernoteを終了すればいいだけだから。同時に複数端末使っている場合は分かりません。

オプション - 同期

  • オンデマンド同期を有効化
  • 同期を即座に有効化
  • バックグラウンドで同期する
  • 自動同期する

オプション -ノート

  • コンテキストを表示

オプション - 検索

  • ノートが更新された時に検索

実際どうだった?

 いくつか試行錯誤しながら上記の設定に辿りついたけど、やる前と比べたら大分スムーズに動くようになった気がする。今だにしばらくバックグラウンドに放り込んでいたり、不意に同期したりすると遅くなるけど…。

 Evernoteは便利だし、プレミアムプランで使ってたりと利用頻度は高いんだけど、もう少しマシなアプリを出してくれないかなぁっと思う。今のアプリを改修するのが無理なら、機能を制限した軽量版とかでも良いので作ってくれないかなぁ。