Skip to main content
  1. Entry/

Obsidian プラグイン topic-lines でタスク迷子を防ぐ

Agentic Coding で並列してコードを書かせていると、今自分が何をやっているのかがわからなくなることがある。 これを解消するために、「何をやっているのか」を明確にする Obsidian プラグイン topic-lines を作ったというはなし。

タスクはすべて Obsidianで管理 している。

環境の変化 #

Agentic Coding が一般的になりつつある。 職場でも Agent が関わっていない Pull Request を見つけるほうが難しい。 自分も初期設計・コーディング方針と最後の仕上げ以外は Claude Code などの Coding Agent に任せてしまっている。

Agent がコードを書いている間に別のタスクができるようになり、 その別タスクとして別の Agent にコーディングを指示し・・・と並列して Agent を動かすことも日常的な光景になりつつある。

先日は Claude Code の開発者が15並列でタスクをこなしている、なんて記事も話題になっていた。

並列作業の問題 #

Agent の並列稼働数を増やしていくと、今度はそれを管理するという仕事が生まれる。 2つまでならそれぞれのタスクを行ったり来たりするだけなので、まあなんとかなる。 が、3つ4つと増やしていくと「今何をやっているのか」がわからなくなってくる。

Agent にやらせていたタスクを失念して放置した結果、何をやらせていたのかが不明瞭になったり、 似たようなタスクの指示を混同したりする。 指示を出す Agent を間違えると、やり直しのためにコンテキストを消費するし、 どこまで戻すべきかまでは把握していなかったりするので中途半端な状態になってしまったり、 となかなかにめんどくさい。

人によって乗りこなせる並列数は異なるだろうが、自分の場合は3つで若干怪しくなってくる。 15並列なんて以ての外だ。

解決策としての topic-lines #

「今何をやっているのか」を忘れないために、これをメモするだけのプラグインを Obsidian 用に作った。 BRAT でリポジトリのURLを入れればインストールすることができる。

ノート内の任意の行をトピックとして登録し、それらをサイドメニューに表示するというもの。 登録したトピックをクリック、または表示されている番号に対応するコマンドを実行すると、オリジナルの行にジャンプすることができる。 機能としてはそれだけ。

サイドバーに「今何をやっているのか」を常時表示することでタスク迷子を防ぐ

実際には各コマンドに Hot Key を設定して、Cmd+Ctrl+LTopic Lines: Toggle current line を、Cmd+Ctrl+{数字}Topic Lines: Jump to topic {数字} を割り当てている。

より詳細な説明は README を見てほしい。 日本語 のものも用意している。

運用 #

topic-lines の各 topic を、タスクスロットとして運用している。 場合にもよるが、通常3つのタスクを「今やっていること」として登録している。 それ以上になると、明らかに自分のパフォーマンスが悪くなるので、4つ以上は「今はやらないこと」として topic からは削除している。 それらのタスクはタスクスロットが空き次第、再び topic として登録して意識を割くことになる。

各 topic の番号は、実際の作業を行う Alacritty のタブ、Zed の System Window Tab1 、そして作業対象 git リポジトリの worktree (-wt1, -wt2, …) に対応させている2。 topic 1番の作業は Alacritty と Zed の1番目のタブに割り当て、それぞれで worktree のディレクトリを開くようにしている。

これに Pomodoro メソッドを組み合わせて強制的に「今何をやっているのか」を確認する時間を作っている。

参考 #

nwiizo さんの以下の記事3から着想を得ている。

「微観察」という言葉だけから思いついたので、記事の意図するものとは異なるかもしれないが、 今の自分が何をやっているのかを観察する手段として作成したプラグインだ。

観察する際のヒントとして topic を使うことで、実際にはそれをやっていなかったとしても「今はこれをやっているんだな」と意識させ、 自分を集中するべきタスクに引き戻す効果を期待している。

おわりに #

topic-lines を使い始めて2週間ほど経つが、今のところうまく運用できていそう。 何をやっていたのかがわからなくなることはなくなったし、並列数を増やしすぎることもなくなった。

タスクを Obsidian 上で管理するというスタイルにもマッチしている。 Agentic Coding ありきで説明を書いたが、そうでなくとも「その日にやること」と「今やっていること」を分けて管理できるのは効果的に感じる。

今回のプラグインも、もちろん Claude Code 100% で作った。 もはや特定の何かを達成するためのプラグインを探して試して・・・を繰り返すよりも、 自分の好みをそのまま反映したプラグインをその場で作ってしまったほうが早いまである。 毎度のことながら便利な時代になったなーと思う一方、こいつらが現れなければ「タスク迷子」なんてことにも悩まなくてよかったのでは?

タブの切替ではなく、topic ごとに個別に space を割り当てるようにすればより切り替えが楽になるのでは、なんてことも考えている。 できるだけしんどくならない方法で、道具を有効活用しながら仕事をしていきたいところ。


  1. Zed 内蔵のターミナルを使えば Alacritty は不要になるかもしれない。 Alacritty では Zellij のセッションを開くことで1タブ内に1タスクに関する諸々を収めているのだが、Zellij を Zed内蔵ターミナルで開くとキーバインド(Alt+ に割り当てている)が奪われてしまうのでいったん保留としている。 キーバインドを変えるなりしてうまく共存できるようにすれば移行できるかも。 移行できれば作業環境の切り替えが Zed の System Window Tab 切り替えだけになるので少し楽になる。 ↩︎

  2. git-wt などを用いてタスクのたびに worktree を作る方法もあり、これを試したこともあったが、タスク迷子になりやすかったのでやめた。 ↩︎

  3. 今回の内容とは直接関係しないが、参考記事内の次の文に非常に共感できた。 「Slackの通知は基本的に無視している。見るのは準備モードのときだけだ。開発中や執筆中にSlackへ戻っていたら、何も進まない。通知は他人の優先順位だ。自分の優先順位を守れ。」 3タスクも並行して回している時に、いちいち Slack の通知なんか見ていられない。 見ないほうがパフォーマンスもよい。 なので自分も基本的には Pomodoro の休憩中にしか見ないようにしているが、案件が立て込んでいるとそれによってチーム全体の待ち時間が増えることになったりするので難しいところ・・・。 そもそも立て込まないのが一番なのだけど。 ↩︎