Obsidianコミュニティプラグイン入門
はじめに
パソコンで使うメモアプリとしてObsidianを使っています。
昔はNotionを使っていたんですが、個人利用ならObsidianで十分だと感じたためです。
あと、ログがマークダウンで一括管理されるのもスッキリしていて気持ちいいです。
まあ一番のキッカケはカレンダープラグインだったんですが。
カレンダーが表示できてクリックでその日のメモが作成できて、今週何をしたかを簡単に確認できます。しかし、そんなカレンダープラウグインにもちょっと不満があります。
個人的な日記の付け方として年別比較表示ができるものをずっと探していました。去年何をしていたか、更に同じ日の2年前は何をしていたのか、自分の進歩具合が気になります。毎日の記録では自分自身との差分は見いだしにくいものです。
もちろんNotionにもobsidianにもそのようなビューに対応したプラグインはありませんでした。
今回自分でプラグインを作り年別比較表示できるようにしてみたいと思います。
まずはObsidian pluginのtutorialを読むところから始めます。
プラグインを作ろう
Obsidianのプラグインでカスタマイズされた機能を提供できます。
このチュートリアルではサンプルプラグインをコンパイルしオブシディアンにロードします。
何を学ぶか
本チュートリアルを終えると以下ができるようになります。
- Obsidian pluginを作る環境を構築する
- ソースコードからプラグインをコンパイルする
- プラグインに変更を加えてリロードする
事前準備
本チュートリアルを完了するためには以下が必要です
- Gitをインストールする
- Node.jsのローカル環境
- VisualStudioCodeなどの開発環境
始める前に
意図しない変更でVaultが壊れる可能性があります。開発はメインのVaultで実施してはいけません。常にプラグイン開発用のVault作業するようにしましょう。
ステップ1: サンプルプラグインをダウンロードする
.obsidianディレクトリにプラグインをダウンロードすると、Obsidianはそれを検出できます。サンプルプラグインはgithubにあります。
- ターミナルを開いて
pluginsディレクトリに入ります。
cd path/to/vault
mkdir .obsidian/plugins
cd .obsidian/plugins
- サンプルプラグインをcloneします
git clone https://github.com/obsidianmd/obsidian-sample-plugin.git
ステップ2: プラグインをビルドする
サンプルプラグインをコンパイルすることでObsidianはロード可能になります。
- プラグインのディレクトリに移動します
cd obsidian-sample-plugin
- 依存関係をインストールします
npm install
- ソースコードをコンパイルします。以下のコマンドはターミナルで動き続け、ソースコードが変わったらリビルドされます
npm run dev
プラグインディレクトリにコンパイルしたバージョンのmain.jsがあることに注意してください。
ステップ3: プラグインを有効化する
Obsidianでプラグインをロードするにはまず有効化する必要があります。
- [Obsidian] -> [Preference] を開きます
- サイドメニューから [コミュニティプラグイン] を選択します
- [コミュニティプラグインを有効化] のボタンを押します
- インストールされたプラグイン の下の Sample Plugin を有効化します

ステップ4: プラグインマニフェストを更新する
プラグインマニフェスト manifest.json を更新してプラグイン名を変更します。マニフェストにはプラグイン名やプラグインの説明が記載されます。
-
manifest.jsonを開く -
idをユニークな"hello-world"などに変更します -
nameをわかりやすい名前"Hello world"などに変更します - プラグインのフォルダ名を
idに合わせて変更します。今回はobsidian-sample-pluginをhello-worldに変更します -
Obsidianを再起動してプラグインマニフェストをロードします
インストールされたプラグインに戻るとプラグイン名が変わっていることがわかります。manifest.json を更新した時は Obsidian を再起動することを忘れないでください。
ステップ5: ソースコードを更新する
ユーザがプラグインを操作できるようにリボンアイコンを追加します。リボンアイコンクリック時に挨拶をします。
-
main.tsを開きます - プラグインクラスを
MyPluginからHelloWorldPluginをリネームします -
Noticeをobsidianからインポートします
import { Notice, Plugin } from 'obsidian';
-
onload()メソッドに以下を追加します
this.addRibbonIcon('dice', 'Greet', () => {
new Notice('Hello, world!');
});
-
Obsidianのコマンドパレットで保存せずにアプリをリロードを選択します
これでサイコロのアイコンが左側のリボンに表示されます。選択すると右上にメッセージが出ます。ソースコードを更新した時は、コミュニティプラグインを一度無効化して有効化し直すか、保存せずにアプリをリロードしてください。

最後に
Typescriptを使ってプラグインをビルドしました。プラグインを変更しリロードすることができました。
以上でチュートリアルは終了です!
簡単ですね。
次は当初の目的の年別比較表示をする方法を検討してみたいと思います。
Discussion