こういう記事を読んだ:
まず前提として、自分はScrapboxのヘヴィーユーザで、加えて会社でもScrapboxが大々的に使われている。いまプライベートScrapboxのページ数を数えてみたら、974ページあった。だからこの記事はScrapboxをdisってやろうという類のものではないことを承知してほしい。
この記事を読んだ感想としては、まあそうですねという感じ。同僚もだいたいScrapboxになんでも書いている印象がある。自分は普段から技術的な自由研究みたいなことをなんでもScrapboxに書いているので、そうだよね、という感想になった。
技術的なメモに限らず、普段の日記とか、ブログ未満のことをなんでもここに書いて、たまに分量が溜まったらブログの記事として消化したりしている。
このシナノゴールドのページは意味不明だけれど、おそらく帰省したときに食べたものがおいしかったのでメモしたのだと思う。
Scrapboxによる技術(や暮らしのあらゆる)メモの課題感
ところで、Scrapboxはページが巨大になってくるとどんどん重たくなってしまうという苦しみがあって、長いページを閲覧するのは苦行に近いところがある。
加えてブラウザでしか動かないという苦しみもある。ブラウザがあれば動くというのはありがたいのだが、普段のプログラミング環境であるEmacsで書ければな〜という想いもあり(例えば、日本語IMEをDDSKKに一本化できる)、Emacs用のscrapbox-modeを書いたこともあった:
だがそもそもScrapboxはページ更新系のAPIをあまり持っていないので、コマンドライン経由の編集には限界があるという問題があり、最終的にこのモードは使わなくなった。
Scrapbogusのご紹介
ある日自分は考えた。ようするに検索とクロスリファレンスとコードシンタックスハイライトが使えれば自分は十分なのだ。そこで、UNIX的?な以下の技術スタックを用いて、ScrapboxのパチモンであるScrapbogusを組み上げた(組み上げたといっても単一のプロダクトを書いたのではなく、既存のツールを組合わせた感じ)。
- 検索
- ripgrep (Emacsから利用可能)
- コードシンタックスハイライト
- markdown-mode(ようするに
foobar.md
を編集するだけ)
- markdown-mode(ようするに
- 他マシンへの共有
- Resilio Sync
- 昔はBittorrent SyncとかBTSyncと呼ばれていた、P2P的なファイル共有(同期)ツール
- 特定のディレクトリの内容を他のマシンと同期する
- LinuxやFreeBSDにノードを常駐させることができるので、常にこのノードがファイルを保存してくれる
- Gitでもよさそう
- Resilio Sync
- リンク機構
- Etags (Emacs標準搭載のタグをジャンプさせる機能)
etags --regex='/^# +\(.+\)$/\1/' *.md
と書くことで、markdownファイルのh1見出しが自動的にインデックスされる。あとは本文中からM-.
でジャンプできるようになる- 定期的な更新が必要
- Etags (Emacs標準搭載のタグをジャンプさせる機能)
- Docusaurusとかに入れるとかっこいいHTMLにできる
ディレクトリツリーは 以下のようになっている:
% tree . ├── Scrapbox.md ├── TAGS ├── about.md ├── docusaurus.md ├── etags.md ├── manual.md ├── resiliosync.md └── scrapbogus.md 0 directories, 8 files
例えばabout.md
には以下のような内容が保存されている:
# About [scrapbogus]とは、[Scrapbox.md]をいい具合にUNIX的に縮退させてしまったツールのこと。最終的にEmacsのTAGSでも良いんじゃないの?という願望からうまれた。 ## できること - ページ作成: 普通にページを作成すればよい - シンタックスハイライト: markdownなので勝手にEmacsがやってくれる - 検索: rgなどのテキスト全文検索機能を使えばよい - リンク: [etags]を使えばよい - `M-.`, `M-,` で高速移動できる - 同期は、btsync[Resilio_Sync]やgitで行えばよい
[]
でくくっておくと、そこで単語境界が区切れるので、その上でM-.
すれば該当ページがあればジャンプできる。
当然だがマシンの上で全部完結するので爆速で、ストレスに感じたことはまったくない。便利なので真似してほしいけど、Scrapboxも好きなのでほどほどに真似してほしい。
自分の場合は、技術メモは一瞬で手元で検索したいという欲求があるので、技術メモとしての目的では満足している。
できないこと
もちろん、マシンの上で全部やることによって生じるデメリットもある。
- 同時編集ができない
- これは宿命的な問題で、同時編集は当然できない。多人数で使うといった用途にはScrapbogusは不向きで、普通にScrapboxを使ったほうがいい。
- 画像貼り付けに難がある
- Emacsの謎のテクノロジーによっていちおう画像は貼り付けられるし閲覧もできる。がScrapboxほどの便利さはない。
- トラックバック的なビューが無い
- Scrapboxでは「このページにリンクしているページ」という表示が可能だが、Scrapbogusだと不可能。がんばって全文検索することになる。
- Scrapboxほど気楽に箇条書きができない
- これは一長一短かもしれない。
まとめ
自分はこういうメカっぽい仕組みが好きなのでこういう仕組みを自分で作ることに喜びを覚えるけれど、世の中大多数の一般的な人々はそんなことないと思うので素直にScrapboxを使ったほうがよさそう。Scrapboxのほかにも色々と多機能なツールがあるけれど、正直諸君らそんな機能使えんやろ?活用せんやろ?みたいな気持ちがあるので無視している。