GAEでローカルファイルを使いたい
相変わらずGoogle App Engine(以下GAE)を用いて俺のみが得するクラウドアプリを色々と作成しているのであるが、GAEはクラウド上にローカルファイルを作成することができず、永続化を行うにはBigDataへのインサートやセレクトを前提としており、ちょっとした設定値や永続化したい変数などを置いておくには面倒なところがあった。
これを解決する手段としてEvernoteを用いることを思いついた。EvernoteはAPIの申請を行うとJavaなどからノートを作成・編集することが可能となる。以前からEverno APIを用いたアプリをGAE上で自動的に動くようにしてあり、編集や整理をさせるようになっている。
Evernoteのノートを読み取って変数化を行う
Evernoteで例えば「ZZ.system」というようなノートブックを作成して、一意の名前となるようにノートを作成する。アプリ側ではそのノートから取り出した中身やタグから変数化を行いアプリで使用する。または同一のルールを用いてアプリ上の変数をEvernoteのノートにAPIから書き込む。たったこれだけのことであるが、以下のような効用がある。
- セキュリティなどを考えた管理クライアントソフトを作成する必要がなくなる
- 様々なデバイスから設定変更可能となる
- ノートブックを限定共有することでコラボレーションがしやすくなる
- BigTableを使わないために逆説的に移植性が高まる
- BigTableよりも比較的簡単に取得・編集処理が書ける
直接DBを編集しないのであれば、一般的に管理用クライアントアプリを別途作る必要があるが、これのセキュリティを考えたり、ちゃんと動くものを作るまでがまず面倒である。しかしながらEvernoteであればEvernoteのクライアントやWeb版にすべてを委譲することができ、認証の問題やマルチデバイスといったことが一気に解決する。例えばAndroid版Evernoteであればモバイルで3G回線が繋がっていなくても編集して、3G回線が回復したらバックグラウンド同期されるといったことまで実現可能となる。
ノート共有機能が捗る
そしてEvernoteのノートブック共有機能を用いることで複数人からの編集機能まで委譲できる。前述したEvernoteにはてなブックマークのタグを付けていくアプリの場合、シノニム表という例えば「2ch・VIP」「2ちゃんねる」「2ちゃん」「ハム速」といったタグの表記乱れをすべて「2ch」に吸収する正規表現リストのメンテナンスが重要なのであるが、これについて安全に複数人での管理ができるようになるとクラウドソーシングで夢が広がりングである。
移植性についてはGAE用に作成したアプリは他のプラットフォームに移すためにBigTable周りの書き換えをしなければいけないという問題があって、DAO化しているといっても、そもそも書き換えるのが面倒であった。そこでもストレージにEvernoteを利用するという前提においてはAmazon EC2に移植しようが問題なく動く。そしてEvernoteのAPIは比較的簡単だし、他のアプリケーションへの応用が効くので少なくともパーソナルな活用を前提とする場合においてBigTableよりも学ぶ意義があろう。
実際ちょっとした永続化処理のBigTable化作業が面倒でいちいちサービス側に問い合わせて生成させてAPI使用制限に怒られがちな部分があったのであるが、Evernoteをストレージとして利用することで最初に作ったオブジェクトの値を半永続的にキャッシュしておく処理が簡単に作成できた。
例えばSingletonなオブジェクトを取得する場合に、Static変数を利用 → ないならEvernoteから生成 → ないなら初期条件で生成みたいな順で生成すると捗る。そして動作内容を変えたくなったらEvernoteクライアントを用いて何時でも何処でも当該ノートを編集できるのである。この便利さは病みつきになる。こうしてますますEvernoteにロックインされていくのでした。

できるポケット Evernote 基本&活用ワザ 完全ガイド
- 作者:コグレマサト,いしたにまさき,堀 正岳,できるシリーズ編集部
- 発売日: 2014/04/25
- メディア: 単行本(ソフトカバー)