普段何かメモを取るときには Obsidian を使っている。
Obsidianは高機能なMarkdownノートで、個人での情報整理には最高なのだが、諸事情によりこれが使えない環境というのもある。
そのような環境では、ローカルの適当な場所にMarkdownファイルを作ってVSCodeで書いている。
このやり方でも特に困ってはいないが、最近何かとメモを書いて考えることが多く、また複数のデバイス間で同期する必要も出てきたので仕組みを整備することにした。
やりたいことをまとめると以下のような感じ。
- Markdownで書きたい
- サッとメモを取り始めたい
- ターミナルからコマンド一発で起動できるとか、タイトルを決めずに雑に書き始められるとか
- 複数のデバイス間でデータを同期したい
- 同期にはクラウドストレージサービスを使いたいので、データがファイルとして保存されていると嬉しい
- メモはタイトルや本文で検索できればよく、階層管理はいらない
- 可能であればエディタはVimやVSCodeが使いたい
- ObsidianはVimモードがあって便利
これを満たせそうなツールとして mattn/memo があったので導入することにした。
設定内容
~/.config/memo/config.toml
はこんな感じ。
memodir = "~/.config/memo/_posts" editor = "code -n" column = 20 width = 0 selectcmd = "fzf" grepcmd = "grep -nH ${PATTERN} ${FILES}" memotemplate = "" assetsdir = "." pluginsdir = "~/.config/memo/plugins" templatedirfile = "" templatebodyfile = ""
editor
には code
を指定してVSCodeを開くようにしている。
また既存のウィンドウで開くとタブが探しづらくなるので、-n
で新しいウィンドウを開くようにしている。
複数デバイス間での同期
作成したメモは memodir
にファイルとしてフラットに保存されるので、以下の方法が取れる。
~/.config/memo
はdotfilesで同期、ただし_posts
だけgitignoreしておく- クラウドストレージの同期ディレクトリにメモを置く用のディレクトリを作り、
_posts
はそこへのシンボリックリンクにする
プラグイン
pluginsdir
に実行可能ファイルを置くと、memo
のサブコマンドとして使えるようになる。
自分はObsidianにあるDaily noteのような機能が欲しかったので、そのための today
コマンドを自作した。
1日ごとに固有のタイトルを持つメモをサッと開くことができる。
#!/bin/bash set -eu # プラグインは-usageをハンドリングする必要がある # このコマンドは他に引数を取らないので雑にハンドリングしている if [ "$*" = -usage ]; then echo "open today's daily memo" exit fi # 「日付-diary」というタイトルにしている title=diary filename="$(date +%Y-%m-%d)-${title}.md" # ファイルが既にあればeditを、なければnewを呼び出す if memo cat $filename &> /dev/null; then memo edit $filename else memo new $title fi
タイトルを考えずに雑にメモを取れる場所があるのは非常に便利。
これを作ってからメモがかなり捗っている。
テンプレート
memotemplate
にファイルを指定すると、それをメモ作成時のテンプレートとして利用できる。
テンプレートにはGoのtext/templateのフォーマットで {{.Title}}
や {{.Date}}
を埋め込むことができる。
これを使うと例えばYAML Frontmatterを簡単に付けることができるが、付けたところで活用できる場面が思い浮かばなかったので使っていない。
--- title: {{.Title}} date: {{.Date}} tags: [] --- # {{.Title}}
個人的にはh1タイトルに日付を入れたいのだが、{{.Date}}
は %Y-%m-%d %H:%M
なので使えなかった。
設定で dateformat
が指定できると嬉しいかもしれない。
Obsidianとの併用
Obsidianもメモをファイルとしてフラットに保存する (階層管理もできる) ので、ディレクトリを共有することで memo
でもObsidianでもメモが取れるようになる。
ObsidianはiPhoneアプリもあり、iCloudを使うとそちらにも同期できるのではないかと思っている。(Obsidianが使えるならの話)
また、ObsidianはFrontmatterのtagsを認識してくれるので、併用する場合はテンプレートにFrontmatterを入れておくと便利かもしれない。
(個人的には #tag
形式で本文中に書くほうが好みだが)
https://help.obsidian.md/Advanced+topics/YAML+front+matter
感想
メモに関してはこれまでいろんなツールを乗り換えてきており、今後もまた変えるかもしれないことを考えると、可能な限りポータビリティが高い状態にしておくのがよいはず。
その点mattn/memoはメモをファイルとしてシンプルに管理することができ、プラグインによる拡張も簡単なので便利に使い続けられそうだと思った。