Joplin(特にエディタ)がクソで使い物にならなくなったので※、他を探してみたのだが(試したものを付録に書いた)、結局、Zettlrしか残らなかった。エディタの機能ではJoplinは足りているのだが、遅かったり表示がジャンプしたりと邪魔されて普通に文章が書けないという点で、使うことができない。
※想像して欲しい。1文字打つ・消すたびに5秒くらい待たされるので、記憶と予想で新しいカーソル位置を想定して作業する苦しさを。30年前のviだって、そんなことはなかったよ。もちろん、何か大きなことをすると(いつ起こるかは不明)いきなりカーソルが行方不明になって、文章を書くレベルじゃねえ!
前回候補に挙がったTriliumは、(いろいろな問題はあるけど一番大きいのは、)内部的にMDでない(HTMLのようだ)※せいかJoplinのノートを開くと書式が変わってしまう。Triliumを使うために全部のノートを見て修正するなんてやってられないので、やっぱり使いものにならない。
※どうしてそうしたかは分からないが、推測してみると、MDよりHTMLのほうが 幅広い表現が可能なためかも知れない。が、世の中の標準に合わせずに自分だけの(詳細が不明な)仕様で通そうとしても先は ない。そういう点で、Triliumはセンスが悪い。
更に、PC(Linux)だけの話なら まだいいが、僕はスマフォ(Android)でもノートを共有して開きたい。すると、ノートの同期システムが必要になるのだが、こちらも(僕には)まともなものがなかった(例: ちゃんと同期しない、電池を食う)。また、同期するといっても、常に全部のノートをスマフォに入れておく必要はなく、見たいものだけ適宜ダウンロードすればいいのだが、そういうものは なかなかない。Dropboxは近いのだが、その上のノートをMDエディタで開いた時に画像が開けない問題があった。Dropbox対応のMDエディタなら可能かも知れないが、有料である。※
※高いものではないから、ちゃんと使えるなら買ってもいいけど、買わないと確かめられないので どうにもならない。
すると、PCとサーバとスマフォでノートを同期するという点では、Joplinは必要充分で なかなか良いことに気付いた。
なお、JoplinのAndroidアプリはLinux版と同様に重くて(EvernoteのAndroidアプリと同様) ほとんど編集はできず、表示専用と割り切っている。
そこで考えたのは、いつものように、JoplinとZettlrで「何とかする」ことだ。それぞれの得意な(「使える」)ところを使い、以下のように分業させるのだ。
JoplinとZettlrの分業
- Joplin
- (Linuxアプリ) ノートの管理
- (スマフォアプリ) スマフォでのノートの表示
- 重いので、編集は元から諦めている。
- ノートの編集(書き込み)の代わりに、自作のメモ記録システム(BNote)を使っている。
- 必要なら、そのメモをPCでノートに貼り込む。
- ノートのサーバとの同期
- Zettlr
- ノートの編集
試しに上記の分業システム(のPoCかプロト)を昨日作り、どうにか動くようになった。以下に基本的な動作を示す。
動作
- Zettlrで編集したいノートに対して、Joplinで外部エディタでの編集を設定する(ノート名で右クリック → "Edit in external editor")。
- あらかじめ、Joplinの設定の外部エディタに、JoplinとZettlrを連携させるためのコマンド(「コネクタ」?)を指定しておく。
- JoplinとZettlrを連携させるコマンド(zettlr.sh)は以下を実行する。
- 編集用にJoplinからエクスポートされたノート(「元ノート」)を作業ディレクトリにコピーする(→ 「作業ノート」)。
- 元ノート自体をZettlrに指定してもいいのだが、Joplinの他のファイル(設定やログ)が見えるのが嫌だし、それらを誤って変更したり削除してしまうのを防ぐために こうしている。
- また、下にも書いたが、Zettlrは単にファイル名を指定しても開けない場合があるので、(仕方なく)作業ディレクトリを作ることにした。
- 更に、Zettlrはsym-linkは開けないようなので、(仕方なく)編集するノートを作業ディレクトリにコピーすることにした。
- このために かなり面倒になった。。。
- 調べたら、ワークスペースやノートのあるディレクトリにsym-linkがあると うまく動かないことがあるようで(→ 参照)、実際に この環境でもしばらく使っていたらノートが開けなくなってしまった(なぜか、Zettlrを再起動すると開ける)ので、(仕方なく)作業ディレクトリ直下からsym-linkを排除し、ノート中のリソース(画像)を抽出してJoplinのディレクトリからsym-linkして(サブディレクトリにある分には大丈夫なようだ)表示できるようにした。これで様子を見ることにした。
- 作業ノートを指定してZettlrを起動する。
- あらかじめ、Zettlrに作業ディレクトリをワークスペースとして設定しておく。
- 設定しないと、Zettlrが起動中に新たにノートを開く時にエラーで開けない場合が多い。
- あらかじめ、Zettlrに作業ディレクトリをワークスペースとして設定しておく。
- 作業ノートの更新または元ノートが削除されるのを待つ。
- 作業ノートの更新の場合、少し更新を「ためて」からJoplinのディレクトリにコピーする。
- ノートを書いている時は頻繁に作業ノートのファイルが更新され、そのたびにコピーするのは無駄だし重そうなのでそうした。
- 現状は、10回以上更新があったか、10回未満でも約20秒間更新がなかった場合にコピーするようにしている。
- 元ノートが削除された場合(Joplinで外部エディタでの編集が解除された)、作業ノートを削除して終了する。
- 作業ノートを元ノートにコピーしていない場合(上記の保留された更新が未反映の場合)には、エラーダイアログを出す。 → あとで手で反映させるなどが必要。
- 作業ノートの更新の場合、少し更新を「ためて」からJoplinのディレクトリにコピーする。
- 3に戻る。
- 編集用にJoplinからエクスポートされたノート(「元ノート」)を作業ディレクトリにコピーする(→ 「作業ノート」)。
- ノートの編集を終える時は、Joplinでノートの外部エディタでの編集の設定("Edit in external editor")を解除する。 → 元ノートが削除され、上の「元ノートが削除された場合」が実行される。
使っている時の画面を見ても、単に「2つのMDエディタが動いているだけ」だが、背後では上のような複雑な処理をしている。そのおかげで、Zettlrでノートを変更すると少し経ってJoplinの表示も更新される。
効果・良かったこと
- 操作性: Zettlrは高速(というか、当たり前の速さ)だし、MDエディタとしての挙動も概ね一般的(Joplinに近い)なので、書く時にストレスがなさそうだ。
- 今までのところ、機能不明・不足以外のストレスはない。
- 他のエディタのようなプレビュー画面はない(印刷プレビューのみ)のだが、それで充分使えるところがZettlrの表示の すごい・うまいところだと思う。やたらに機能を増やさず、着実に進めている印象がいい。
- 一方、Joplinのエディタは まさに"disturbance/distraction-ful"だ。
- 今までのところ、機能不明・不足以外のストレスはない。
- メモリ量: JoplinもZettlrも同じElectronで動いていると思われるが、Zettlrは随分まとも(というか普通)。
- 開いているノートの数と使用メモリ量(アイドル時)の比較例
- Joplin: 1ノート(サイズ: 約40KB): 約1.2GB
- Zettlr: 5ノート(サイズ: 合計約1MB): 約680MB
- Joplinはエディタの他にノート管理や同期の機能があるとは言え、メモリを食い過ぎる。多くのノートを開くと、簡単に2GBを超える。
- Joplinのメモリは減ることがないが、Zettlrは作業状態に応じて ちゃんと減るのが いい(というか、それが普通だ!)。
- 開いているノートの数と使用メモリ量(アイドル時)の比較例
処理速度もメモリ量も、同じElectronなのにZettlrは ちゃんとしているが、Joplinは全然「なってない」。Zettlrができているので、やればできるはずのことをしていない(Androidアプリも同様にひどい)。作者は、手を広げるよりも、まず こういう基本的なところを詰めるべきだと思う。
惜しいこと
- ノートを編集するたびにJoplinで外部エディタでの編集を設定するのが面倒。
- Joplinを終了しなければ設定は維持されるので それほど煩雑ではないが、(可能ならZettlrに組み込まれた)シンプルなメニュー的なものが欲しい。
- JoplinとZettlrの管理情報(タイトルの設定方法やタグやノートのIDやマークダウンリンクなど)が別々なので煩雑。
- ノートIDの統合はできないだろうから、Joplinをベースにするしかなく、必要になるたびにJoplinに戻るのが面倒そうだ。
- 書いていて気付いたが、Zettlrで貼り込んだ画像をJoplinに戻す必要があることを忘れて居た。面倒かも知れない。。。
- 同様に、新規ノートはZettlrでは作れない(Joplinに入れる機能がない)。: なかなか先が長そうだ・・・
- Zettlrの編集機能が「もう一声」。
- 総合的には、試した他よりは ずっといいのだが・・・
- 書式設定の機能・メニューが少ない。
- 日本語処理は特にしていないようで、日本語中の英語の単語選択(ほとんど文章全部が選択される)もスペルチェックも誤動作する(ノートのほぼ全体が真っ赤になるw)。
- このブログ(WordPress)のエディタくらいの機能があれば言うことないが、なかなかうまく行かないものだ。
- 何度もブログでノートを書くことを考えているのだが、エディタの機能だけで済むものでもなく、なかなかうまく行きそうにないので諦めている。
- あと、テーマがどれもイマイチ。自分でCSSをいじれるが、もう少し普通の感覚のものを用意して欲しかった。
- もしかすると、日本(というか、僕?)以外では、用意されたものがごく普通なのかも知れないw が、特に色遣いの趣味が悪い。明る目の緑とかキツい赤とか止めて欲しい・・・
- 総合的には、試した他よりは ずっといいのだが・・・
- "Zettlr"の綴りが いつも分からないw
- Zettler? Zottler? Zottero? ヒ○ラー? デスラー?などと、最初の"Z"しか分からない。
メモ・残件
- ファイル更新の検出は、inotifywaitというコマンドを使った。これをモニターモードで動かし、出力されるイベントを読み込んで処理する。
- ファイルのコピー中などに起こったイベントを落とさないように、モニターモードで動かすことにした。
- 連続した複数のイベントを保留してまとめる処理は、イベントの読み込み(bashのreadコマンド)にタイムアウトを指定することなどで実現した。
- 現状では、編集中のノートごとに上のファイル更新の検出処理が起動されてイマイチなので、いつか統合したい。
- ただ、基本的に待っているだけなので、負荷は高くない。が、無駄にプロセスが多くなって気分が悪い。
- 上に書いたように、Zettlrで追加した画像や新規ノートをJoplinに入れる処理が必要だが、作るのは容易ではない。対応できるまでは適宜Joplinを併用するしかない。
付録: 試して却下したMDエディタ
以下のもの(すべてLinux版)を試したが、どれも僕には今ひとつだった。次点的なものはMark TextとAbricotineとReTextだった。
(書いたあとで再度試して分かったが、)Mark Textはキーの挙動と勝手な修正とメモリ量などを我慢すればZettlrより良さそうで、乗り換えたくなっている。が、更に少し試したら結構バグがあるようだし、ノートを勝手に修正されるのは困るので、保留した。Abricotineはメモリを食うのが惜しい。ReTextは いろいろ惜しい。いったい何を考えているのか分からない。そこを直せばいい感じだ。
Remarkable: パッケージ不足でインストール不可だった。- ReText: タブキーで箇条書きがインデントしない。
- プレビューの画像のサイズが大きい(リサイズされない)。
ライブプレビューの表示位置がエディタと同期せず、不便。(← レンダラーにWebkitを使えば同期する。)- 改行の解釈・処理が違うようで、改行だけで次に空行がないと、行が繋がってしまう。
- メモリ量は少なそう。
- Mark Text: MDを勝手に変更(修正)する。カーソルがノート内にある場合、Page Up/Down, 上下キーの動きがおかしい。
- MDの箇条書きの子要素の前に余計な空行が入る(MDを勝手に変更する)。
- その他も勝手にいろいろ(空行や空白など)書き換わる。「正しいMD」に修正してしまうようだ。
- MDの空行が無視される。入れてもなくなる。
- 細かいバグが多そう。
- Ver. 1未満なので仕方ない? (結構時間は経っているが・・・)
- 日本語対応は一番良い。
- 雰囲気はZettlrに似ている。
- メモリ量は多目だが、Joplinよりは少なそう。
- MDの箇条書きの子要素の前に余計な空行が入る(MDを勝手に変更する)。
MindForger: PPAがUbuntu 20.4 LTS(focal)に非対応でインストール不可だった。- Abricotine: 開くノート(ウインドウ)の数に応じてメモリがかなり増える。約340MB+200MB/ノート。
- 複数のノートは別ウインドウ
- 設定がファイル
- 表示は綺麗。
- Zettlrに近い。
- 古い: 2015年。ただし、GitHubでのリリースは2020年。
- Notable: ワークスペース型で、ノートのインポートが必要。
- Haroopad: タブキーで箇条書きがインデントしない。
- 複数のノートは別ウインドウ
- なぜか、メニューのフォントが汚い。
- 雰囲気が、僕が使っているエディタjEditに似ている。
- メモリ量は少なそう。
寄付の表示が消せない。(← ボタンを押せば消える)- 古い: 2015年。
- GhostWriter: 複数のノートが同時に開けない。
- QOwnNotes: 最初に何か(MDは不可)開かないと起動しない。
Markdownify: ライブラリが合わないようで、起動しない。- Znote: Joplinで作ったMDの画像が表示できない。
- Apostrophe: Joplinで作ったMDの画像が表示できない。
- 機能が貧弱
- Flatpakなので、インストール・起動・アンインストールが面倒
StackEditPro: サイトが開けなかった。