このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

デジタル語彙目録:: Obsidian Publish によるWeb公開

デスクトップ・アプリケーションである Obsidian を使って、ローカル(自分のPC)でデジタル語彙目録を作成する方法は、だいたいの目処が立ってきました。ローカルに作成したデジタル語彙目録をWebに公開する方法も考えなくてはなりません。 Obsidian Publish によるWeb公開の実験をしてみました。

内容:

ハブ記事:

Obsidian Publish

Obsidian はデスクトップ・アプリケーションです(モバイル版もありますが)。 Obsidian では、Markdownファイルをノート〈note〉と呼びます。ノート達を置くファルダ〈ディレクトリ〉は保管庫〈vault | ボルト〉と呼びます。

保管庫はPCのファイルシステム内にあるので、外部からは見えません。保管庫を共有するには、複数デバイスのあいだのデータ転送・同期〈Sync〉のメカニズムを使うか、または保管庫をWebに公開〈Publish〉するかです。どちらの方法も、有料サービスとして提供されています。

Obsidian のMarkdown構文は拡張されていて、通常のMarkdownプロセッサでは扱えません。保管庫のノート達を、構文変換しながらエクスポートして、それを静的サイト・ジェネレーターでHTMLに変換して、適当なホスティング・サービスに載せる、といった方法でもWeb公開はできます。

しかし、時間と手間がかかりそうなので、月10ドル(年間なら20%引き)の課金で Obsidian Publish を使うことにしました。これがね、もうね、めちゃくちゃに使いやすい。デスクトップ・アプリケーションとホスティング・サービスがシームレスに統合されていて、ローカルで「パブリッシュ」ボタンを押すだけでノートがWebに公開されます。

Webへの公開(サーバーへのアップロード)が異様に簡単で、一度この経験をしてしまうと、他の方法を選択する気は全く失せてしまいますね。あまりにもお手軽に公開できるので、プレビュー感覚でアップロードを繰り返しています。

困ったところ

Obsidian Publish は素晴らしいのですが、僕の目的からは困ったところがあります。

  1. LaTeX〈MathJax〉数式がうまく表示できない。
  2. 拡張マークアップとして使っている文字列がそのまま表示されてしまう。

どちらも原因・理由はハッキリしていて、Obsidian Publish はローカル・プラグインが提供する機能はサポートしないからです。

数式をうまく表示するために Extended MathJax プラグイン、(独自の)拡張マークアップを実現するために Dataview プラグインを使っているのですが、これらのプラグイン機能はローカルにおいてのみ機能して、Web上で同様な振る舞いや表示は不可能です。

実際にどんな感じかを画面キャプチャ画像で示します。まず、ローカルでの表示です。



このファイル〈ノート〉をアップロードしてブラウザで表示すると次のようです。



赤字は MathJax のエラーです。次のようなマクロ定義が効いてないせいです。

\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\mbf}[1]{ \mathbf{#1} }
\newcommand{\T}[1] { \text{#1} }
\newcommand{\pto}{ \mathrel{\supseteq\!\to} }
\newcommand{\KEQ}{ \mathrel{\overset{\diamond}{\sim}} }
\newcommand{\KLE}{ \mathrel{\overset{\triangleleft}{\sim} } }

ローカルなら、 Extended MathJax プラグインがよしなに処理してくれます。

(def-name:: ...) とか (def-label:: ...) などは、 Dataview プラグインによって処理されるインライン・フィールドというものです。ローカルなら、適切に表示が隠されます。そして、ページ〈ノート〉にデータベースのフィールド相当のプロパティを設定します。

対策は

数式表示に関しては頑張ればなんとかなります。インライン・フィールド処理には対策が思いつきませんが、絶対に出来ないとは言い切れないです。

ローカルの作業中に、どこまでWeb公開を意識するかに関して、僕は次の方針を立てました。

  1. ローカルの保管庫/ノートに、Web公開の目的でノイズを混ぜない。
  2. ローカルでの作業のとき、Web公開の目的で非本質的な余分な作業はしない。

この方針に従えば、頑張ればなんとかなっても頑張らないし、対策の調査や考案に時間も取らない、ということになります。

前節の2つの問題については:

  1. 特定ページをいきなり表示すると数式をうまく表示できないが、一度トップページに行けば(そこでマクロ定義されるので)その後はちゃんと表示される。
  2. (独自の)拡張マークアップがそのまま見えてしまうのは邪魔かも知れないが、ある種のソースコードを見ていると思えば我慢できないことはない。

プラグイン機能はサポートされませんが、Obsidian 本体機能はかなりの程度Web上でも実現されています。

  1. ファイルエクスプローラ〈ナビゲーション〉: フォルダー階層の表示
  2. サイト内の文字列検索: 全文検索
  3. ホバープレビュー: リンク上でマウスホバーするとプレビューウィンドウがポップアップ
  4. 局所および大域のグラフビュー: 当該ページ周辺、またはサイト全体のリンク関係をグラフ表示
  5. ページの目次: 見出しレベルによる階層の表示
  6. ページへのバックリンク一覧: 当該ページへリンクしている他のページを表示

これらが使えるだけでも素晴らしい。

まだ実験

ローカルでプラグインを使っている状況で、Obsidian Publish を使って広く一般に向けたサイトを公開するのは難しいと思います。プラグイン機能をWeb上でエミュレートできないので、不具合のあるサイトに見えてしまうからです。

しかし、事情を知っている人々が内輪で使う目的なら、別にかまわないのではないでしょうか。プラグインは執筆補助の機能だと位置付けて、閲覧者には執筆時ほどの懇切な支援はないのだ -- と、そう割り切って使えばいいでしょう。

まだ実験中なので URL は告知しませんが(URL 変わる可能性もあるし)。続報はまたいずれ。