Skip to main content
  1. Entry/

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

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 でのタスク管理についてもそのうち書く。