Posts tagged ‘leave Joplin’

最初、「首までどっぷり」ってのは"Knee deep in the hoopla."みたいな感じかと思って居たのだが、調べたら ちょっとニュアンスが違うようだ。そのくらい、(全然やりたくなかったのに)Zimに はまってしまっている。

 

(他のノートアプリ同様)Zimも駄目なところが多く、ガッと捨てようと思ったのだが、探しても他にいいものは全くなかった。それで考えて、細かい問題は いろいろあるものの致命的なもの(例: 遅い、メモリの浪費)は ないので、慣れたり発見したり手を加えたりして使っている。前回も少し書いているが、今までに以下のようなことをした(詳細は追って追加したい ← と書いた割には ほとんど書いた気がする)。

  • JoplinからZimへのインポート関連
    • ノート・ノートブック名の変換、正式な(または本来の)ノート・ノートブック名の保存。
      • Zimはノート・ノートブック名に使えない文字が多いので、それらを削除したり別の文字に置換するようにした。
      • 正式なノート・ノートブック名を保存するため、追加ノート情報ファイルに記録するようにした。今のところ、以下を格納している。
        • 正式なノート名
        • 正式なノートブック名
        • JoplinのノートID: Zimで更新したノートをJoplinに戻す(反映させる)時に使う。
    • 書式の修正
      • pandocでZimの形式に変換する時に仕様の差があるので、その対処をした。
        • 具体的には、水平線("-"3個以上)をZim("-"20個)に合わせている。
      • また、ノートにZim用のヘッダ(pandocは付けない)を追加している。
        • そこにノートの作成日時を入れるため、Joplinから取っている。
    • Zimのノートブックの作成
      • Joplinのノートブック名と同じディレクトリを作るようにした。
      • その時、Zimのノートブックファイル(notebook.zim)も作るようにした。
    • インポートを手軽に。
      • Joplinのノートを外部編集を開始する操作で、ノートをZimにインポートできるようにした。
      • インポートが終わったら通知が表示されるので、外部編集を終了する。
  • ZimからJoplinへのエクスポート関連
    • ノート・ノートブック名を戻す。
      • インポート時に保存しておいた正式なノート・ノートブック名に戻す。
    • 書式の修正
      • ZimからMDに変換する時に誤変換のようなものがあるので、その対処をした。
        • Zimから出す時に書式が欠けるため、出す前後に処理を入れないと うまく行かない。
      • 例えば以下である。
        • "// 文字 //": "//"が"*"になってしまうので、"/"をエスケープする。
        • (行頭)"--- 文字 ---" : 水平線ではないので"*** 文字 ***"に変換する。
          • 手でJoplinに入れても問題ないので、Zimが"---"を誤変換してしまうようだ。
        • 行頭のn個のTAB + 文字 (インデント): MDに同様な書式はないので、引用にする。 → n個の">" + 空白 + 文字
          • ただし、TABで始まるものにはインデントされたコードブロックや箇条書き、チェックボックスもあるが、それらは変換しない。
        • 行頭の空白 (+ 文字):  上と同様に引用にする。 → ">" + 空白 (+ 文字)
          • 空白の数で">"の数を増やすと良さそうだが、どうやって数を決めるべきか分からない。
        • チェックボックス: ""と""になるので、MDの"[ ]"と"[X]"に戻す。
    • リソース(画像など)ディレクトリの変換
      • ZimとJoplinで同じファイルを指していても、ディレクトリの表現や階層が異なるので変換する。
    • Zimで作った新規ノートへの対応
      • 正式なノートブック名(あれば)でJoplinのノートブックを作る。
      • 正式なノート名(あれば)でJoplinのノートを作る。
      • Joplinにインポートして割り当てられたノートIDを、追加ノート情報ファイルに保存する。
      • TODO
        • 正式なノート・ノートブック名を手軽に(追加ノート情報ファイルに)設定する手段(例: 入力ダイアログを出す)が必要だが、まだない。
        • Zimで追加したリソース(画像など)をJoplinに取り込み、ノート中のディレクトリを変換する処理が必要。
          • 今は、Zimで普通に追加した画像はJoplinでは見えない。
    • エクスポート(更新・追加)を手軽に。
      • 自動または手動(ツールバーのボタン: 後述)でできるようにした。
      • 自動の場合、約30秒間隔で、ノート(のファイル)の更新時刻が前回のチェック開始時刻から現在時刻の約90秒前までの間のものを探し、それをJoplinにエクスポートするようにしている。
        • 約90秒というのは「ノートを書き終わったかも?」と判定する時間である。
        • ファイル検索が頻繁で効率が悪くて気に入らないが、とりあえずは使えている。
          • 効率を良くするにはinotifywaitなどを使えばいいのだが、変更後に一定時間(今回は90秒)経過するまで保留するのが難しいので、保留している。
      • 自動でエクスポートされるまで待てない場合は、手動でもできるようにした。
  • UIの改良
    • GTKのCSDのようなものを止める。
      • Zim(実際にはGTKの流儀のようで、他にもいろいろなアプリがそうしているが、なんでそんな勝手なことをするのかと思う)がタイトルバーを勝手なUIにしていて、通常あるメニューのボタン(▼)が出なくなるため、僕の場合は最小化(_)と×(ウインドウを閉じる)が隣になってしまって間違って押しやすいので、ソースを改造してウインドウマネージャが付ける普通のボタンに戻した
        • 今のところは、GTKやZimがタイトルバーを変更しないようにしているだけのため、Zimが追加しているボタン(前・後のノートへ移動, ホーム, 編集のon/off, 検索)は出ないが、最初から余計だと認識していて使わないので問題はない。
          • Chromeもこういう感じになったが、今のディスプレイは広いんだからタイトルバーの面積くらいケチらなくてもいいのに、どうしてこういう発想になるのか理解できない。
        • TODO
          • 前・後のノートのボタンは あれば便利な気がするので、あとで付けたい。
    • 正式なノート・ノートブック名の表示
      • ソースを改造して、Zimのファイル名ベースのノート名などの代わりに、上述の保存しておいた正式なノート・ノートブック名を表示するようにした。
        • ごく当たり前のことなので見ても何がいいか分からないとは思うが、例えば、Zimでは使えない"#"や"/"が(代用文字でなく)出ているし、"_"は空白に変換されずに出る。
        • なぜか、図では本来は"-)"の")"がなくなっているが、短縮処理のためだろう。
      • 処理概要: ノートを読み込む時に追加ノート情報ファイルがあればそれを読み、キーと値をノート(Zimでは「ページ」)のメタデータ(Page._parsetree.meta)に追加し、タイトルバーなどのUI部品でページ名などを表示する時に それらがあれば使う。
      • 今のところ、以下で出る。
        • タイトルバー: ノートとノートブック名
        • タブのようなボタン(パスバー(下図の中段), ブックマークバー(下図の下段)): ノート名
      • TODO
        • 左サイドバーのpage index(ファイルマネージャーのようなもの)は作りが違っていて変更すべき箇所が分からないので、まだである。
    • バージョン表示に追加
      • 改造版であることが分かるように、バージョン表示ダイアログに出るようにした。 (: 中央の".B-3"と最下行)
  • 簡単な機能追加とツールバーへの登録
    • 以下の処理をZimのCustom toolとして追加し、Zimのツールバーボタンに登録して手軽に実行できるようにした。
      • 現在のノートのJoplinへのエクスポート(更新・追加) (: 中段左寄りの青い"J"のボタン)
        • 処理内容は上述のとおり。
      • クリップボードをテキストとしてペースト(LibreOffice Calc対応) (: 中段左寄りのペーストのボタン)
        • 前回も書いたが、ZimかLibreOfficeのクリップボードの扱いが変なのか、LibreOffice Calcからテキストをペーストすると画像になってしまうので、xsel(その後、xclip -quietのほうがハングしにくいことが分かった: 11/22 5:26)コマンドでPRIMARYバッファのテキストを取得して、ノートに挿入できるようにした。
          • なぜかCLIPBOARDバッファを取ろうとするとハングするが、PRIMARYで問題はなさそうだ。
            • 調べると、CLIPBOARDはPRIMARYなどと処理が違うようなので、その関係だろうか。
          • (12/1 12:06) その後、LibreOffice CalcからだとCLIPBOARDでないとテキストが取れないようなので、結局、xselを使い、ハング回避のためにタイムアウトさせることにした。
          • 以下にコマンド例を示す。

