Posts tagged ‘Zim desktop wiki’

(突発的に?)光とモバイルのプロバイダを移ったり、窓の異臭漏れ防止シートを正式版に張り替えたりして停滞しているが、Zim+Joplinのシステムは概ね問題なく使えている。

前回から以下を修正・改良して、随分良くなった。

  • 行の(ソフト)ラップがないように振る舞う場合があるのを概ね解消した。
    • ノートに埋め込んでいる画像の表示幅が広過ぎることが主な原因だったので、設定した最大幅※より大きかったら、自動的に縮小するようにした。
      • ただ、設定値が不適切だったり、画像がインデントされていて、画像の幅+インデント量がペーンの幅を超える場合には駄目である。
      • ※本来、ペーンやウインドウの幅から画像の最大幅を求めるべきだが、まだそれらが取得できないので、設定に依存している。
    • また、テキストのラップ方法にも よるようだったので、単語単位から単語+文字単位に変更した。
      • 日本語では単語単位のラップは意味がないので、どうにかして「ちゃんと」したいが、これしか やりようがないのかも知れない。
        • そういう点では、このWordPressのエディタや表示は全く優れものだ。
    • 依然として、問題が起こった場合にHomeキーが思うように効かないので、何とかしたい。
  • ノートを開いた時に、より確実に前回のカーソル位置を復元できるようにした。
    • この処理は元々ハッキング的に実装されていたが、時々動作が不完全だったので、復元するための待ち時間(= スクロールする時間?)を結構長くした。
  • 起動するたびに/tmpにログディレクトリ(zim-xxxxx)が作られないようにした。
    • 特定のディレクトリ(例: /run/user/ID)にログファイルを作るようにした。
    • 以前のログは10個くらい残すようにした。
  • MDへのエクスポートの改良
    • 見出しのMDのタグを標準的なもの(Joplin= gfm?)に合わせた。
      • インポート時も同様な修正が要るようだが、未対処である。
  • ノート名のボタンのラベルの文字サイズを小さくし、なるべく多くの文字を表示できるようにした。
  • (特に書式のエクスポート・インポートのテスト用ノートで)ZimとJoplinの行き来を繰り返すとテストができなくなってしまうので、Joplin→Zimの一方通行だけにできるようにした。
    • 画像のインポート用ノートを無駄にZimからJoplinにエクスポートしないようにも使っている。
  • (以下、書いたあとでの追加: 12/18 12:43) Joplin→ZimとZim→Joplinの変換(エクスポート・インポート)処理を改良した。
    • [Joplin→Zim] コードブロックが正しく表示できない場合があるのを解消した。
      • MDをZimに変換するpandocの仕様で、コードブロックを囲むタグが ~~~の場合、ZimのSource Viewというプラグインを使うようになるが、うまく動かないようで、先頭に"{{{code: lang="(改行)"linenumbers="True""などと入り、ブロックの終わりが認識されず、最悪の場合はZimが強制終了する(ブロックが大きくなり過ぎるため)。
      • そこで、Joplin→Zimの変換プログラムで、MDの2種類のコードブロック(~~~, ```)をどちらもZimのもの(''')に変換するようにした。
    • [Joplin→Zim] 上と同様に、水平線(HR)も、Zimが認識する ---に統一するようにした。
    • [Joplin→Zim] 見出し(##など)に下線が付く場合があって煩雑なので、下線を削除するようにした。
    • [Joplin→Zim] 同様に、見出しの前後に余分な空行が入らないようにした。
    • [Zim→Joplin] ノート先頭に書いた見出しがなくなることがあるので、なくならないようにした。
      • 直すまでは、先頭の見出しの前に . のようなダミー行を入れて しのいでいた。修正も同様にしているが、Joplinにインポートする前に除去している。

それでも、依然として すごく気になる問題や改良したい点は残って居る。特に以下である。

  • 描画の更新がおかしいことがある。
    • 大きいノートを変更すると、その行が上下に重複して表示されることがある。
      • 他のアプリでは見たことがないのに、どうして起こるのか不思議だ。
      • ここにキャプチャを載せようと思って試すと、起こらないw
      • とりあえずは「軽い再描画」(ブラウザのF5のもっと軽いイメージ)ができるようにしたい。
  • 新しい画像が入ったノートのJoplinへのエクスポート
    • Zimで追加した画像をJoplinに取り込めるようにしたい。

前者については、いろいろいじってZimの内部構造やPythonでのグラフィック(GTK)のやり方が分かって来たので、調査・試行錯誤すれば できそうな気はするが、まだ原因が掴めていないので、根本的な対処は難しい。

後者はやり方は分かっているけど面倒なので、純粋に僕のヤル気の問題であるw

逆に言えば、大きな問題は もう2つしかなく、時々イライラはするものの充分実用的(Joplinより10倍以上使いやすい)なので、残った難しい・面倒な問題を片付ける気が なかなか起こらない。まあ、年末の宿題か来年の初仕事だ。

 

(12/18 12:17) Zimならではの良さの一つに、gitなどでバージョン管理できることがある。Joplinにも履歴機能はあるが、指定期間で削除されてしまうため、古いノートの履歴が参照できない。※ そのため、古いノートの変更に失敗して戻したくなってもできないのだ。

※少し前までは最大*日分残ると誤解して古くても残って居ると思い込んで居たが、そうでなくてがっかりした。

Zimではそんなことはなく、履歴は無限に残る(はず)。データ量は増えるが(それほど多くはないはず)、それよりも、確実に復活できることが重要だ。そして、汎用のツールを使っているので、好きなアプリで履歴を見られるのもうれしい。ただ、履歴を記録するのは定期的なので(ノートを保存した時にも記録されると思う)、残らない履歴もある。

それでも、なくなるよりはずっといい。当初はgitのようなものを使うのは安直だと思っていたが、Joplinのように いい加減な機能を内蔵してプログラムとDBを肥大化させるうえに、いざという時に役に立たずにがっかりさせられるよりはずっとマシだし、ずっといい考えだと思う。

 

PS. 意外にオリジナル版も少しずつ(残念ながら、細かいものばかり)修正されているので、まとめて適用したい。あと、僕の改良・改造もオリジナル版に入れてもらいたいが、説明や準備が結構な手間なので、やってもフォーク(分岐)程度かと思っている。いずれにしても、描画の更新がおかしいことがある問題が直ってからだ。

  •  0
  •  0
Keys: , ,

最初、「首までどっぷり」ってのは"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: , , , , , ,