今まで技術書のメモをOneNoteに取っていました。 OneNoteを使う理由としては、自分はスクリーンショットをメモの代わりにしていて、OneNoteは画像が扱いやすくOCRも効くためでした。

ただし、OneNoteを使うとスクショを取って貼り付けるという作業が面倒でした。

そのため、mumemoというスクリーンショットベースのメモをとり、Markdownファイルとして書き出していくアプリを書きました。

mumemoは次のように、記録したい範囲を選択して(選択範囲もメモ内に埋め込まれる、OCRの代わり)、スクショ(OpenCV.jsでいい感じに加工する)を取って、必要ならメモ欄に書いていく追記型のメモアプリです。 mumemoで記録したメモ書きは、次のようなファイルベースのMarkdownと画像ファイルとして出力されます。

├── 2019
│   ├── DevOps
│   │    ├──README.md
│   │    └──img/
│   ├── JavaScript
│   │    ├──README.md
│   │    └──img/
├── 2020
│   ├── JavaScript-\ The\ First\ 20\ Years
│   │    ├──README.md
│   │    └──img/
└── └── kubernetes
         ├──README.md
         └──img/

mumemoで記録したMarkdownはただのファイルなので、普通にローカルで検索もできて、自分専用のPrivateリポジトリで管理もできます。

numemoに移行したため、今までOneNoteで取っていたメモ書きも同じ形式に移行する必要がでてきました。

macOSのOneNoteにはPDF出力以外の手段が用意されていないため、ウェブ版のhttps://www.onenote.comからメモをダウンロードしてMarkdownに変換する仕組みを作りました。

export-onenote-to-html

export-onenote-to-htmlは2つのステップでOneNoteをMarkdownに変換します。

OneNoteのHTMLファイルをダウンロードする

Greasemonkey or Tampermonkeyを使って、ウェブ版のhttps://www.onenote.comからページをHTMLとしてダウンロードします。

  1. https://github.com/azu/export-onenote-to-html/blob/master/onenote-downloader.user.js をインストール
  2. ウェブ版のhttps://www.onenote.comにアクセス
  3. ダウンロードしたいページを開く
  4. 画像のダウンロードを待つ
  5. 右上の "Download" ボタンを押す

image

ウェブ版のOneNoteはHTMLにBase64化した画像をインラインに埋め込んでいます。 そのため、ものすごいサイズのHTMLファイルがダウンロードできると思います。

ダウンロードできたら、埋め込まれたHTMLをMarkdownと画像として変換します。

ダウンロードしたHTMLをMarkdownと画像に変換

export-onenote-to-htmlというnpmモジュールを使ってダウンロードしたHTMLをMarkdownと画像ファイルに変換できます。

利用するにはNode.jsのインストールが必要です。(npxコマンドはNode.jsにもはいっています)

次のようにダウンロードしたファイル(downloaded-page.html)を変換して、その結果を out/ ディレクトリに出力できます。

npx export-onenote-to-html downloaded-page.html --output out/ 

ダウンロードしたHTMLをまとめて変換したい場合は、xargsrargsなどを使えばできます。

次のコマンドは、カレントディレクトリにあるHTMLをすべて変換する例です。

# macOS
$ brew install rargs
# Install CLI globally
$ npm install --global export-onenote-to-html
# convert 
$ ls *.html | rargs -p '(?P<file>.*)\.(?P<ext>html)' export-onenote-to-html {file}.{ext} --output {file}

年数別のディレクトリでワケたい場合は、export-onenote-to-html--yearDirectoryというフラグがあるので、これを試してみてください。 (ダウンロードしたHTMLに依存しているのでうまくいかないケースもありそうです)

おわり

export-onenote-to-htmlでOneNoteに書いてたメモを、GitHubに移行しました。 本を読んでいるときのスクショベースのメモはmumemoでやるようになって、だいぶ効率が良くなった気がします。 わざわざ別のメモアプリを開かないで、ポップアップウィンドウのメモ欄にその場で書けるようになったので、メモの量が増えた感じがします。

ファイルベースのメモがいいのかはまだわかってないですが、完全一致の検索はVSCodeでしたり、キーワードの組み合わせ検索(AとBのAND検索)はGitHubのPrivateリポジトリで行う形にもできたりはするはずので、まあまあいいのかなーって気がします。