n350071のブログ

主にRubyなフリーランスエンジニア

EverNoteからのデータ移行を補助する'enex-to-markdown'をメンテしました

2019-08-30 n350071release_note

概要と経緯

昔はEverNoteも無料でいろいろできたのですが、 いつの頃からか、使えるデバイスは2つまで制限ができてしまい使い勝手が悪くなってしまいました。

フリーミアムモデルとはいえ、事業者のさじ加減ひとつで使えなくなってしまうノートアプリから脱出して、 無料で自由なソフト、オープンソースソフトウェアのノートアプリへの移行を考えました。

欲しい機能は以下のとおりです。

sergi ferrete YXwt vJ3szA unsplash

欲しい機能とOSS

  • GoogleDriveやDropboxなどにファイルを置くことで、クラウド同期を実現できること
  • Markdownに対応できること
  • 素の.mdファイルであること

これらを満たすOSSはNotableだけでした。
Boostnoteというものもあり、開発時のノートとしては大活躍というか、こちらのほうが好みなのですが、2019/08/30現在では、素のmdファイルではないため、iPhoneから見るときに対応アプリがないことが私のユースケースには致命的でした。ただし、現在進行系でアプリを開発していこうという動きがあるので、今後はBoostnoteに移行するかもしれません。)

データ移行が必要になった

EverNoteは一括Export機能を備えていますが、mdファイルには変換してくれず、HTMLまたは.enexというEverNote独自のファイルをexportすることができるようです。

enexについては、XMLファイルの中に<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd"><en-note>..などのタグを持つXMLの亜種です。nokogiri gemで対処することができそうです。以前に.enex→.md変換をしようとした人がいないかを調べたところ、seanhagen/enex-to-markdownというリポジトリを見つけたので、こちらを利用することにしました。

enex-to-markdownとは

.enexファイルを.txtファイルに変換するツールです。
こちらをgit cloneして使ってください。(後述のとおり、本家はもう動かないため)

使い方

使い方は単純です。
bundle installをしたあとに、ディレクトリのトップ階層に 「notes.enex」という名前 でenexファイルを置いたうえで、以下のコマンドをコンソールから実行します。

コンソール
ruby parse_to_notable.rb`

実行が終わると、notesディレクトリの下にtextファイルが配置されているはずです。

aaron burden xG8IQMqMITM unsplash

本家との違い

修正1

ただし、本家のリポジトリは4年前に開発が止まってしまっているようで、rubyもそのままのバージョンでは動かなかったため、forkして修正を加えました。

Pull Requestの内容はこちらです。
emoji-up update ruby and gem versions by n350071 · Pull Request #1 · n350071/enex-to-markdown · GitHub (本家にも送りましたが、特に見てくれていないようです。4年も前だし仕方ないかな。)

修正2

本家が作られた頃と.enexファイルの構成が変わってしまったようなので、parserの動作を変更しました。
またNortableの.mdに合わせるため、タイトルやタグなどをまとめたヘッダ情報部分の作りを修正しました。 Feature/parser for notable by n350071 · Pull Request #2 · n350071/enex-to-markdown · GitHub


それでは、よいノートライフを!