によると
$str =~ s/(\W)/'%' . unpack('H2', $1)/eg;
と
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
がはやいそうです。
同じく
によれば、
$str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $str =~ tr/ /+/; $str =~ tr/+/ /; $str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
がはやいそうです。
iA Writer の Web プレビューを Google ドキュメントに貼り付けて共有する方法で一緒に貼り付けられる画像はインターネット公開されているものだけなのがちょっと不便だった。iA Writer の Web プレビューのクリップボードコピーには画像データが直接含まれないため。
でいろいろ試したところ iA Writer 側で データ URL として画像を貼り付ければ、コピー & ペーストで Google ドキュメントに貼り付けられることが分かった。
画像データを base64 コマンドなどで base64 で符号化し、 Markdown ファイル上で

とすれば OK(image/png はメディアタイプに合わせる)。 iA Writer で Web プレビューで表示される。
とても長い URL なので文章中に直接含めておくのは不便。実際には img.png.txt など別のファイルに書いておいて
iA Writer の content block 機能を使って
/img.png.txt
のような形で include して実用するのが良さそうだ。ロケーションの中にファイルを置くことで検索にひっかかって不便な場合は、別のフォルダに置いて
../img/img.png.txt
のように相対指定かな。
[ ノート・日記はテキストファイルに ]
永続的に残しておくほどではないちょっとしたノートを置いておくスペースとして nNote を2017年1月末に始めて3年弱になった。
ある程度自分なりに推敲してまとめる日記記事中心の nDiki とは別に、断片的・未整理・不完全なちょっとしたノートを頻繁/大幅に更新したり削除を前提に置けて重宝している。
一方別にすると nDiki と nNote の両方を通して「キーワードで記事を抽出して表示」したり「時系列で表示」したりできない点がちょっと不便だと分かった。パーソナルナレッジベースとしてはまとまっていた方が良いので、今後ちょっとしたノートも nDiki 上に置くことにする。
両者を区別はしたいので nNote in nDiki として
とすることにした。
nNote にある過去のノートも上記ルールに合わせて修正して nDiki に移動。横断的に見る時に邪魔になる「持ち物リスト」や、仕上げた旅行記記事と一緒に置く逆に分かりにくくなる「旅行計画」といったノートは nDiki に移さずに nNote に残しておいた方がいいな。 nNote は nNote で残しておくことにする。
Markdown ファイルを iA Writer で Web プレビューしたものを Google ドキュメントに貼り付けて共有する(記事1)時、画像データをデータ URL 化して Markdown ファイルに記述すれば一緒に貼り付けられることが分かった(記事2)。
でもやっぱり管理が面倒くさい。
そこまでするなら「別のアプリで self-contained HTML に変換」→「Web ブラウザで表示」→「コピー & ペーストで Google ドキュメントに貼り付け」を実行する方がいいのでは。いったん HTML に書き出すのが嫌だなと今まで思っていたけれど。
と思って調べたら、インストールしてある Marked 2 が self-contained HTML に変換できたし、Google Chrome で表示して全選択からのコピー & ペーストで画像付きで Google ドキュメントに貼り付けられた。
こちらの方法にしよう。
Zettelkasten メソッドのための機能を備えた Markdown エディタに Zettlr がある。ローカルディレクトリ上に通常の Markdown ファイルとしてデータを保存するタイプで、ロックインの心配が無く他のツールと併用できる好みのアプリだ。インストールして1日使ってみた。
Homebrew では以下で。
$ brew install --cask Zettlr
今日時点でインストールされるのが 1.8.3 でちょっと古かったので
からバイナリビルドされた 1.8.6 をダウンロードしてインストールした。
ヘッダを大きめに表示したりリンクの URL を隠したりと一部プリレンダリングされるタイプ。日本語も問題無さそう。
ファイル末のあたりで文字入力するとエディタがガクガク揺れるは今後改善されると嬉しい。
見出し単位で折り畳む機能やサイドバーで目次を表示する機能があり、長めの文章を書くための支援が揃っている。
ファイルツリー上にディレクトリとファイルの両方を表示する Combined モード以外に、ファイルツリー(ディレクトリツリー)とファイルリストの両方を表示する Expanded モード、ファイルツリーとファイルリストのどちらかを表示する Thin モードがある。
Expanded モードを選ぶと iA Writer や Ulysses などでもお馴染みのスタイルになりノートアプリとして使いやすくなる。
ファイルシステム上のディレクトリをルートディレクトリとしたワークスペースを複数同時に開いておける。用途別にディレクトリを分けている場合に便利だ。
全文検索はワークスペース単位。内部リンクもワークスペース単位で機能する。 自分は複数のワークスペースを横断的に全文検索したいので、本格的に使うなら1つのディレクトリの下にまとめる必要があるな。
ファイルの拡張子は md ではなく txt でも OK なので、ファイルを同期した Google ドライブ上で全文検索させられるのが嬉しい(Markdown ファイルの拡張子を md にすると Google ドライブで不便)。 md 固定の Obsidian より柔軟だ。
Makrdown ファイルから Markdown ファイルへファイルベース名を指定して 「[[ファイルベース名]]」の形で内部リンクできる(パス名は不要)。
また Markdown ファイル内にユニークな ID を書いておき、その ID を指定して「[[ID]]」としてリンクもできる。後者を使えばファイル名変更が気軽にできる。 ID の形式やリンクの開始文字列 [[ ・終了文字列 ]] もカスタマイズできて柔軟なのも良い。
iA Writer では
ia-writer://open?path=/Locations/path/to/file.txt
のような URL を発行して擬似的にリンクするさせるしかないので比べると圧倒的に便利。
今メインで使っている Mac アプリケーションの iA Writer に比べると Electron ベースの Zettlr は美しさで負けるのは仕方ないところかな。
Zettlr をテキストファイルノートアプリとして内部リンクを活用しながらパーソナルナレッジベースを作っていくのありだな。
[ ノート・日記はテキストファイルに ] [ Mac アプリケーション ]
ノートを整理すると公開したくなるし、公開すると思うとノートを整理する気になる。 Obsidian で書いたノートもやはり公開できるようにしたい。Gatby・Hugo・MkDocs などの静的サイトジェネレータでサイト生成して公開することも考えたけれど、 Obsidian の仕様に合わせた内部リンク対応を書く必要があり開発保守コストが高いな。4日前に様子見と思った Obsidian Publish を結局買ってしまうことにした。$96/年。クレジットカード決済での換算レート107.514円で、支払い額は10,321円となった。
独自ドメインで公開もできるけれど HTTPS にしようとするとまだ大変なので当面 publish.obsidian.md の下でいいことにする。将来独自ドメインに移した際に URL が変わってクールじゃないかなというのはあるが、そもそも頻繁に更新するパーソナルナレッジベースの公開サイトという点で URL がどんどん変わるので気にしても仕方ないよね。
[ サブスクリプションサービス ]
Obsidian Publish したノートにアクセスした時の表示が速くて驚いている。
これはいいと Google Chrome のホームボタンで表示するページ用に Obsidian のノートを2日前に作成し設定した。いい感じなのでさらに Google Chrome で新しいタブを開いた時にも表示しちゃおう。
Chrome 拡張機能 New Tab Redirect を入れて Obsidian Publish したノートの URL を設定。
最近の関心事をブラウズするための内部リンクだったり、よくアクセスするためのリンクを書いておくとなかなか便利だ。
ディスカッションのきっかけになっていいのかもと社内向け Top of Mind ノートを作ってみた。共有範囲の管理を考えてまずは Google ドキュメントで作成。自分の Google Chrome のスタート ページとタブを開いた時のページにも指定してみた(多少表示が速くなるかなと /preview な URL を指定)。
最初は直接 Google ドキュメントに入力していたけれど手元の Markdown ファイルと別々だと煩雑すぎるので、他のドキュメントでやっている Marked 2 で変換して貼り付ける方法で更新することにした。
インターネット公開している Top of Mind ノートに比べて「読まれるかも/読まれているかも」感が薄くて(明示的に誰にも共有していないからそれはそうだ)まだそれほどテンション上がっていないけれど、しばらく続けてみる。
Obsidian Publish サイト nNodes 内でのフォルダ名を「先頭が大文字の複数形」に変更した。もし気が変わってサイトの左側にナビゲーションを表示することにした際、「先頭が大文字の複数形」の方が目次的にしっくりくるかなと。
多くのノートの URL が変わるが、被リンク・ Google 登録インデックスもほとんど無いので今のタイミングならまだいいだろう。
Obsidian Publish で「ナビゲーションを表示」を有効にするとサイトの左側にノートがディレクトリ表示される。
目次やアウトラインのように見えつつも辞書式順序なので違和感があるのが表示していない理由の1つ。
それからディレクトリ表示で気になるノートを直接開くより、ノートの中のリンク・バックリンク・グラフビューで順番に辿っていった方がエキサイティングだろうというのがもう1つの理由。
Obsidian ノートとして内部リンク方言([[ファイルベース名]] や [[ファイルベース名|表示テキスト]])を書いた Markdown ファイルを HTML ファイルに変換する場合は Marked 2 から[[・]]を消す自作フィルタをプリプロセッサとして呼ぶようにしている。
単独ファイルとして HTML ファイルに変換する場合はこれで良かった。しかし最近はノート間のリンクを残しつつ変換したくなってきた。
ノートの YAML front matter にそのノートの URL (今だとノートを Google ドキュメントにして共有しているので Google ドキュメントの URL)を URL キーで宣言してある。内部リンク先の Markdown ファイルを探して URL が宣言されていれば [ファイルベース名](URL) あるいは [表示テキスト](URL) に書きかえるよう自作フィルタを改良した。
これでリンク元 Markdown ファイルではリンク先ノートの URL を記述しておく必要がなくなり、普通に Obsidian ノートして書くだけでよくなった。めでたし。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。
#nNote タグがついている記事は他の記事に比べて、より断片的・未整理・不完全なちょっとしたノートです。まだ結論に至っていない考えなども含まれます。頻繁/大幅に更新したり削除したりすることがあります。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。
ナレッジベースアプリケーション Obsidian で書いているノートの一部を notes.naney.org で 公開しています。