Obsidian プラグインの開発メモ
Obsidian のプラグインを公開するまでにしたことのメモ。
プラグインのテンプレートを使用する
公式のプラグインテンプレート(obsidian-sample-plugin)を使用して開発を始めた。
ビルドしたプラグインのフォルダを Vault 内の .obsidian/plugins/ に配置することで、アプリ側でプラグインを読み込めるようになる。
manifest.json の更新
プラグインの名前や説明などを変更していく。
ドキュメント にある通り、id に obsidian という単語を含めるのは NG。plugin という単語もダメそうだ。
hot-reload プラグインの導入
開発中のプラグインを再読み込みするには、設定でプラグインを一度無効にしてから再度有効にする必要がある。ただ、コードを変更するたびにこの作業を繰り返すのはさすがにツラいので、 hot-reload というプラグインを導入した。
GitHub のリリースページからダウンロードして Vault 内の .obsidian/plugins/ に配置し、有効化するだけで機能する。
ソースコードの作成
ソースコードを更新し、プラグインを作り込んでいく。
開発中に調べたことや、気づいた点をいくつか挙げる。
- Obsidian アプリの CSS 変数は ドキュメント で確認できる。
- 開発ツールのコンソールで
this.app.emulateMobile(true);を実行するとモバイル表示をテストできる。 getIconで使用するiconIdは Lucide アイコンの id。- ページナビゲーションを利用したかったので
setStateを使ったり View を切り替えたりしてみたが、履歴にはプッシュされなかった。 - Menu コンポーネントのモバイル表示はフォーカストラップが効かない。
コミュニティへの公開
アプリからインストールできるようにするために、コミュニティへプラグインを公開する。
ここからは GitHub と Obsidian のアカウントが必要になる。
ネットで公開方法を調べると「obsidian-releases をフォークして〜」という手順がヒットするが、現在はその方法は使えない。
最新の情報は ドキュメント を確認するのが確実だ。
- GitHub にプラグインを公開する。
- リリースを作成する。GitHub Actions を利用すると楽。
- community.obsidian.md で Github アカウントをリンクして、リポジトリの URL を使ってプラグインを提出する。
- レビューのフィードバックに対応して合格すれば、無事にアプリからインストールできるようになる。
実を言うと、私はこのレビューで一度詰んでいる。原因は、manifest.json の id に obsidian という単語を含めてしまっていたこと。わからないことがあるときしかドキュメントを読んでいなかったので、完全にスルーしていた。
ルール通りに id を変更したところ、今度は次のようなエラーに遭遇した。
The plugin ID in manifest.json (tickban) does not match the existing plugin ID (obsidian-tickban)id を途中で変更したせいでエラーになってしまった。おそらく、プラグインを提出した時点で id が固定され、リポジトリと紐づいてしまう仕様なのだろう。
プラグインを一度削除して再提出しても、このエラーは解消しなかった。新しくリポジトリを作り直して提出すれば解決したかもしれないが、今回は試していない。
Obsidian の Discord サーバーで同じ問題を抱えている人を探してみたら、すぐに見つかった。スタッフの方が個別にプラグインを削除して対応していたので、私も同じように削除をお願いしたところ、無事に提出し直してコミュニティに公開することができた。
おわりに
もしプラグインの公開を考えているなら、同じ轍を踏まないよう id 設定には気をつけてもらえると嬉しい。
今回制作したプラグイン「TickBan」は、Vault 内のファイルからタスクを収集してカンバン形式で管理できるものだ。興味があればぜひ使ってみてほしい。