![見出し画像](https://assets.st-note.com/production/uploads/images/159120262/rectangle_large_type_2_1996077e3612ab2ef050fbb888b066d2.jpg?width=1200)
【Obsidian】カスタマイズしたプラグインを使ってみる
はじめに
前回はObsidianのDynamic Timetableプラグインのソースコードを自分用にカスタマイズしました。
今回は、改造後プラグインをビルド後にObsidian上で動作確認していきます。
環境の準備
まず、Node.jsとnpm(Node Package Manager)がインストールされている必要があります。以下のコマンドが使えるかどうかを確認してください。
node -v
npm -v
もしインストールされていない場合は、下記のNode.jsの公式サイトからインストールできます。
私の環境では、両方のコマンドともなかったので、インストールしました。
![](https://assets.st-note.com/production/uploads/images/159062204/picture_pc_11c380107ebaf53e7ee7a9d7d95405a6.png?width=1200)
インストーラをダウンロードし、インストールします。完了後、先ほどのコマンドを実行して確認します。
node -v
>v20.17.0
npm -v
>10.8.2
両コマンドとも通るようになったので、プラグインをビルドしていきます。
プラグインのビルド
プラグインの依存関係をインストール
プラグインのディレクトリに移動し、「npm install」コマンドを実行します。
cd /path/to/your/plugin
npm install
これにより、「package.json」で指定されている依存関係がインストールされます。
プラグインのビルド
次に、「npm run build」コマンドでプラグインをビルドします。
npm run build
このコマンドは、srcフォルダ内のTypeScriptファイルをコンパイルして、「main.js」などのファイルを生成します。
【参考】エラーが発生したので対処
修正したDynamic Timetableをビルドした時、StatisticsViewComponent.tsxファイルのTaskParserクラスの引数が不足している事によるエラーが発生しました。具体的には、TaskParserクラスのコンストラクタに渡されるべき引数の一つ「showUntilRegex」が欠けていました。クローンしてきたソースコードにバグがあったようです。
したがって、TaskParserのインスタンス生成の箇所を下記のように修正します。
const performance = new TaskParser(
plugin.settings.taskEstimateDelimiter,
plugin.settings.startTimeDelimiter,
plugin.settings.headerNames,
plugin.settings.dateDelimiter,
plugin.settings.categoryColors,
plugin.settings.showCategoryNamesInTask,
plugin.settings.showUntilRegex // ここに引数を追加
).getCategoryPerformance(tasks);
この修正を行い、「npm run build」コマンドを実行すると、ビルドできました。
プラグインをObsidianで動かす
ビルドが完了したら、以下の手順でプラグインをObsidianにインストールします。
プラグインフォルダのコピー
ビルドされたプラグインを、Obsidianのプラグインフォルダにコピーします。「Obsidian/plugins」フォルダに、プラグインのフォルダをコピーします。オリジナルのプラグインのフォルダは別の場所に移動させておいてください。
プラグインのフォルダには、ソースコードの全てをコピーしてもいいですが、以下の4つがあればとりあえずOKです。
data.json
main.js
manifest.json
styles.css
main.jsはビルド時に生成されます。プラグイン名を変更するなどしたい場合は、manifest.jsonを変更すればOKのようです(ここは特にいじっていないので詳細は把握していません、すみません)。
data.jsonは設定は現在の状態などを保持しているファイルのようなので、これに関しては、オリジナルのプラグインのフォルダ内に存在する同名のファイルをコピーしてくる方が良いです。
プラグインの有効化
Obsidianを開き、設定をクリックします。すでにObsidianを開いている場合は、再度開き直す必要があります。
「コミュニティプラグイン」中の「インストールされたプラグイン」内で、対象のプラグインが有効になっているかを確認します。
プラグインの動作確認
修正後のプラグインが使えるようになったので、動作確認をします。以下のようにタスクがある場合で試します。
![](https://assets.st-note.com/img/1731326404-02VAdW6xIk3gjaYKfLqXPSnN.png)
まずは、タスクの完了時。元々設定していた見積時刻が残された上で、実績時間が記録されています。
![](https://assets.st-note.com/img/1731326532-wE34lZekAD96UOs5n2FPmJtW.png)
次に、タスクの中断時です。一つ目のタスクは完了となり、同名のタスクが生成されています。生成されたタスクは、残り時間が見積時間として設定されています。
![](https://assets.st-note.com/img/1731326569-tLrVOgf5KikDRUHpA0xnumJ1.png)
所望の動作ができているようなので、カスタマイズ成功です。
終わりに
カスタマイズしたObsidianのプラグインのソースコードを用いてプラグインをビルドし、実際にObsidian上で動作確認しました。
これまで自分の要望に合うように半ば無理矢理な使い方をしていましたが、カスタマイズしたことで楽に使えるようになりました。修正としては微々たるものではありますが、手間が省けて使い勝手が良くなったように思います。
今回修正した内容が非常に単純だったのでサクッと実施することができましたが、もう少し難易度が高そうな内容にもチャレンジしてみたいところです。