当ブログではアフィリエイト広告を利用しています

obsidianのpomodoroTimerの自分流の使いかた

obsidianのプラグインはざっくりわかっている人向け。
前提のように出てくるdataviewとthinoがいます。

結論

  • 小説や感想ブログの作業数をデイリーノートに記録
  • 作業にかかった時間を後から一覧で見られるようにし、だいたいどの作業にどのぐらいの時間がかかるのかを概算でわかるようにする

どのプラグインの話?

こいつ。obsidianのコミュニティプラグインのなかで「pomodoro timer」で検索すると出る。

具体的な設定

普段はthinoを使用し、thinoにポモドーロの作業ログも表示しようとしてる人間の方法。
thinoで見れるようにしてるのは特に大きな意味はないです。

thinoなしだったら基本の設定だけで行けるかも。

コミュニティプラグイン内での設定画面

読めない部分がある場合は、スクショ取ってgoogle翻訳の画像を翻訳に突っ込みました。

主に設定してるのは下記の三箇所。

Logで、Log Fileの保存場所はデイリーノートに。
Log LevelはWorkのみ(いつまでも休憩してるなーというのを取っておきたくない)
Log Formatはカスタムで。

前述のGitHubを見ると最初から設定されているものの表示方法が書かれているので、それを見て好みのにしてもいいかも。
わたしはthinoに表示されるようにしたいため、またDataviewで計測するときにこうしたいなーというのがあるため変更しました。

カスタム記法の内容

これこそgeminiに作成してもらいました。
GitHubをコピペしてgeminiに貼り付けて、「obsidianのpomodoro timerのテンプレートがtemplaterで変更できるっぽいから、今から言う形式になるように書き換えて」みたいなことをいい、やりたいことをひとつひとつ順番に伝えて作業してもらいました。

完成形です。
実際の文面

- 17:37:45 🍅 (pomodoro::WORK) (name::感想ブログ) (duration:: 25m) (begin:: 2025-08-17 17:12) - (end:: 2025-08-17 17:37)

thino上の表記

<%*
// セッションが「作業(WORK)」の場合
if (log.mode == "WORK") {
  // タスクが関連付けられているかチェック
  if (log.task && log.task.name) {
    // タスクありの場合:ご希望の形式でログを生成
    tR = `- ${log.end.format("HH:mm:ss")} 🍅 (pomodoro::${log.mode}) (name::${log.task.name}) (duration:: ${log.duration}m) (begin:: ${log.begin.format("YYYY-MM-DD HH:mm")}) - (end:: ${log.end.format("YYYY-MM-DD HH:mm")})`;
  } else {
    // タスクなしの場合:タスク名を含まない形式でログを生成
    tR = `- ${log.end.format("HH:mm:ss")} 🍅 (pomodoro::${log.mode}) (duration:: ${log.duration}m) (begin:: ${log.begin.format("YYYY-MM-DD HH:mm")}) - (end:: ${log.end.format("YYYY-MM-DD HH:mm")})`;
  }
} else {
  // セッションが「休憩(BREAK)」の場合
  tR = `- ${log.end.format("HH:mm:ss")} 🥤 (pomodoro::${log.mode}) (duration:: ${log.duration}m) (begin:: ${log.begin.format("YYYY-MM-DD HH:mm")}) - (end:: ${log.end.format("YYYY-MM-DD HH:mm")})`;
}
%>

画面上での設定

画面上にポモドーロタイマーを表示してからの設定。

このタブ画面に、フォーカスしているファイルのタスクが表示される。この場合は「ポモドーロログファイル.md」というファイルに、感想ブログというタスクと小説書くというタスクがある。
やりたいものを選択すると、終了時に

- 17:37:45 🍅 (pomodoro::WORK) (name::感想ブログ) (duration:: 25m) (begin:: 2025-08-17 17:12) - (end:: 2025-08-17 17:37)

このname::部分に入る。
選択しなくてもできる。

なお、どうもフォーカスしているファイルのタスクしか選べないっぽい? 以前デイリーノートにタスクを羅列して選んでポモドーロタイマーを実行してから別のファイルを開いたら、選択が解除されてしまった。
この画面上では「ポモドーロログファイル.md」の左側にあるピンマークをチェックすると、別のファイルを開いてもこのファイルのタスクで維持されるっぽい。

こっちは時間などの設定。
わたしはAuto-Startにチェックを入れている。これにチェックをいれないと、Work時間やBreak時間の開始時に自分でボタンを押す必要がある。つまり休憩後だらだらといつまでも開始せずにだらけてしまう可能性がある……!!

ログファイルで結果を見る

GitHubにあるDataviewを参考に、自分が作業した内容も取得できればなーと考えて変更(そのためにログ自体の形式も変更)

```dataviewjs

const pages = dv.pages()
const table = dv.markdownTable(['name','Duration', 'Begin', 'End'],
pages.file.lists
.filter(item=>item.pomodoro)
.sort(item => item.end, 'desc')
.map(item=> {

    return [item.name,`${item.duration.as('minutes')} m`, item.begin, item.end]
})
)
dv.paragraph(table)

これで作業内容も記載される形に。

更に追加で

```dataviewjs
const pages = dv.pages();
const emoji = "🍅";
dv.table(
  ["Name", "Pomodoros", "Total"],
  pages.file.lists
    .filter((item) => item?.pomodoro == "WORK")
    .groupBy((item) => {
      if (item.name) {
        return item.name;
      } else {
        return "Unknown Date";
      }
    })
    .map((group) => {
      let sum = 0;
      group.rows.forEach((row) => (sum += row.duration.as("minutes")));
      return [
        group.key,
        group.rows.length > 5
          ? `${emoji}  ${group.rows.length}`
          : `${emoji.repeat(group.rows.length)}`,
        `${sum} min`,
      ];
    })
)

これで各作業自体の合計時間も記載される。

何がやりたいって、同人誌書くときに、「(本のタイトル) 1章本文」「(本のタイトル) 2章本文」「(本のタイトル) 校正」で計測できるようにしたい!!
この場合は本ごとにファイル作ってタスク内容を書いていきチェックする形がいいかも。

- [ ] (本のタイトル)プロット
- [ ] (本のタイトル)箱書き
- [ ] (本のタイトル)1章本文
- [ ] (本のタイトル)2章本文
- [ ] (本のタイトル)校正
- [ ] (本のタイトル)奥付
- [ ] (本のタイトル)威沙でPDF化

こんなかんじ。
自分の作業時間がわかると、別の本を書くときにどのぐらい作業時間が必要か概算で出せるので便利。

もちろんパソコン以外での作業もあるしタイマーをかけ忘れることもあるかもしれないが、それはそうとして無いよりはあったほうが絶対に地味に便利なのでおすすめ。