[Obsidian] Templaterプラグインを使ってWikipedia日本語記事へのリンクを生成する
Contents
はじめに
Obsidianについてこのブログで語ったことはなかったが、実は2年ほど前から使い始めて今では私の生活になくてはならない存在となったアプリケーションだ。
詳しくはいずれこのブログでも紹介するかもしれないし、しないかもしれない。あまりにも生活の深くにまでこのアプリが入り込んでいるため、今更どのように紹介すればよいのか分からない、というのが本音だ。
だからObsidianについてよく知らないけれど仕方がないから義理で続きを読んでやろうという殊勝な読者は、とりあえずメモアプリだと思っていただければよい。
この記事ではそんなメモアプリの少々マニアックな使い方について紹介しているが、何かしら響くものがあったならばぜひダウンロードして使ってみて欲しい。
比較的新しくて信頼できる初心者向けのObsidian紹介記事としては以下がオススメだ。
Templaterプラグイン
今回取り上げるのはコミュニティプラグインのひとつ、Templaterだ。
あらかじめテンプレート(雛形)を作成しておき、少ないアクションでそれを呼び出すことで文書作成を支援するプラグインである。
すでにObsidianに使い慣れた方ならば、はじめから搭載されているコアプラグインであるテンプレート(templates)機能を使用していることだろう。
そのリッチ版とも言えるTemplaterについて、興味はあるが敷居が高いと感じている方がいるかもしれない。実際に私がそうだった。利用開始から最近まではコアプラグインのテンプレートで十分だと思っていた。
しかし、近頃暇な時間にTemplaterを試してみて、ある程度の手応えが得られたことに加えて、比較的ガチ勢向けのプラグインのためか導入方法や具体的にどのようなことができるのかについての日本語での情報があまり見つけられないことに気づいたため、こうしてアウトプットすることにした次第である。
この記事では「Templaterを使用してノートタイトルと一致するWikipediaの記事リンクを生成する」ことを目標として話を進める。
途中でJavaScriptのコードを載せるが、その内容を理解する必要はなくコピペして指定したファイル名で保存・設置するだけで利用できるように心がけた。ちょうど一月ほど前の、Templaterに敷居の高さを感じていた自分が読んだら一度手を出してみようと思えるような記事に仕上げたつもりだ。
コアプラグインのテンプレートでは実現不可能なUser Script Functions(ユーザースクリプト関数)の可能性を体験いただければ幸いである。
動作例
上例において保管庫の中身は以下のようなファイル構造を想定しており、以降の説明もこの構造に沿って行う。
すでにプラグイン用のフォルダを作っていたりする場合は適宜読み替えて設定やファイル設置位置の調整をしていただきたい。
Vault root/
├ Templater/
│ ├ Scripts/
│ │ └ get_wikipedia_ja_link.js
│ └ Template/
│ └ wikipedia link.md
└ 任意のノート.md
プラグインを導入・設定
まずはObsidian管理画面の「コミュニティプラグイン」からTemplaterをインストールし、有効化する。
続いて管理画面の「Templater」から以下の2点を設定する。
- 「General Settings > Template folder location」でテンプレートファイルを設置するフォルダ(Templater/Template)を設定する。
- 「User Script Functions > Script files folder location」でスクリプトファイル(
.js
ファイル)を設置するフォルダ(Templater/Scripts)を設定する。
テンプレートファイルを設置するフォルダを設定
スクリプトファイル(.js
ファイル)を設置するフォルダを設定
User Script Functionsを設置
それでは今回の話の肝であるUser Script Functionsを設置しよう。
Templaterでは上で設定したスクリプトファイルを設置するフォルダに置かれたJavaScriptファイルからJavaScript関数を呼び出し、その出力を取得することができる。
つまりテンプレートを呼び出すたびにバックで極めて自由度の高い処理を走らせることができるのである。
今回は任意の文字列を引数(関数に与える値)として、その文字列と一致するWikipediaの日本語記事が存在する場合はその記事へのMarkdownリンク文字列を出力するget_wikipedia_ja_link
関数を作成した。
以下のソースコードをコピーしてget_wikipedia_ja_link.js
ファイル†01にペースト、そして上記で設定したスクリプトファイルを設置するフォルダ(Templater/Scripts/)に設置しよう。
async function get_wikipedia_ja_link (word) {
const url = "https://ja.wikipedia.org/wiki/" + encodeURIComponent(word);
try {
const res = await request(url);
const elms = new DOMParser().parseFromString(res, "text/html").getElementsByTagName("title");
return "[" + elms[0].textContent + "](" + url + ")";
} catch (e) {
return "";
}
}
module.exports = get_wikipedia_ja_link;
設定に誤りがなければTemplaterの管理画面から「User Script Functions > Script files folder location」欄の下部にget_wikipedia_ja_link
関数が検知された旨が表示されているはずだ。
テンプレートファイルを設置
最後にテンプレートファイルを設置しよう。
今回はWikipedia日本語版の記事リンクを貼るだけのシンプルなテンプレートとしてwikipedia link
ノートを作成し、以下の一行をコピペし、テンプレートファイルを設置するフォルダ(Templater/Template/)に設置しよう。
<% tp.user.get_wikipedia_ja_link(tp.file.title) %>
簡単に上記のテンプレートについて解説する。
Templaterでは開始タグ<%
と、閉じタグ%>
の内側に動的に内容が変化するコマンドを記入することができる。
tp.user.get_wikipedia_ja_link()
は今回作成したスクリプト関数。そのスクリプト関数に引数として渡しているtp.file.title
はテンプレートを展開するノート(ファイル)のタイトルに置き換わる。
以上により、Templaterで呼び出すと「ノートタイトルと一致するWikipedia日本語版の記事リンクを生成する」テンプレートファイルとして動作する。
Obsidian左端のリボンメニューからTemplaterを起動し、wikipedia link
を選択すればWikipedia日本語版の記事へのMarkdownリンクが生成されるはずである。
もしもObsidianの右上にエラーが表示される場合は作業工程のどこかで間違いを犯している可能性が高い。
エラーは表示されないが何も出力されない場合はWikipedia日本語版側に該当の記事が存在するかチェックしていただきたい。ちなみに例に用いたGIFアニメでは当ブログらしく「ふぃぎゅ@メイト」を用いたが、アットマークが全角だと記事が存在しない扱いとなることに気づかず1分ほど混乱したことは秘密である。
応用
このテンプレートはWikipedia日本語版の記事へのMarkdownリンクを生成するだけだが、上記のコマンド部分はもちろん他のテンプレートにも流用可能だ。
さらに、Templaterの環境設定から「Template Hotkeys」でテンプレートファイルを指定することでそのテンプレートを呼び出すホットキー(ショートカットキー)を設定できる。これによりワンアクションで複雑な作業を完結させることができるようになるためノート作成の利便性が大きく上がるだろう。
おわりに
今回はいつか書こう書こうと思っていたObsidian関連の記事をようやく書くことができた。
とは言うものの、当ブログの定期読者のほとんどが存在を知らないであろうこのアプリケーションの紹介記事ではなく、すでに利用している方に向けてのTips記事ではあるのだが。
Templaterで何かコアプラグインのテンプレート機能ではできないことをしようと考えたとき、まず手始めにWikipediaの記事へのリンクを自動生成しようとしたのは、WikipediaのURL構造的にスクリプトを作るのが非常に簡単だったからだ。
完成後は既存で作成していたテンプレートに組み込んでみて色々と試してみたが、Wikipedia側でかなり柔軟に表記ゆれを補正してリダイレクトしてくれるのが便利だと感じた。
次は映画関連のノート用に、今年に入ってから使い始めたFilmarksの作品リンクを生成するスクリプトを作ろうと思っているが、作品ページのURL構造的に少々面倒くさい(作品毎に固有の作品IDを調べる必要がある)ため後回しにしている。
ちなみに私のFilmarksユーザーページはこちらなのでフォローいただけると嬉しい。
脚注
↑01 | Obsidian上でファイルを作成すると拡張子が.md になるため、アプリ外部で作成して保管庫に設置するとよい。 |
---|