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