よしなに日付を指定してDaily Noteを開くプラグイン Open That Day を作った
Table of Contents
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-release と tagpr を利用させてもらった。 いままで release を作ると言えば Go で書いたものばかりだったので、 goxz と ghr を使っていたが、 今回は TypeScript のビルドが必要ということでワークフローを変えてみたという経緯。 tagpr、 バージョンアップ用の Pull Request を自動で作ってくれるのは楽ちんでよい。
おわり #
エディタの拡張楽しい。
Obsidian でのタスク管理についてもそのうち書く。