sh -c 'to_ms=120; to_s=`echo "scale= 3; $to_ms / 1000" | bc -l `; xsel -o -b -t $to_ms < /dev/null & xs_pid=$!; sleep $to_s; kill -TERM $xs_pid'

        • これはボタン以外にショートカット: Ctrl+Shift+Vに割り当てている。
        • TODO
          • なぜか、Zimでコピーしたテキストはペーストできない。Zimとxselが競合しているのかと思うが、今のところは通常のペーストと使い分けが必要で、ちょっと気に入らない。
      • 選択範囲をインターネット(Google)で検索 (: 中段左寄りのGoogleのボタン)
        • 選択したテキストをGoogle検索のURLに追加して、デフォルトブラウザに渡して検索できるようにした。
        • これができるエディタは ほとんどない(知らないだけかも)が、是非欲しかった機能なので付けた。
        • TODO
          • セキュリティホールになりそうな気がするが、個人用なので注意すれば良さそうだ。

 

随分手間が掛かっている(これでも全然終わりでない・・・)が、ソースなどを見れば結構分かり、ツールバーのように簡単にできて効果が大きいものも多いので、ストレスは少ない。そして、今まで仕方なく使っていたMDと違って、Linuxのコマンドやプログラム(`とか~とか-とか*とか#など、MDで特別な意味を持つ記号がバンバン出て来る)を書くのに何も気を遣わなくていい、いや それ以上に、本来の記述とノート(ファイル)が全く同じに書けることが重要・必須だ。まさに、「まだMDで消耗してるの?」だ。

ただ、Joplinに送る時(見る時)にMDに変換されるので、あまりいろいろな記号や書式を入れると、うまく変換されるか心配には なる。そして、運が悪いとバグが見付かって、余計な作業が増えるw

なお、QOwnNotesかZettler(かZimにインポートする時)に書式がおかしくなったノートが結構あって、見付けた時に手で直している。まあ、そんなの可愛いもので、見れば分かるので問題ない。

 

PS. 自分の整理のため、本システムで今分かっている残件・TODO・直したい・やりたいことを以下に挙げる。 (19:54)

  • Zimの不具合・変な点など
    • 描画の更新がおかしいことがある問題への対処。
      • 大きいノートを変更すると、その行が上下に重複して表示されることがある。
      • これを一番先に直したいが、見当が付かない。
      • 直せないなら、デフォルトのフォント(問題が起こらないようだ)の行間や太さを変えて、すっきり見えるようにしたい。 ← デフォルトでも問題が起こったので、駄目。 (11/21 12:35)
    • 行の(ソフト)ラップがない(ように振る舞う場合がある)。
      • これも早く直したいが・・・
      • せめてHomeキーで行頭に戻れるようにしたい。
    • ノートの先頭の見出しがMDに出ない場合がある。
      • 先頭に空行以外があれば、その次が見出しになるようだ。
    • [済] 書式に余計なものがある。 → ソース(pageview/__init__.py)を変更しても反映されないので調べたら、Zimのスタイル設定ファイル(.config/Zim/style.conf)で変更できることが分かって、自分の好みにできた。 (11/22 18:01)
      • 見出しのH1に下線が付き、H3は斜体になる。: 文字サイズだけでいい。
      • 下線は色付きになってしまう。: 下線だけでいい。
  • 機能追加・修正
    • Zimの書式指定タグ関連 (11/24 16:10)
      • 書式指定のタグ(後述の"@"で始まるタグ(ページタグ)とは異なる)に、Linuxやプログラムに良く出て来るもの(例: "__XXX__"(下線), "// YYY //"(斜体)※)があり、インポートしたり貼り付けたりしたあとにコードブロックにし忘れると、次回開いた時に下線(例の場合、"XXX")や斜体(例の場合、" YYY ")になってしまって嫌なので、それらを滅多に出て来ない文字列(例の場合、"⟪_XXX_⟫", "⟪/ YYY /⟫")に変更した。
        • ※本文の「"// 文字 //": "//"が"*"になってしまう」はこれが原因だった。 WYSIWYGなので、中身までは気付かなかった。
        • 似たようなものは、他に"** ZZZ **"(太字)や"~~ WWW ~~"(取り消し線)もあるが、同様に変更可能である。
        • この関係で、インポート時に本来のタグを変更したものに変換するようにした。
      • ページタグも同様にしたかったが、書式が異なるうえに処理が分散していて完全に変更するのが難しいので、ひとまず無効にした。
    •  エクスポート関連
      •  Zimで追加した画像のJoplin向けの処理
        • 本文に書いたとおり。
      • コードブロックのインデントをMDに反映させる。
        • 今はコードブロックが引用になってしまう。
      • 未更新の全ノートを手動で更新(エクスポート)できるようにしたい。
      • Joplinの新規ノートブックを階層も含めてちゃんと作成する。
    • インポート関連
      • インポート時の誤変換などの修正・対処
        • [外部] 空行を挟まない改行が繋がることがある。: pandocの問題? → Zimで書いた場合は繋がらないので、以前のエディタ(Zettlr?)の仕業だろう。 (11/22 18:01)
        • [正常] "@"+文字がZimのタグ(ページタグ)になることがある。 ← Zimの仕様だった。ただ、こういうところがMDみたいになっているのが気に入らない。が、シンプルなテキストファイルなので こうするしかないのも分かる。 (11/22 18:01)
          • とはいえ、ノートにはヘッダ部があるので、そこにタグを書けばいいのにとも思う。そうすれば、タグに空白や記号も含められる。 (11/22 18:27)
          • 逆に、Zimのタグを付ける方法が不明。。。 ← "@"+文字で付ける。(11/22 18:01)
          • → 結局、これの良くない点は、良く使う@をタグのマークとして使っていることだった。上述のように他にもそういうことがあったのでマークを変更したが、このページタグの変更は難しいので、ひとまず無効にして、意図せぬタグができないようにた。僕はタグを使わないので、当面は問題ない。 (11/24 16:10)
        • [外部] IPv6アドレスの一部が記号になる。 ← 再現しないので、以前のエディタの仕業だろう。 (11/22 18:01)
          • 例: ":b:"が"🅱️"(色は黒)になる。
          • 以前のエディタがおかしくした?
      • Joplinでのノートの変更をZimに反映できるようにする。
        • スマフォで更新することもあるかも知れないので。
        • → ひとまず、エクスポート時にJoplinとZimの変更が競合したら、Joplinのノートのバックアップを作り、Zimのノートを上書きし、メッセージを出すようにした。 (11/22 18:01)
          • また、インポート時(Joplinから操作)も同様にした(Zimのバックアップを作る)。
      • ノート中のscheme(例: http://)に見える記述やリンク(パスがリンクになる)の無効化または正常化? → ノートを読んでからフォーマットするため、指定箇所の無効化は無理そう(もちろん、その部分の書式をコードにすれば可能だし、全部を無効にすることはできそうだ)。 (11/22 18:01)
        • Joplinからインポートした時に変なノートができるのを防ぎたい。
        • また、変なリンクがあると、Zim自身でノートをペーストできない場合がある。
        • これに関連して、不正な"file:"のURLがあるとfs.pyがAssertionErrorになってエクスポートできない問題があったので、assertしないように修正した。 (11/22 18:01)
    • UI
      • 正式なノート名などの表示の追加(例: page index)
      • 正式なノート名などの入力UIの追加
      • ツールバーの箇条書き, 番号付きリスト, リンクなどの書式設定ボタン(: "x2"の右の箇条書きとその右の"H"の右のボタン)で出るメニューの要素を独立させて横に並べる。
        • プルダウンメニューは面倒なので。
        • ただ、多過ぎると邪魔になる。
      • カーソルの点滅を止める。
      • CSDを止めてなくなった前・後ページボタンを付ける。
    • その他
      • Zimでコピーしたテキストも、追加したテキストのペースト機能(本文に記述)でできるようにしたい。
      • 起動するたびに/tmpにログディレクトリ(zim-xxxxx)を作らないようにする。
      • アイコンが超ダサい。これだけで随分損しているのでは?
        • でも、そんなことは僕にはどうでもいいので放置w
  •  1
  •  0
Keys: , , , , ,

Zim+Joplinで自分用ノート管理システムを作ろうとしたが、挫折しそうだ。Zimの完成度が低くて、先行きに十抹くらいの不安を感じた。いろいろ苦労して、Zimで変更・作成したノートを自動でJoplinに更新・取り込みできるようにしたのだが、Zimの不可解な動作や問題が次々と現れて これ以上対処するのが嫌になり、ガッとひっくり返したくなった。

単体でちょっと使うのには良かったが、Joplinと連携させて使い込むと、機能不足、不具合、変な仕様がバラバラ出て来て、そのカバー("workaround")が大変だ。ただ、それなりに まともな考えで ちゃんと作ろうとしているのは感じられるし、「普段」の使用では概ね快適に使えているので、今までの他のソフト(例: Evernote, Joplin, QOwnNotes, Zittlr)と違って腹は立たず、「クソだ」とは言わない。単に未完成なだけ(まあ、「ちょっと実力が足りないね」みたいな)だ。ただ、これが完成するとは到底思えないのが痛い。。。

参考までに、僕にはキツい問題を挙げる。

  • ノート名に使えない文字が多い。
    • 仕様の問題: ファイル名をノート名にしているため。
      • そうは言っても、Linuxで普通に使える文字でも駄目なものが多い。
    • 多くの記号(例: ()[] #)と空白が使えない。
    • ノート名先頭の文字は更に制限が厳しく、 おそらくすべての記号が使えない。
      • 仮に全角文字や非英語の文字にしても、記号のカテゴリは駄目。
    • 文字のカテゴリで余計なチェックをしているのか。
      • → 確かにチェック・制限していた。: zim/notebook/page.py の _pagename_invalid_char_re で行っている。 (11/16 10:21)
        • なぜ、(ASCIIのでない)Unicodeの記号も駄目にするのだろう???
    • → 仕方ないので、記号に見える普通の文字で代用してみたが(例: 下図)、本質的でない無駄な努力(例: ガラケー的なw)に思える・・・
      • Zimでノート名に使えない文字(() 𛰙𛰚, 空白 )を代替してみたが・・・

  • 表示の更新がおかしいことがある。
    • テキストの入力後に行が重複して表示されることが多く、迷子になってしまう。
      • ページを上下させると直る。
    • → その後、フォントが関係していることが分かった。デフォルトのフォントだと問題は起こらず、僕の愛用している源真ゴシックPだと起こることが分かった。 (11/16 10:02)
      • 源真は行間が広目なので、それが関係しているのか。
      • ただ、デフォルト(なぜかTakao Pゴシックのようだ)は行間以外に色が濃くて(線が太い?)すっきりしない・読みにくいのが嫌なので、問題が起こっても源真で頑張りたい。
      • また、Noto Sans CJK JPは漢字が等幅なので嫌だ。
  • 謎の動作・仕様がある。
    • ノートの先頭に書いたタイトル(見出し)がエクスポートされないことがある。
      • → とりあえず、そうなった時は先頭に何か(例: "."だけの行)を書くことで、しのぐことにした。 (11/16 12:15)
    • ノートを取り込むと、実在しない変な名前のノートができてしまうことがある。
      • ノート中に"file:"があると、そうなるようだ。 → URLに見えるもの、Joplinのノート間リンクが駄目な感じ。
        • 名前はそのURLになっている。
        • そんなことされたら邪魔臭い。
      • その場合、エクスポート(インポートも?)がエラーになることがある。
      • → 目障りなので、Joplinから取り込む時に削除するようにした。それが分かるように、その前の行にその旨を入れるようにした。と書いたが、本当に動いているか あやふやだw そうしようと思っただけだったかも知れない。まあ、やればできる。 (11/16 18:45)
    • エクスポートがすごく遅いことがある。
      • エクスポート時にもトップ以下のファイルをスキャンしているため?
  • 結構落ちる。
  • ノートの保存ができないことがある。
    • ノートを外部で変更すると弱い?
    • → どうやら、同じノートをZimと外部で同時に変更すると「負ける」ようだ。これは仕方ない。 (11/16 10:15)
      • Zimから自動でJoplinに追加する時、Joplinで新規だった場合には あとで更新する時のためにJoplinのIDを入れるのだが、それが良くないようだ。難しい。
        • → 今後は、JoplinのIDは別ファイルに入れることにした。そうすれば、あとで追加ノート情報も入れられる(今は未定だが、例えば「本当のノート名」が入れられる)。 (11/16 12:18)
  • 行の(ソフト)ラップがないように振る舞う場合がある。
    • 長い行でカーソルが編集ペーンの右端近くに行ってしまい、Homeキーで行頭に戻れない。マウスでスクロールバーを動かすしかない。
      • スクロールバーは出さなくていいんだが・・・
  • LibreOffice Calcからの文字のペーストが画像になってしまう。
    • 「テキストとしてペースト」(例: Ctrl+Shift+V)の機能がない。。。
    • → 調べたら、(Linuxで)他にも起こっている人が居た(ペースト先のアプリはZimとは限らない)。ただ、例によって「LibreOfficeの問題じゃない。あっち(例: アプリ側)で聞け」や「クリップボードマネージャを止めろ」などで終わって原因が分からないので、本質的・一般的な解決策はない。 (11/16 12:05)
      • そりゃあ、受け側アプリのクリップボードの中の値の選び方が悪いのは確かだが、そもそもスプレッドシートの「値」をコピーした時に、画像を(も)クリップボードに入れるってのは あきらかに非常識だと思うのだが・・・ いったい どういうメリットがあると考えたのだろう? せめて設定にすればいいのに。
    • → コマンド: xclip -selection clipboard -o でクリップボードのテキストが取れるので、それをZimのカスタムツールに入れた。また、ショートカットが割り当てられるので、Ctrl+Shift+Vにして一般的な操作でテキストがペーストできるようになった。 (11/17 9:38)
      • -selectionはprimaryでテキストが取れこともあるが、secondaryは駄目。 → Zimはsecondaryを取っている?
      • また、なぜかZimでコピーしたテキストは取れず、ハングすることもある。 → タイムアウトを付け、clipboard, primary, secondaryの順に試すようにした。: Zimの謎は多い。
        • ハングするのはxclipを普通に動かしていたためだった。オプション-quietを指定すれば良い。
        • が、それでもclipboardではハングし、どうしても解決できない。Zim自身と競合しているのだろうか。
        • → 結局、 xsel -n -o -p (primaryを取得, フォアグラウンドで動かす)だけにした。 (11/17 11:07)
  • UIが整理されていない。
    • メニューは どこに何があるか迷う。
    • ブックマークが多くなると全部が見えなくなる。
    • CSDらしいのが嫌(例: ウインドウのタイトルバーにアプリのボタンがある)。
  • 起動するたびに/tmpにログディレクトリ(zim-xxxxx)を作る。
    • これは ちょっと違うだろ・・・

 

他に、僕のシステム構成の問題として、画像(リソース・添付ファイル)の処理の難しさがある。Zimで追加した画像をJoplinに入れるのが面倒だ。ディレクトリが異なるので、コピーだけでなく、ノート中のディレクトリ名も変える必要がある。

→ とりあえずは、Zettlrの時と同様に、まず画像をJoplinの作業用のノートに貼り付けてJoplinに取り込み、そのノートをZimに戻し、その画像(のタグ)を本来のノートに貼ることでしのいでいる。面倒だが、頻繁でないので それほど苦ではない(プログラムを作るよりは楽だw)。 (11/16 12:27)

 

そして再び振り出しに戻って、次の候補探しを始めた。今度は、やっぱり、前回諦めたWPみたいなwebでできるものがいい気がしている。それなら、最後に書いた画像の問題は起こらないはずだ。が、セキュリティの問題はある。

その後、他のエディタやWPに近そうなWikiのソフトを検討・試してみたが、僕に丁度いいものが全くなく、なかなか意外な結果となった。以下を検討・試した。

  • 検討で却下したもの。
    • OpenNote(Wikiではない), MyTetra(同), TiddlyWiki, TagSpaces, BookStack(前回も却下 → その後試したが・・・), Wiki.js, PmWiki
  • 試したもの。
    • RedNotebook(Wikiではない)
      • MDみたいな入力でプレビュー型
      • 機能が貧弱で話にならない。
      • Zimのほうがずっといい。
    • MediaWiki
      • デモを使った感じでは一番良かったが、WikiPediaのような公開Wikiがターゲットのため、個人のノート用には いろいろ使いにくい。
        • 例: 画像を入れると、「それはあなたの?」などと聞かれる。
        • カスタマイズすればいいのかも知れないが。
      • デザインがイマイチ。
      • 引用がない。: WikiPediaの特徴?
      • 例によって日本語がひどい。
        • 英語にしたつもりが日本語になっていた・・・
    • MoinMoin
      • 著名なオープンソースプロジェクトに採用されているらしいが、良く使ってると思う。10年以上前の感覚。
      • 設定が分かりにくく、不親切。
        • ファイルがいくつもあるが、検索しないと説明がない。
        • サイトも不親切。
        • 簡単にWYSIWYGエディタにできない。 → ガイドを参考にして ようやくできた。
      • エディタがすごく使いにくい。
        • ショートカットがない。
          • → ブラウザなので、太字にするつもりでCtrl+Bを押すとブックマークになってしまう・・・ 「うむ。」
        • タブでインデントしない。(上と同じ)
        • ボタンのアイコンがボケている。
    • XWiki
      • JAVAでメモリを食うので不可。
      • エディタは まともだが、書式の指定が ちょっと使いにくい。
    • Foswiki
      • エディタがすごく使いにくい(MoinMoinと同じ)。
      • 登録時のキャプチャが全然読めなかった。5回くらい繰り返した。
    • WackoWiki
      • WebサーバがApacheでないせいか、うまく動かなかった。
    • DokuWiki
      • 試したうちでは一番好印象(使い勝手がWPに近い)だったが、エディタに問題があって却下した。
      • デフォルトのエディタは使いにくいが、プラグインのCKGEditorを入れれば使いやすくなるものの、うまく合っていない。
        • 画像(説明では直ったと書いてあるようだが・・・)や引用ブロックが ちゃんと表示できない。
          • 画像はデータが表示され、引用は前後にタグが出てしまう。
      • プラグインがwebで入れられて楽。
      • インストールなどの説明も分かりやすかった。
      • Webサーバはlighttpdやnginxが使える。
      • ただ、新しいページの作り方が不明。Wikiのせいか?

 

我ながら要求が厳しすぎるようだ。まあ、ノートを書くソフト(特にエディタ)は いつも使うので、仕方ない面はあるが・・・

結局、今のところは、Zimで まさに「頑張る」※かWPを使うかの二択となった。

※骨を埋める覚悟ならソースに手を入れるが、ちょっとまだその気になれない。

(17:45)

本文を読み返して、Zimで頑張ることは あり得ないと確信した。「だめだこりゃ。次行ってみようだ。」 (19:22)

更に少し考えたら、WPはそもそもブログ用なので、使い方がノートとは合わないことに気付いた(以前検討した時にも気付いた気がする)。例えば、「更新」ボタンを押さない限り、編集内容は反映されない。しかし、ノート用エディタは書いて放置すれば反映される(アプリによっては、履歴が保存されるから、それで全然問題ない)。その気軽さが重要で、ノートにはワープロが使えないと感じるのも、そういうことである。

てな訳で何も残らん・・・

せいぜい、DokuWikiやMediaWikiを頑張って改造する? いや、それらにしたって「保存」ボタンはある。 (21:06)

その後、再度Wikiなどを試したが、まあ全滅だった。

  • BookStack: 綺麗ではあるが、実用性がない。サポートする気が感じられない(「こっちでは再現しない」的な回答ばかり)。
    • 大きなノート(約4000行)の保存に失敗する(既知の未解決の問題)。
      • いろいろなタイムアウトを伸ばしたが、駄目だった。
      • HTML関係の処理が悪いのではないかと思う。
    • 大きなノート(約3000行)の変更(編集)が遅い(Zittlrと同様)。: 「ブラウザ(≒ JS)もElectronも似たようなもの」ってこと。
  • MediaWiki: 詰めが甘い。セキュリティがいい加減。サポートも いい加減(問題を放置)。やっぱり、Wikiはノートには使いにくい。
    • Visualエディタでノートを読み込む動作がおかしい(既知の未解決の問題)。エラーが出たり出なかったり・・・
      • WikiとHTMLの変換処理("Parsoid"とかいうモジュールらしい)の出来が悪いのではないかと思う。
    • 設定ファイル(DBのパスワードなどが平文で書いてある)がwebサーバのドキュメントルートにあるって、とんでもない落とし穴だよ。。。
      • 「Webサーバを適切に設定しろ」と書いてあるだろうし、それを忘れて流出して実害がないとしても、作った人の意識の低さが知れる。
  • DokuWiki: 出来が悪く、使い物にならない。終わったソフト?
    • Visualエディタにノートをペーストして保存して開くと、フォーマットが崩れる。
      • HTMLやMDをインポートしても同様。
      • 大きめのノートで起こりやすいが、小さくても起こると思う。
    • 入れると何もかも動かなくなる(表示が真っ白になる)プラグインがある。
      • そういう情報は何も書いてないのに。
    • プラグインを入れても、どこにもその操作(ボタン)が出て来ないものが多い・・・

あと、BookStackで実感したが、WPもブラウザ(JS)なので、やっぱり大きなノートの変更(編集)は遅くなるだろうから、いくら使い勝手が良くてもノート用には使えない。

そうすると、結局Zim(+Joplin)しか残らないが、「何とかすべきこと」が多過ぎる! でも、さし当たっては(曲がりなりにもw、そして、僕には一番ストレスなく)Zimは使えるので、様子を見ながら考えたい。 (11/15 19:00)

  •  1
  •  0
Keys: , , , , , , ,

乗り換えたばかりのZettlrは使い込むと駄目だった。Electronのため、大きいノートの編集が遅くなるのが一番イライラする(日本語なんて、入力に追いつかなくて ひどい)。※あと、余計な補完だの書式を勝手に変える(勝手に破壊して、なかなか直せないことがある)とかも、やっぱりイライラする。

※JavaScript≒ブラウザでテキスト・画像その他を処理しているので、どうしても無理があるのではないか? 最新のマシンなら問題ないのかも知れないが、元々効率が悪いものだけど すごい環境で動かせばいいという思想なのだろうか? まあ、Intelには馴染みが良さそうだw

そもそもMDが嫌いだ。書いている途中で いちいち書式を思い出したり調べたり、(エディタのせいでプレビューがおかしくて)調整するなどと、本質でないことに手間が掛かって書くことに集中できないし、見た目も煩雑だ。※ 今は流行っているが、僕にすれば全く奇妙な現象で、そのうち もっといいのが出て来て廃れるのではと思う。

※文章に書式指定が混ざっていて、良く普通に読めるものだ。MD愛好家・信者は そういうのが透明にでも見えるものなのか。至るところに混在していても「ないもの」にできる? 全く器用だ。

そこで浮上したのがZimである。前にも書いたように、これはワープロほど高機能ではなく、"Desktop Wiki"を自称しているように とてもシンプルなものだが※、僕がノートを書くには必要充分で、まさに「こういうのでいいんだよ」だ。あと、(ElectronのJoplinに比べて)超省メモリ(約1/3-1/10!)なのも 好感が持てる。もちろん高速だ。

Zim:  「こういうのでいいんだよ」って感じ^^

※ツボは押さえており、ちゃんと上/下付き文字もできるw もちろん、画像も貼り込める。

気になるのは、作者が多忙(あるいは疲労?)で いつ終了するか分からず、そこまで行かなくても、この先も改良される期待ができないことだ(それでも、細かい修正は続いている)。まあ、オープンソースなので、終了する時はソースを引き取って自分で面倒見ることも可能だと考えて、使ってみることにした。

 

ただ、僕の使い方(スマフォからもアクセスしたい)としては、Zimはノートの共有・同期の機能、あるいは それを補助するような機能を持っていないのが困る。※

※実際にはwebサーバの機能が内蔵されていて確かに動くが、Zimの完成度や作者の状況を見るに、このサーバをインターネットで使うにはセキュリティ面でのリスクが高過ぎるので、「持っていない」と書いた。もちろん、使いたい人は使えば良い。

いろいろ検討したが、スマフォからのアクセスに関しては、どうにも いいものがない。Dropboxなどのファイル共有でZimのノートやMDなどを共有すれば、MDエディタで見られる(MarkorはZimのノートをサポートしている)。が、残念なことに画像が表示されない。事前に画像もスマフォに同期しておけばできるが、見るかどうかも分からないノートと画像など全部を常にスマフォに同期しておくのは余りにも効率が悪いし、電池や通信データ量を浪費する。

逆に、ユーザが指示した時だけ同期するソフトだと、ノートを見たいだけなのに、まず「同期」の操作をし(て、同期を待た)なくてはならず、面倒この上ない。そんなの忘れて古い情報を見てしまうか、面倒で使わなくなってしまうだろう。

もう一つ、ノートをHTMLに変換してwebサーバに置けば、スマフォからのアクセスはとても容易になる。上に書いたような同期は不要で、必要な情報だけがダウンロードされるし、特別なアプリも要らない。が、いろいろなノートを全部平文で格納してwebで公開(もちろん認証する)するのは多くのリスクがあって、かなりの勇気と慎重さが要る。

そこで出て来る(生き延びているw)のがJoplinだ。Joplinも実際にはノート全部をスマフォにダウンロードしておくようだが、画像はノートを開く時にダウンロードするので効率が良い。また、不具合のおかげなのだろうが、設定していてもバックグラウンドで同期しないので、アプリを開かない限り電池も通信量も消費しない。その代わり、アプリを開いた時に同期が終わるのを待たないと(そのあとで再度同期が要る場合が多い)、ノートが最新にならない(同じアプリなので、面倒さは少ない)。

という訳で、最新のシステム概要は以下のようになる。

  • PC
    • 僕: Zimでノートを作成・変更、表示する。
      • 当初はJoplinのノートを変換して取り込むことが多いので、そのためのプログラムを作成する。
    • ノート変換・更新プログラム: (スマフォで見たい)ノートが作成・更新されたらMDに変換し、Joplinに入れる(ノートが既にあったら更新する)。
      • 自動で行うようにする予定。
    • Joplin: サーバにノートを同期(アップロード)する。
  • サーバ: ノートを格納する。
  • スマフォ
    • Joplin: サーバからノートを同期(ダウンロード)する。
    • 僕: Joplinでノートを表示する。
      • ノートの更新はせず(Joplinが重いので諦めている)、記録は別のシステムを使う。

そして今は、いくつかのノートをZimに移して機能や操作性などを確認しつつ(ダメ出し+習熟)、ZimとJoplin間のノート変換・取り込み/更新プログラムを作っている。

システムを作る際にZimのいい点は、グラフィカルに(WYSIWYGで)書式設定できるにも関わらず、ノートのファイルが非常に単純なテキスト形式(MDに近い)なので※、テキスト処理ツールで自由に処理できることだ。

※紛らわしいが、ZimのファイルフォーマットはZIMというファイルフォーマットとは異なる。なので、前者は"Zim-wiki"などと書かれることがある。

また、意外なことにpandoc(テキストフォーマット変換プログラム)がZim形式での出力("zimwiki")に対応している(JoplinのMDを入力するには"gfm"を指定するのがいいようだ)※ので、MDからの変換が可能だ。また、Zim自体でMDへのエクスポートが可能なので※、pandocと併用すれば、一応はMDとの相互変換が可能だ(今までのところ、MD-Zimの変換・逆変換をしても書式は崩れていない)。

※なぜか、pandocはZim形式での入力はできず、ZimはMDのインポートができない。

 

今まで同様、このシステムも、いつ気が変わって「はい終わり」になるか分からないが、まあ、苦労して作ったからと言って特に固執せず、その時々で良い・使えるものが できれば・見つかれば良いスタンスだ。

永遠のプロト・PoCか、継続的スクラップアンドビルドか、あるいはシステムの焼畑農業か星一徹式開発か?w

 

PS. Zimを使っていたら、早速思わぬ欠点に気付いた。引用の書式がないのだ。あと、段落のちゃんとした(綺麗な)インデントもない。※ 良く使うものだが、ないものは仕方ない。作者なりの考えなのだろう。

※ちゃんとしたインデントはあった。MDにエクスポートする時になくなってしまったようだ。そうだ、EvernoteからJoplinに移行する時に、MDにはそういう概念がなくて困ったのを思い出した。その時は">"を使った。

代わりに、例えば、引用部をコードブロック(verbatim)にするとか、斜体にするとか、上下を目立つマーク(例: "+++")で挟むとか、MDのコードブロックの記号で挟む("```"などは そのままMDに行く)などの代替ができる。他には、単に段落をインデントさせるのもいいかも知れない。

作者としてはverbatimを使うことを想定したと思う。それは間違っていないのだが、そうすると引用部に書式が付けられなくなくなってしまうのが、不満なのだ。まったく、「シンプルなのでいい」と言っていた舌の根が乾かないうちにw

それから、インデントは、まあ、箇条書きで代替すればできるし、現状でも「綺麗でない」インデントは可能だ。

でも、何となく気に入らないので追加したい気もするが、やり過ぎだろう。 (11/9 19:16)

本体を改造するのはハードで やりたくないので、別件で見付かった余計な変換(例: "//...//"が"*...*"になる)を吸収するのと一緒に、MDへのエクスポート前にノートを変換して何とかした。

引用部はインデントすることにすると、ZimはインデントをTABで表現しているが、MDにエクスポートする時に削除されてしまうので、エクスポート前に、とりあえずMDのblockquote(">")のTABの数分繰り返しにして、MDに残るようにした。 (11/10 18:55)

  •  1
  •  0
Keys: , , , , , ,

先日から使っているZettlrは安心・安定感はあるものの、それほど機能が多い訳でも、細かくカスタマイズできる訳でもない。それでも、テーマはCSSでいろいろ変えられる。Electronなので、ブラウザと同じ「開発ツール」が使えて、CSSの変更べき箇所が分かり、その場で設定を変えて試せるのが便利だ。Electronは嫌いだけど、この点は良い。

昨日は、色とフォントの組み合わせに好みのものがなかったので調整した。Frankfurtというテーマは、色はいいのだが、フォントがセリフ(日本語の「明朝」に相当)で気に入らなかったので、サンセリフ(日本語の「ゴシック」に相当)に変えた。それに気を良くして、色をデスクトップに合わせてベージュ系にし、いくつかのフォーマットのスタイルも調整した

あと、タブバーが上だとタブ数が多くなった時に見えなくなるので、縦にできないか試してみたら、難しそうではあるけど、やればできそうな感じだった(先は長そうなので、その時はそこまでで止めた)。が、もしかしたら そのうちオリジナルでできるようになるかも知れないから、余り急いで作ることもない。

あと、テーマではないが、Zettlrでノートに画像を貼り付けてもJoplinにインポートされない件は、Joplinで画像を「画像貼り付け用ノート」に貼り付けてインポートし、そこに出たタグをZettlrに貼り付けることで仮対応している。

 

同じくテーマではないけど、ZettlrはZettelkastenというノートの仕方をサポートしていて、気になっている。(→ 参照) 一言で書くと、情報を(小さくまとめて)「カード」に書いて、リンクで繋げて行くようだ。僕のやり方とは違うが、それよりは効率が良さそうな気がした。というのは、今の、カテゴリごとのノートに続けて書いて行くやり方だと、どこに何があるか分からなくなってしまうし、情報を時系列に追加していくうちに、ノート内での小さ目のまとまりの情報の位置が飛び飛びになったりして不便だからだ。

Zettelkastenは、ツールによるのだろうが、手軽に情報(カード)を繋げられて、効率的にカードが探せれば良さそうだと思った。あと、多くのカードを うまく管理できるかも気になる。そして、こういう方法ではGoogle Keepのようなポストイット型の見せ方のほうが良さそうだけど、カードが多くなったら破綻しそうだから そうでもないのかも知れない。

 

PS. 気分良くZettlrを使っていたら、思わぬ欠点が見付かった。上/下付き文字すら表示できないのだ。フォーラムでは作者らしき人が、「Zettlrが使っているエディタCodeMirrorがサポートしない限り対応しない。対応して欲しければ、自分で作ってCodeMirrorに提案しろ。」とのこと。なんか、随分石頭かつ上から目線で嫌な感じだ。いくら面倒でも その言い草はないだろう。一気に冷めた感じ。

僕は上/下付き文字は余り使わないからいいけど、これの主たるユーザーは研究者らしいのに、良く問題ないな。実は使っている人が少ない??

その後、実は、ZettlrのLaTeX拡張($で挟む。例: $m^2$ → m2, $CO_2$ → CO2)を使えば、上付き/下付き文字が使えることが分かった。それで研究者には問題ないだろうが、一般的な問題(例: LaTeXにないMDの機能?, 互換性※)はないのか? そして、作者は なぜ、上記フォーラムでの質問に この機能を紹介しなかったのか? (11/7 7:27)

※JoplinはGFMとLaTeX拡張をサポートしているので、案外、互換性には問題ないのかも知れない。

また放浪しそうな気がして来た・・・

前にも書いたが、このブログのエディタ(もちろん、上付き、下付き文字ができる)でMD(でなくてもいいが)を編集できればいいのだが、できないものか。編集以外が低機能とか煩雑になるのか。ちょっと考えたい。 (11時)

PS2. PSのあとで調べたら、このブログのエディタはTinyMCEのようで有料のようだが、そのお金はWordPressが払っているのだろうか? (それで新しいエディタを押し付けている??)

それはまあいいとして、似たようなエディタにはCKEditorやTrixQuill(あとの2者はフリー)などがあることが分かった。ブラウザで動く、ちょっとした編集領域(ブログにあるようなもの)を作るのは簡単だが(→ Trix, Quill。Trixは画像に横線が入ってしまう。Quillは高機能な感じ)、それでファイルの読み込みや保存(、その他もろもろのこと)をするなど、「本物のエディタ」にするのは面倒そうだ。

そういうののスタンドアロン版があるといいのだが、なかなか手軽なものがなかった。普通のリッチテキスト(あるいはWYSIWYG)エディタはWordみたいで重いし機能があり過ぎて、「ちょっと書く感じ」でないのだ。 上に挙げたような「こういうのでいいんだよ」的なものが欲しい・・・

今は そういうのはMDエディタになるのだろうが、いくら探しても僕の気に入るものがなくて困る。 (21:02)

PS3. PS2の前に、もう少しMDまたはリッチテキストエディタ、他の方法を検討したのだが、ZettlrやJoplinよりいいものはなかった。※ 今までに試した・検討したうち(論外のQOwnNotesは含まないが、純粋に主要な機能がまともに動いたとして比べればZettlrの上になる)では、以下の順位・印象となった。

※その後、pandocでMDをZimのフォーマットに変換すれば取り込めることが分かったので、Zimの順位を上げた。将来性を除けばZittlrやJoplinより良いかも知れない。 (11/7 13:54)

  1. WordPress (ローカルサイト → 外部アクセス用サーバに送信 → スマフォから閲覧)
    • 問題: セキュリティ
    • 手間: HTMLへの変換(移行時のみ)
    • 外部での編集はしない。
    • Joplinは不要。
  2. WordPressのエディタ
    • 手間: HTMLへの変換・逆変換(毎回)
    • Joplinが要る。
  3. Zettlr
    • 問題: 機能が今ひとつ。大きいノートは遅い。
    • フォーマットも今ひとつ。
    • 作者が石頭。
  4. Joplin
    • 問題: 遅い、メモリを食う。
    • 作者が いい加減。
  5. Zim
    • 問題: 何もインポートできない。独自のファイル形式。 → その後、pandocでMD(おそらく その他も可能)を変換すれば取り込めることが分かった。 (11/7 13:54)
    • 作者はMD嫌いか無関心? 「多忙」。
    • 将来性に不安。
  6. Cherrytree
    • 問題: かなりメモリを食う。
    • センスが悪い。
    • 将来性に不安。
  7. VNote
    • 問題: かなりメモリを食う。
    • まだ不完全。
    • 信頼性に不安あり。

そして、実は1番はWordPressでなくても良く、手軽なリッチテキストエディタとファイル送信の仕組みがあればいいことに気付いたが、エディタについてはPS2に書いたように「手頃なものは なし」となった。 (20:44, 11/7 8:17 加筆・修正)

その後、BookStackという、セルフホスティングでTinyMCEでノートを編集できる情報管理システムが見付かった。まさに探していたものだと思い掛けたのだが、良く調べたら、これもZim同様に何もインポートできず、独自のファイル形式(実際にはDBに格納される)である。

フォーラムを見ると、作者は全然乗り気でない(他に重要なことがあると思っている)ようだ。まあ、思想の違いなのだろうけど、全く賛成も理解もできない。僕だったら、これは最も重要で一番最初に考えることだ。

既存システムから移行する手段がなかったら、本気で使おうと思う人はかなり限られてしまう。引越しに例えれば、新しい部屋は今までの家具が全く入らず、全部買い直すか、分解して部品で搬入して組み立て・調整し直す必要があるようなものだ。あるいは、PCだったら、新しいPCは既存のメディアが読めず、USBもNWも繋がらないので、何もコピーして入れられず、情報を1文字ずつ手で打つしかないようなものだ。馬鹿過ぎる。

魅力はあるものの、これだったらZim(ノートはテキストファイルに記述)のほうが まだマシな気がした。ただ、BookStackのサーバはセキュリティに考慮しているようなので、外からのアクセスが可能になるメリットはある。 (11/7 10:03)

  •  0
  •  0
Keys: , , , , , ,

(2021/11/5 4:10) その後いろいろあり、QOwnNotesは作者共々クソだという結論に達し※、使うどころか画面を見るだけでもイライラするのでアンインストールして、とりあえずZettlrに戻った。それで使いにくいことがあれば、何とかすることにした。

※実際に使ったりフォーラムをのぞいてみて、自分で確認されたい。

やっぱり、舌の根は永遠に乾かないようだ。(そもそも、舌の根が乾いた時は死んでいるのではないか?)

であるので、以下のほとんどは「古い情報」である。


先日は、MDの編集は(Joplinじゃなくて)Zettlrが一番いいと思ってそう書いたのだが、そのすぐあとに、「ちょっと待て」的な展開になった。

先日のリストで「最初に何か(MDは不可)開かないと起動しない。」と書いて却下したQOwnNotesは、本当にそんなにしょうもないものかと疑問に思ったのだ。それに、仮に何か開かないと起動しないとしたって、機能が良ければ使えるかも知れないとも思った。

再度試したら、以前(Evernoteを止める時だったか)試した時の設定の痕跡が残っていたために、何か開かないと起動しない状態になっていることが分かった。再設定したら普通に起動した。全く失礼だった。

しかも、再度試す きっかけとなった機能紹介ページにあるように、機能や操作性がちゃんとしていて意外にいい感じだった。それでも、「完璧」とは言えないが、他に全滅なので それだっていいと思って詳しく試した。

Evernoteを止める時に試した時は、MDを使う気がなかったのとスマフォ版がないので却下したように思うが、今は状況が違って充分候補になる。

結果は、結構な当たりだった。Zettlrに完勝している訳ではないが、良い点はZettlrより多く、悪い点はZettlrより少なかった。(→ 付録を参照)

一番いいのは、ごく当たり前の話ではあるが、sym-linkに対応していることだ。これで、前回苦労して作ったけど なんか煩雑で嫌いな、MDが変更されるたびにJoplinにコピーし続ける処理が不要になる(と思った)。

一方で、Zettlrにない欠点もある。QOwnNotesはリソース(画像)の格納先にはノートのトップディレクトリの"media"というディレクトリだけしか指定できないのだ。それ以外の指定では概ね画像は出ない(フルパスとかを書けば可能らしいが、僕の用途には向かない)。

かたや、Joplinはノートを外部編集に出す時には画像ファイルをノートのトップディレクトリの"resources"に入れるので、そのままではQOwnNotesで画像が出ない。ひどいことに どちらも強情で、設定でディレクトリを変えられるようにはなっていない。

改造した時(後述)に分かったが、QOwnNotesは意外にディレクトリ名をハードコードしていて、それが何箇所にもあった。機能などの出来がいい割には雑なところがあって、どこの人かは分からないがUS的な雰囲気を感じた。

そのせいか、フォーラムでの問い合わせに作者は「変更はできない」と平然と書いていて(参照不明)、なかなか「ん?」だった。

一方、Joplinはディレクトリ名を定数にしていたので、こういうところは抜かりないものだと感心したものの、変更できないようにする考えが理解できなかった。まあ、変えると全部のノートに影響してシステムが崩壊してしまいかねないのは分かるから、仕方ない。

それで、仕方なく「何とか」しようと思った。これはZettlrの時に比べれば簡単で(とその時は思った)、Joplinの出すノート(作業用ノート)中の画像指定タグ中の画像のディレクトリ("resources")を"media"に置換してQOwnNotesに出せばいい。

なお、画像ファイル本体はresourcesにあるので、resourcesをmediaにsym-linkしておく。

早速実装しようとして、気付いた。編集が終わったノートをJoplinに戻す時には、逆に"media"を"resources"に変換しなくてはならないが(そうしないとJoplinで画像が出ない)、それは そんなに簡単なことではない。というのは、いつQOwnNotesで編集を終えるか分からないからだ。※ Zettlrの時同様、Joplinが作業用ノートを削除したことを契機にできるが、削除されたファイルの中身は置換できないので、やっぱり、Zettlrの時同様に、ファイルの変更を監視して逐次Joplinにコピーすることになって、何も簡単ではない。そんなはずではなかったが・・・

※もちろん自分(僕)は分かるので、そういう(手動の)操作を追加すればいいが、必ず忘れるし面倒なので、そういうことは避ける方針だ。これは、PCでUSBメモリを抜く時にアンマウント操作をすべきかどうかの話*に似ている。

*不要という人も多いが、僕はOSの仕組み上、必要だと思う。例えば、OSは、メモリがいつ抜かれるか分からないではないか。それに備えて常に安全策を取っているOSがあるようだが、それは何か違うし、それだって完全に安全ではない。そういうOSでは書き込み中に抜いてもいいのだろうか?

本当に「何もせずに抜いていい」と言うなら、USBの端子に「抜かれつつある状態」を検出する仕組み、または、処理中は抜けないようにロックする仕組みが必要だ。

しかし、一晩頭を冷やして考えて、(他の案もあったものの、)QOwnNotesかJoplinを改造して、QOwnNotesが"resources"を認識するようにするか、Joplinが作業用ノートに"media"で出すようにすれば、万事丸く収まる気がした。

早速QOwnNotesを改造してみたら、うまくできた。ただ、オリジナルのQOwnNotesが更新されるたびに改造し直す必要があるので面倒だ(作者にフィードバックしてオリジナルに入れてもらえばいいが、結構なパワーが要る)。※

QOwnNotesにはスクリプティングという機能(JavaScriptらしい)があり、それを使えば改造しなくても実現できるかもしれないが、なかなかハードルが高いので保留にした。

※と書いたら、さっき更新の通知が来たwww (18:00)

更新のたびに改造するのはJoplinでも同様だが、僕はJoplinに これ以上の改良は期待しておらず、激遅とメモリの馬鹿食いが解消されない限りMDの編集には使わないので、仮に今後更新しなくても大きな問題はないと考え、Joplinも改造してみた。こっちはGUI版とコマンドライン版があって全部は確認できていないが、おそらくうまく行ったと思う。

JoplinはJavaScript(正確にはTypeScript?)で書かれているので、コンパイルが不要なのが楽だった。 (← TypeScriptからJSへのコンパイルは要る。これが長くて面倒・・・) でも、nodeの更新が必要なのに気付かず、ちょっと手こずった。

それから、Joplinにはプラグインの機能があるので、それを作れば改造しなくても実現できるのかも知れないが、QOwnNotesのスクリプティングと同様にハードルが高い。

Joplinは以下のように改造した。

  • ノートを外部編集設定した時
    • 作業用ノート中の画像指定のディレクトリの"resources"を"media"に置換する。
    • それがファイルに書き出される。
      • それがQOwnNotesに読み込まれる。
  • ノートの外部編集設定を解除した時
    • ファイルから読み込んだ作業用ノート(QOwnNotesが更新した(かも知れない)もの)中の画像指定のディレクトリの"media"を"resources"に置換する。
      • そのあとで、何事もなかったようにJoplinの内部パスに変換される。

なお、外部編集設定している間もJoplinはノートが更新されるたびに表示を更新するので、その時は画像が出なくなる。読み込まれるたびに変換すればいいのだろうが、無駄な処理だし面倒なのでやっていない。 (← その後、更新されても ちゃんと画像が出ることが分かった。それが下に書いたように正しい動作で、出なかったのはQOwnNotesの版(改造版かどうか)と合ってなかったからかも知れない。)

良く考えると、読み込まれるたびに上の変換が行われるはずなので、外部編集設定を解除するまでは、少し動作が違うのかも知れない。まあ、それほど大きな問題ではない。

あとは、改造版Joplinを「ちゃんと」使えるようにすればいいのだが、改造したものは「開発版」と出ていて設定なども本物とは別で、その直し方(書いてない・・・)を調べようとするところで力尽きたw

→ JSとTSの違い(あと、昨日はJSを直して居たが、それはTSから生成されるため、危うく消滅するところだった)、その他諸々に戸惑いながらも どうにかできた。改造版Joplin (GUI版)とオリジナル版QOwnNotesで連携できている。

CLI版は謎の動作(中身を表示すると、画像のディレクトリが外部編集と同じディレクトリになっている)だが、オリジナル版と同じなので良しとした。面倒なのでAppImageは作らず、npmやnodeで起動することにした。

npmとnodeとelectronの違いが分からないが、興味ないので放置する。

あとはQOwnNotesでの画像の追加や新規ノート作成に対応などが残って居るが、おいおい やりたい。 (これも疲れそうだ) (11/1 13:33)

 

それから、(これが最初だったのだが)上の処理の他に、QOwnNotesの動作を改善し、使いやすくするための処理をJoplin→QOwnNotesのコネクタに入れた。

  • QOwnNotesはノートのタイトルをファイル名から取るが、Joplinのノートのファイル名はIDなので、ノートを表示させないとタイトルが分からなくて不便。
    • それを解消するため、Joplinが外部編集設定した時に、作業用ノートのタイトル(Joplinでは最初の行に書かれている)を短縮してファイル名に入れるようにした。
    • 重複を防ぐため、元のIDも付けるようにした。
  • QOwnNotesは画像タグのタイトル(またはキャプション)が空だと画像を表示しない。
    • それを解消するため、Joplinが外部編集設定した時に、作業用ノート中にタイトルが空の画像タグを見付けたら、ファイル名をタイトルに入れるようにした。
    • MDでは画像のタイトルを見ることはまずないし、空のものにファイル名を付けるのに特段の問題はなさそうだ。
    • ※ノートから画像を抽出する部分のソースを見ると、タイトルが空でも問題ないはずなのだが そうでないので、別のところで落としているようだ。

 

と、最初は「簡単だ!」と思ったけど実はそうでもなかったという、いつものパターンである。(Joplinの改造を仕上げる件が残って居るものの、)今は、以下のように普通にMD(画像も)が表示でき、快適に編集できている。

QOwnNotesをJoplinの外部エディタにして、ノートを編集できるようにした。

 

最後にもう一回言いたいのは、ZettlrでもQOwnNotesでも どちらもでいいけど、Joplinのエディタを使っていた時のイライラから解放され、まさにサクサクと(それが普通なんだけど)文章が書けるようになって(Joplinも最初はそうだったはずだが、いつの間にか肥大化・肥満化・劣化してしまったようだ・・・)、うれしい限りだ。

 

付録: ZettlrとQOwnNotesの長所と短所

主に相互の比較の観点で書いた。また、基準はJoplinのエディタ(機能としては かなり良いほう)である。なお、太字は僕が重視した(「これはちょっと」、「これはいい」と思った)点である。

Zettlrの長所・短所

  • 長所
    • 他のエディタよりは ちゃんと使える。
    • 全ノートに対する検索ができる。
    • ノートの編集ペーンはプレビュー兼用だけど見やすい。
  • 短所
    • 検索で前候補に行けない。 → その後、Shift+Enterで行けることが分かった。 (11/5 5:53)
    • sym-linkで誤動作する。 → コネクタで対応した。 → 最新版(2.0.2)では直っていそうな感じ。ただし、相変わらずsym-linkのファイルは開けない。 (11/5 5:53)
    • MDのタグの動作が変・変なものに変えてしまう場合がある。例: コードブロック, 横線 → Auto completeを調整すれば大丈夫そうな感じ。 (11/5 5:53)

      • それをコピー・ペーストしても、ちゃんと働かないことがある。補完の影響?
    • ()や"などの補完が余計なことが多いうえにoffにできず、面倒。 → 設定があった(最新版で増えた?)。それ以外もAuto completeを調整すれば大丈夫かも。 (11/5 5:53)
    • 編集中に表示位置がジャンプすることがある(Joplinよりはずっと少ない)。
      • プレビューが別でないので、ジャンプは仕方ない?
      • 表示はジャンプするが、カーソル位置は動かないので まだ良い。 (11/5 5:53)
    • 選択したブロックを箇条書き・番号リストにすることができない。 → 選択して右クリック → "Insert numbered/unordered list"でできる。が、箇条書きは頭の文字が違う(そのうち直る?)。 (11/5 5:53)

      • 番号リストのリナンバーもできない。 (できるものは見たことない)
    • 書式設定の ショートカット・ボタンが少ない。
    • 細かいカスタマイズができない。 → CSSの調整である程度できる? (11/5 5:53)
    • 日時の挿入ができない。 → スニペットで代用できる。(11/5 5:53)
    • 日本語処理が今ひとつ。
    • 左サイドバーの機能が貧弱。
    • Joplinのタグに相当するものがない。
    • Joplinとタイトルの指定方法が異なる。
    • テーマの色の趣味が悪いうえに調整できない。→ CSSで調整できる。 (11/5 5:53)
      • テーマでフォントも決まってしまうので不便。

QOwnNotesの長所・短所

  • 長所
    • 他のエディタより ちゃんと使える。
    • 使用メモリ量が少ない。: Zettlrの約1/4。
      • 例: 4ノートを開いている場合、アイドル時約140MB
        • この少なさは何かの間違いではないかと思って調べ直すのだが、合っている。
    • 編集中に位置がジャンプしない。
      • ただし、プレビューペーンは頻繁にジャンプする(それでも、Joplinと違って ちゃんと戻る)が、エディタは動かない。
    • 全ノートに対する検索ができる。
    • 細かいカスタマイズが結構できる。
      • できないことも結構ある。
    • 日時の挿入ができる。
      • フォーマットが変更できる。
    • ノート一覧が縦なので、ノートが多くなっても見やすい。
    • 高速
      • ノートの切り替え(読み込み)がJoplinよりずっと速い。
    • 文字列を選択してネットで検索できる。
      • これが欲しかった!!
    • Joplinのタグに相当するものがある。
    • ノートの暗号化が可能
      • 実際に使うかは不明。
    • スクリプティング機能がある。
      • 実際に使うかは不明。
    • コネクタでノートを常時コピーしないので、Joplinでの変更が検出できる。
  • 短所
    • 画像の保存ディレクトリとタグのディレクトリが"media"で固定。対応が必要。 → Joplinを改造し、外部編集時のディレクトリを"media"にして対応した。 (11/3 13:36)
      • 本文に記載のとおり。
    • 選択したブロックを箇条書き・番号リストにすることができない。 ← スクリプトでできることが分かった。すごい。 (11/2 6:21)
      • → スクリプト"List maker"でできる。 (11/2 6:21)
      • 番号リストのリナンバーもできない。 (できるものは見たことない)
        • → スクリプト"Fix list numbers"でできる。 (11/2 6:21)
    • 書式設定のボタンが少ない。
    • MDの解釈・実装のJoplinとの差
      • 画像タグのタイトル([])が空だと表示されない。 → コネクタで対応した。: 修正する(ファイル名を付ける)ようにした。
      • HTML要素(例: "<s>")をコードブロックに入れても無効化できない。 → &xxx;を使うしかない? なぜか、今試したら問題ない。他のアプリとの混同や勘違いだった? (11/2 8:44)

        • あとで問題になりそうではある。
      • 画像タグの前に空行がないと、プレビューがおかしくなる。
        • 画像の前に縦の空白が入る。
      • 単一の改行は無視されて繋がってしまう。空行を入れないと、期待する結果にならない。
        • MD本来の動作なので、仕方ない。
        • こいういうのが嫌で却下したMDエディタがあったが、QOwnNotesは それを補うほどのメリットがある。
        • ただ、それと違うのは、勝手にノートを変更(「修正」)しないことだ。これは重要だ。
    • 検索結果のハイライトが消せない。 → 対処してもらって解決した。 (11/3 13:36) → が、実際には、どうしようもない場当たり的な修正だったし、作者自身が作ったものの仕様を覚えてなくて、こっちが混乱させられたり(そもそも、ハイライトが消えないのが仕様だったのを、僕に指摘されて場当たり的に消したものだから、整合性が取れなくなった)と、クソさが露呈し、それで使うのを止めた。 (11/5 20:40)

      • 検索文字列を消せばハイライトも消えるが、位置がリセットされてしまう。
    • 日本語処理が今ひとつ。
      • 直接関係ないが、日本語入力(Fcitx+Mozc)の未確定入力の下線が出ないのがちょっと辛い・・・ Fcitx側で調整できるのだろうか? → いろいろ調べたところ、Qt5の問題のようだ。ほとんどのアプリで下線が出ない。 (11/1 17:01) → QOwnNotesの問題ではなく、fcitx-qt5の問題だった。自分で対処した。 (11/3 13:36)
        • ただ、LibreOffice CalcとImpressでは出るのが謎。使い方があるのだろうか?
    • 画像がある場合、プレビューの縦の余白が広過ぎることがある。
      • 画像タグの書き方によるようで、次を空行にすれば直ることが分かった。
    • ノートにタイトルが指定できない。: ファイル名で見るしかない。 → コネクタで対応した。: ファイル名にタイトルを付けるようにした。
    • プレビューペーンが最後まで見えない(ことがある)。
      • コードブロックの開きと閉じの対応(インデント)が悪かったためだった。
    • 書式付き文字をコピーして、他のアプリでペーストすると、書式の文字列も貼り付けられてしまうことがある。: 再現せず。
      • 別のアプリ(ReText)だったか?
  • QOwnNotes

    QOwnNotes

    Open source markdown note-taking for Linux, macOS …

  • Overview

    Overview

    Open source markdown note taking for Linux, macOS …

  •  0
  •  0
Keys: , , , , , ,