ブブゼラを聞きながらEmacsでSimplenoteを操作してみました

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

(はてブコメントへの返信を末尾に追記しました。2010年7月2日)

全国1000万人のEmacs + iPhone + Simplenoteユーザーのみなさん、こんにちは。
これまで、Windows→Linux→BeOS→Mac OS XとOSを渡り歩いてきましたが、その間ずっとEmacsのお世話になっている、プログラマーのおぐらです。

iPhoneでメモをとる際、みなさんそれぞれお気に入りのアプリケーションを使われていると思いますが、私は

  • シームレスな同期
  • シンプルなつくり
  • iPad版がある
  • Webインターフェースがある

といったあたりに魅力を感じてSimplenoteを使っています。明示的に同期ボタンを押さずとも必要に応じて自動的に同期してくれる挙動がとくに助かっています。

ブラウザから利用する場合は https://simple-note.appspot.com/ にアクセスします。

iPhone以外からSimplenoteのメモを編集する場合は当然ブラウザから行うわけですが、読み書きするものはとにかくEmacs上でやりたくなるのがEmacsユーザーというもの。なにかいいソリューションはないかな…と探してみたところ、simplenote.elというそのまんまなブツを見つけてしまいました。これがなかなかの優れものでしたので、インストール方法と使い方を簡単にご紹介します。

インストール!

インストールとは言っても実体は1つのelispファイルなので、ダウンロードしたものを適当なパスに置いて.emacsから読み込めばOKです。

.emacsには以下のように記述します。

デフォルトでは、Simplenoteと同期した時に ~/.simplenote ディレクトリにキャッシュが生成されます。このディレクトリを変更したい場合は simplenote-setup を呼び出す前に simplenote-directory 変数の値を変更しておきます。

使い方!

simplenote.elには、

  • サーバー上に保存されているメモをブラウズ&編集する
  • 既存のローカルファイルをSimplenoteと同期させる

という2通りの使い方があります。

サーバー上に保存されているメモをブラウズ&編集する

ブラウズモードに入るにはEmacs上でコマンド Metax simplenote-browse を実行します。サーバーとの通信が完了すると、以下のようにメモの一覧が表示されます。

(あっ!半角カナが化けてる…)

各メモのタイトル部分で Ctrlm やら Enter を押すと、そのメモの編集バッファが開きます。

なお、ここで内容を変更&保存してバッファを閉じても変更はサーバーには反映されません。サーバーに反映するには、明示的に [Sync with server] を押す必要があります(シームレスになるといいですね)。同様に、[Delete] を押してメモを削除した場合も同期を行わない限りサーバーから削除されることはありません。

[Create new note] で新しいメモを作成&保存した場合は以下のような表示になり、やはり同期を行うまではローカルにのみ存在するメモとなります。

なお、サーバーに反映されていない変更内容はローカルのキャッシュファイルに保存されるため、同期前にEmacsを終了させても大丈夫です。

既存のローカルファイルをSimplenoteと同期させる

既にローカルに存在するファイルを同期する場合は、対象のファイルを開いた状態で Metax simplenote-create-note-from-buffer を実行します。

同期が完了すると、バッファの末尾に識別用のキーがコメントとして埋め込まれます。

この時点でブラウザからSimplenoteにアクセスしてみると、以下のようにちゃんと同期されていることが確認できます。

以降は、このファイルを開いている時に Metax simplenote-push-buffer および Metax simplenote-pull-buffer を実行することでローカルからの送信およびサーバーからの取得を行うことができます。ただし、キーを含んだコメント部分を削除してしまうと、これらの同期処理は動作しなくなりますので注意してください(メモ自体はサーバー側に残ります)。

さいごに

スクリーンショットを多めに載せたのにも関わらず、Emacsネタということでたいへん地味な見栄えになってしまったのが悔やまれますが、なかなか便利なスクリプトですのでEmacs + iPhone + Simplenoteユーザーな方はぜひお試しください。

追記 (2010年7月2日 19:12)

はてブ経由でid:kitokitokiさんからコメントをいただきました。

iphoneを持っていないのですが、ハックをいれるとしたらこんな感じでしょうか。検証できていないコードですみません。http://gist.github.com/458545 2010/06/30

gistに書かれたコードでは、defadviceまたはadd-hookでバッファ保存時にSimplenoteと同期させるようになっています。

これで、[Create new note]で新しいメモを作成した際もシームレスに同期されますね。ありがとうございます!

AWS運用自動化サービス「Cloud Automator」