よしなに日付を指定してDaily Noteを開くプラグイン Open That Day を作った

Posted on Feb 12, 2024

Open That Day という Obsidian プラグインを作った。

https://github.com/handlename/obsidian-plugin-open-that-day

これは何?

tomorrow とか next mon とか 昨日 とか 2/14 とか、 言葉で指定して対応する Daily Note を開くプラグイン。

READMEにあるデモ動画も合わせてご覧ください。

モチベーション

いままで Todoist でやっていたタスク管理を、Obsidian 上で試している。 Daily Note にその日やるタスクを書く方式。

「このタスクは明日やろう」あるいは「週明けに持ち越そう」となったときに、 その日の Daily Note を開きたいのだが、Obsidian 単体ではできない。 コミュニティプラグイン Calendar を使い、 カレンダーで指定の日付をクリックすればできるが、できればキーボード操作で完結させたい。

ついでに「明日」「週明け」のような頭の中の言葉で日付を指定したい。

ということで練習がてら Obsidian のプラグインを作ってみることにした。

実装

公式のサンプルプラグインをテンプレートとして使い、 Daily Note を開く部分はコミュニティプラグイン Calendar を、 キーワードから日付を特定する部分は Natural Language Date を それぞれ大いに参考にさせてもらった。

日付を特定する処理は Natural Language Date でも使っている chrono-node を利用している。 このためパースできるキーワードは choron-node 依存。 とりあえず window.moment.locale を見て英語と日本語のパーサーを使い分けるようにしてみたが、 日本語のパーサーは対応するワードが少ないのでもっぱら英語パーサーばかり使っている。

以下日付指定キーワードの例:

// 日付を直接指定
2024-02-14
3/9

// 英語
today
tomorrow
next week
next tue
last sunady

// 日本語
明日
昨日
今月1日
令和5年3月1日

今後の展望

シンプルな機能にとどめたいので、機能の拡張については考えていない。 対応言語を増やすのことは考えられるが、英語日本語以外は自分では使わないのであんまりモチベーションがない。 プラグイン開発の勉強ということで各言語パーサーのオンオフくらいはつけてもいいかもしれない。

chrone-node は日本語対応バリエーションが少なく、例えば「週明け」とか「翌月」などはパースしてくれないので、 こちらに Pull Request を送るのはありかもしれない。

余談

今回GitHubの release を作るにあたり、 action-gh-releasetagpr を利用させてもらった。 いままで release を作ると言えば Go で書いたものばかりだったので、 goxzghr を使っていたが、 今回は TypeScript のビルドが必要ということでワークフローを変えてみたという経緯。 tagpr、 バージョンアップ用の Pull Request を自動で作ってくれるのは楽ちんでよい。

おわり

エディタの拡張楽しい。

Obsidian でのタスク管理についてもそのうち書く。