nb - CLIベースのノート管理システム その1

カテゴリー:  Tech タグ:  memo software

これまでObsidianInkDropなど いくつかノート管理ができるアプリを使ってきましたが定着しません。

やはりターミナルでVimで利用できるものが好みです。 以前はQFixHowmを使っていて よかったのですが、ちょっと多機能すぎます。似たようなものを探して MemoListも試しましたが、これはまた シンプル過ぎます。

dnoteも試しましたが、 日本語の検索が機能しなかったのと、 有償のサービスなのにどんどん機能縮小しているという状況で将来性が疑問です。

結局たどり着いたのが、nbです。

nb とは

nbとはコマンドラインベースで、 ノート、ブックマークを管理できるオープンソースのツールです。

次のような特徴があります。

  • Markdown記法が基本のテキストベース
  • フィルタリングやタギング、検索機能が豊富
  • 簡単なタスク管理も可能
  • 暗号化もサポート
  • Gitリポジトリと同期可能
  • テキストベースとブラウザベースのブラウジングをサポート

nbのインストール

nb自体はシェルスクリプトで書かれているらしく、必須なのはシェルとエディタです。

シェルはほとんどのシェルがサポートされています。fishもサポートされていました。

エディタもターミナルで使用できるエディタはほとんど大丈夫でしょう。

オプションですが、次のようなコマンドを合わせてインストールすることが奨励 されています。

MacではHomebrewが入っていれば、以下のようにインストールできます 1

$ brew install xwmx/taps/nb
$ brew install bat
$ brew install pandoc
$ brew install ripgrep
$ brew install tig
$ brew install w3m

nbの使い方

ノートの追加

次のコマンドでエディタが開いて、ノートが新規に作成されます。 ファイル名も適当に付けてれるので指定する必要がありません。

# ノートの追加
$ nb a
Added: [1] 20240115202243.md "サンプルノート"

ノートはMarkdown形式で記述してきます。 #に空白は付けずに単語を記述すると タグになります。サンプルを示します。

# サンプルノート

## Tags

#sample #test

## ノート

今日はよい買い物ができました。

リンクの指定

外部のリンクについてはMarkdown記法でのリンクが使用できますが、 nb内で管理している 文書については Wikiスタイルのリンクが使用できます。

# 文書番号でリンク。リンクの文字列も文書番号になります。
[[123]]

# タイトルでリンク。タイトルで表示されます。
[[Document Title]]

# 文書番号でリンクしつつ、リンクする文字列を指定する
[[123|Document Title]]

私は文書番号とリンク文字列を指定する方法を好んで使用しています。

画像

nbは画像も扱うことができます。

# 画像のインポート
$ nb import hogehoge.png

# 一覧で確認。■の部分は本来画像のアイコンが付与されます。
$ nb ls
[5] Example 4
[4] ■ hogehoge.png
[3] Example 3
[2] Example 2
[1] Example 1

# 画像の表示
$ nb open 4

openコマンドで画像の表示を行うと、$NB_IMAGE_TOOLで指定されたツールが 使用されます。何も指定がないとMacの場合はプレビューが使用されます。 $NB_IMAGE_TOOLにはcatimgか、 imgcatが指定できるようです。 MacでiTerm2を使用しているのであれば、 imgcatを指定するか、 プレビューを使うのがよいと思います。

imgcatのインストール方法は 以下の通りです。パスの通ったディレクトリで作業してください。

$ cd ~/bin
$ curl -O https://iterm2.com/utilities/imgcat
$ chmod u+x imgcat

インポートした画像をノートに入れたい場合は、ファイル名を指定します。 文書番号ではうまく表示されないようです。

# 画像サンプル

![](hogehoge.png)

ノート一覧/表示

作成したノートの一覧はlsコマンドで表示できます。 showコマンド、またはviewコマンドで内容を表示できます。

# ノート一覧表示
$ nb ls
                         home
--------------------------------------------------------------
[1] サンプルノート

# ノート内容表示
$ nb show 1             # Viewerに指定したもので閲覧できる。
$ nb show 1 --print     # ソースがターミナルに表示されます。

表示の際には、$NB_MARKDOWN_TOOLで設定されたツールが使用されます。 私は glowを指定しているのでMarkdownがレンダリングされた状態で表示されます。 レンダリングせずに表示したい場合は --printオプションを使用します。

暗号化したノート

暗号化したノートを作成することもできます。

$ nb add --encrypt

ノートごとにパスワードの設定を促されてエディター画面に入ります。 パスワードはノートごとで忘れると開けなくなるので注意が必要です。

暗号化ツールには$NB_ENCRYPTION_TOOLに指定したものが使用されます。 デフォルトはOpenSSLですが、私はGPGを使用しています。

暗号化したノートはこの後説明しているbrowseコマンドでは閲覧できません。 個別にshowコマンドに--encryptオプションをつけて個別にノートを開く 必要があります。

ノートのブラウジング

browseコマンドを使うと、w3mやブラウザでノートを閲覧することできます。

# w3mで閲覧
$ nb b

# ブラウザで閲覧
$ nb b --gui

ノートの検索

searchコマンドを使うとノートの全文検索を行なうことができます。 この時、引数に与えた文字列で全文検索を行ってくれるようです。 タグのみを検索したい場合は、--tagオプションを使用します。

# 文字列を検索
$ nb q 買い物
[1] サンプルノート
--------------
9:今日はよい買い物ができました。

# タグで検索
$ nb q --tag sample
[1] サンプルノート
--------------
5:#sample #test

まとめ

nbについて今回はノートに関する機能を中心に説明しました。 シンプルでありながら多機能でまだまだ紹介していない機能があります。

Git同期機能により異なるデバイス間でのノートの同期や共有が可能ですし、 BookmarkやTodoの管理機能もあります。

InkDropはまだ残していますが、しばらくはnbをメインに使い込んで行きたいと思います。


  1. 私はncatはイントールしていません。 

コメント

Comments powered by Disqus