ObsidianでTaskChuteをやるために、プラグインを作った — Kozane Journal

created:

updated:

thumbnail

はじめに

以前、ObsidianでTaskChuteをやってみるという記事を書いた。DataViewやDataViewjs、Templaterを駆使してObsidian上でTaskChuteライクなタスク管理を実現する方法を紹介したが、しばらく運用してみていくつかの不都合を感じていた。

そこで、これらの課題をまとめて解決するObsidianプラグイン Kozane Journal を作った。

https://github.com/hiramoto/kozane-journal

以前のやり方で感じた不都合

元の記事のやり方は「ありものを組み合わせて実現する」というアプローチだったが、実際に日々使ってみるといくつかの問題があった。

DataViewの制約

  • フォルダ名に絵文字が含まれているとDataViewがエラーになる
  • 見出しに 08:00 - 10:00 のような時間枠を書くとコロンがエスケープされてしまう
  • DataViewのクエリ構文は独特で、やりたいことが少し変わるたびにクエリを書き直す必要がある

入力の煩雑さ

  • 開始時間・終了時間の入力にTemplaterスクリプトが必要で、仕組みが複雑
  • 所要時間の計算もTemplaterスクリプトでカーソル位置の行を正規表現でパースする必要がある
  • [start:: 08:26:22] [end:: 08:36:05] [duration::10] というインラインフィールドの記法は、読みやすいとは言いがたい

集計・可視化の限界

  • 終了予定時刻はDataViewjsで計算できるが、ファイルを開かないと見えない
  • タスクごとの作業時間の推移や、期間ごとの集計を見る仕組みがない
  • 日をまたいだタスクの作業履歴を追うことができない

これらを一つずつスクリプトで対処していくこともできたが、根本的に「Obsidianプラグインとして統合する」方が、シンプルで使いやすいものになると考えた。

Kozane Journalとは

Kozane Journalは、Obsidian上でタスク管理と作業時間記録を行うプラグインだ。名前の「こざね」は、文化人類学者・梅棹忠夫が『知的生産の技術』(1969年)で紹介した「こざね法」に由来する。小さな紙片に一つずつアイデアを書き出して並べ替え、構造を見出す手法で、日々の作業を一つずつ記録し、積み重ねたログを俯瞰するというこのプラグインの思想と通じている。

主な機能

1. タスクの作成

コマンドパレットからタスクファイルを作成できる。ファイルは YYYYMMDD-タスク名.md という形式でタスクフォルダに保存され、設定可能なデフォルトのフロントマターが自動挿入される。

フロントマターのテンプレートでは日付テンプレート式が使える。

  • {{date}} — 今日の日付
  • {{date+1d}}{{date+1w}}{{date+2m}} — 相対日付
  • {{title}} — タスク名

2. 作業の記録

コマンドパレットから「作業開始」でタスクを選択し、「作業終了」でメモを添えて記録する。記録はデイリーノートのLOGセクションに自動追記される。

以前のやり方で必要だったTemplaterスクリプトや、インラインフィールドの手動入力は不要になった。時刻の丸め(デフォルト5分刻み)も自動で行われる。

PLANセクションには 60min1h の形式で予定時間を書ける。取りやめになったタスクは取り消し線(~~テキスト~~)で除外できる。

3. ステータスバー

以前のDataViewjsスクリプトではデイリーノートを開かないと終了予定時刻が分からなかったが、Kozane Journalではステータスバーに常時表示される。

  • 終了予定時刻: 終了予定: HH:MM(残り: Xh XXm)
  • 作業中タスクのタイマー: タスク名 HH:mm(点滅アイコン付き、10秒ごと更新)
  • 昼休み(デフォルト12:00〜13:00)は計算から自動除外
  • PLANセクションに記載のあるタスクのみが残り時間の計算対象
  • ファイル変更時に自動更新

4. タスク作業履歴の自動表示

タスクファイルを開くと、過去の作業履歴がテーブルとして自動表示される。合計作業時間と作業日数も確認できる。Markdownポストプロセッサによる読み取り専用の表示なので、ファイル自体は変更されない。

5. サイドバーサマリー

サイドバーにタスクごとの作業時間の内訳を表示する。

  • 日付選択タブ: 「今日」ボタンまたはカレンダーから日付を選択
  • 期間選択タブ: 今週/先週/今月/先月のクイックボタン、またはカスタム期間の指定
  • タスクごとの作業時間・セッション数の内訳
  • 期間表示では作業日数も表示

以前のやり方との比較

項目 以前のやり方 Kozane Journal
依存プラグイン DataView + Templater なし(単体で動作)
時刻の入力 Templaterスクリプト コマンドパレットから選択
所要時間の計算 スクリプトで正規表現パース 自動計算
終了予定時刻 DataViewjs(ノート内表示) ステータスバーに常時表示
タスク履歴 なし 自動表示
期間集計 なし サイドバーで対応
設定変更 スクリプトを直接編集 設定画面から変更

インストール

GitHubのリリースから main.jsmanifest.jsonstyles.css をダウンロードして .obsidian/plugins/kozane-journal/ に配置し、Obsidianの設定で有効化する。

https://github.com/hiramoto/kozane-journal

おわりに

元の記事を書いたときは「ありものを組み合わせればなんとかなる」と思っていたが、日常的に使い続けると細かな不便が積み重なっていった。Kozane Journalは、その不便を一つのプラグインに昇華させたものだ。AIによるコード生成を活用することで、Obsidianプラグインの開発という、以前であればハードルが高かった手段を取ることができた。

タスク管理の手法や好みは人それぞれだが、Obsidian上でTaskChuteライクな運用をしたい人にとって、参考になれば嬉しい。