AlternoteでEvernoteに保存したMarkdownを,Markedでプレビューするやつを作った話.
概要
軽量EvernoteクライアントであるAlternoteを使ってMarkdownでメモをとり,
それをMarkdownビューワであるMarkedでプレビューするものを作った.
これは,設定さえしておけば,いつものメモ動作にHotkeyを一発加えるだけで実行できる.
また,最終的にEvernoteにデータが保持されるのであれば,エディタはなんでも良い.
以下の図のような感じでプレビューできる.右の黒いアプリがAlternoteで,左側のMarkdownビューワがMarkedである.
Markdownが好きだ
Markdownはいい感じだ.
メモをMarkdownで取ると,構造化されたメモがわりと簡単に取りやすい.
だからみんなMarkdownのこと結構好きだと思う.
そんなこともあってオンラインストレージを使ったMarkdownメモツールというのがいくつかあって,ぼくもこれまで色々試してきた.
例えば,Vim用にはEverVimがあったり,
ブラウザから利用可能なwri.peがあったり,
Mac,iPhone用のアプリではDayOneがあったりする.
と,色々試してきたし,どれも好きだったんだけどメモがとりにくかったり,シンタックスハイライトが微妙だったり,見返しづらかったりして結局定着しなかった(個人の感想です.)
で,最近はAlternoteというMac用の軽量Evernoteクライアントを使っていた.
Evernote,クライアントは重いしメモとるのめんどくさかったりと個人的にはだいぶ好きじゃないんだけど,Alternoteはそのへんがけっこうよかった.
ただ,EvernoteはなぜかMarkdownに対応してないので,そこをどうにかする必要があった.
Evernoteに書いたMarkdownをプレビューしてきた先人たち
まあこれは色々いらっしゃる.
個人的には,MacでMarkdown書くときは,Vimで書いてvim-quickrunでMarkedを呼び出してプレビューしていたので, 同じようにMarkedを使っている人を探した.
以下の方はEvernoteで最も最近更新されたメモをMarkedで表示するシェルスクリプトを書かれている.
ただEvernoteがバージョンアップしてディレクトリ構造が変わったのでこのスクリプトはもう動かなかった.
今回作ったものを利用する流れ
というわけで,先人のプログラムをForkして,以下のような流れで動くようにした.
今回新たに作成したプログラムは以下の2つ.
これらを利用する流れは以下のようになる.
- Evernote更新検知アプリを起動しておく.
- Alternoteでメモを書いて保存・同期する.
- Hotkeyを叩いて,Evernote更新取得アプリを起動.
- Evernote更新検知アプリが更新を検知して,Markedでプレビュー.
つまり,人が行う動作としては,
- Evernoteの更新を検知するアプリの起動(初回のみ)
- Alternoteでメモを書く
- 保存
- Hotkey押下
のみであり,これまでのメモ動作にHotkeyを加える形になる.
すると,以下の図のような感じでMarkedでプレビューが実行される.
プログラムの作成
Evernote更新検知アプリ
シェルスクリプトをAutomatorを使ってアプリに固めたものを利用する.
turuさんのシェルスクリプトを基に最新版のEvernoteに対応させたプログラムを保存しておく.ID(ユーザ名ではなく数字7桁のID)は自分の環境に合わせたものをシェルスクリプトに記述する.
保存したら,Automatorを開き,アプリケーションの作成を選択.
以下の図のようにシェルスクリプトを登録しておく.ディレクトリは各自の環境に合わせて変更して欲しい.
あとは保存の際に保存形式をアプリケーション(.app)にして,/Applicationディレクトリとかに入れておく.デフォルトだと裏で動き続けるプログラムなので,ログイン時に起動させたり,Alternote起動させるときにいっしょに起動するなどして欲しい.
Evernote更新取得アプリ
Hotkeyで呼び出すプログラムを,サービスとしてAutomatorで作る.
EvernoteクライアントはAppleScirptをサポートしているので,以下のAppleScriptでEvernoteの同期を実行することができる.
on run {input, parameters} tell application "Evernote" synchronize repeat until isSynchronizing is false end repeat end tell return input end run
このスクリプトを組み込んだ以下の図のようなAutomatorサービスを作成し保存する.これは,Evernoteを起動し,同期を実行したらAlternoteを起動する,というプログラム.
サービスを保存したら,Macのシステム環境設定から,ショートカットキーで作成したサービスを呼び出すように,以下のように設定する.
(名前は自由に設定すれば良い.ここではAlternote_viewerという名前をつけていた.)
Hotkeyは好みなので自由に変えて良い.
補足
今回,AlternoteをEvernoteエディタとして利用しているが,ここはVimでもEmacsでも,公式Evernoteクライアントでもなんでもいい.
(でもVimとかだったらquickrunからMarked呼び出したほうがラク)
公式クライアントを使う場合は Evernote更新検知アプリのみが必要になり,Evernote更新取得アプリは必要ない.
iPhoneについて
個人的にはiPhoneみたいなスマホでmarkdownをプレビューする必要はあんまりないと思ってる.
それよりも,markdownを使って出先でサクッとメモをとって,家のMacで読み返すっていう使い方をしてる.
ただ,iPhone向けのEvernoteクライアントはなんかしっくりくるのが見つかってないので,このへんもなんか考えたい.