BLOG.HIRO UENO.ART
← INDEX

丸ごと待たない、丸ごと作らない

Handler(ハンドラー。タスクとスケジュール管理アプリ)は自分用に作っているアプリで、コーディングしてくれているClaude Code(以降Code)と一緒に作っている。今回は、ガントチャート(予定を横棒で並べる表)にマイルストーンを足す話。マイルストーンは、いくつかのタスクをまとめた節目のゴールのこと。期日と達成率を持っている。

この機能では、全部やるか全部やめるかの二択にしなかった所が2つあった。1つは、手間のかかる見た目を丸ごとは作らなかったこと。もう1つは、作業を丸ごとは待たなかったこと。

手間のかかる見た目は、使えると分かるまで作らない

Handlerにはこの機能を作るタスクが登録してあって、その説明欄には僕が前に書いておいたメモがあった。ガントチャートでは期日に縦線か◆を出す。ガントチャートの左側に並ぶタスクの一覧では、マイルストーンをまとめの行(マイルストーンを見出しにして、その下に紐づくタスクを並べる形)にする。紐づくタスクが全部終わったら達成、期日を過ぎたら赤。

Codeにこれを読んでもらうと、決めないといけない点をいくつか挙げてきた。その1つが、まとめの行にするのか、タスクと同じ行にするのか、だった。

僕の答えはこうだった。狙いは2つで、ゴールが目立つこと。それと、マイルストーンで絞り込んだら、関連するタスクだけが出ること。まとめの行は、作るのにそれなりに手間がかかりそうで、作っても使えなかったらもったいない。最初は普通のタスクみたいに、他のタスクと一緒に並んでいればいい。ガントチャートでも、タスクと同じように開始日から期日までの横棒を引く。縦線も大変なら今はいらない。横棒の最後に目立つアイコンがあればいい。

Code「まとめの行は後回しにして、まずタスクと同じ行で出すのでいいと思います。先に使ってみれば、まとめの行が要るかどうか判断できるので」

Codeが出した作り方の案も軽かった。マイルストーンを新しい仕組みとして一から作るのではなく、「種類=マイルストーン」の印が付いたタスクにする。そうすれば、一覧の表もガントチャートも、タスクを開いた時の詳しい画面も、今あるものをほぼそのまま使える。

別の会話でも同じアプリを作業中だった。待った方がいいか

中身が決まったところで、1つ気になることがあった。

僕はCodeと、同時にいくつかの会話(スレッド)を開いて作業することがある。この時も、別の会話ではCodeがHandlerの別の作業を続けていた。同じアプリを2か所で直していることになる。なので、この会話の作業は待った方がいいかな、とCodeに聞いた。

Codeの答えは、待つか進めるかの二択ではなかった。

Code「設計は今やって大丈夫です。実装は待った方がいいです」

ここでいう設計は、何をどう作るかを文章にまとめることで、書く先はタスクの説明欄。コードには触らないので、別の会話とぶつからない。実装はそうはいかない。Codeによると、今回いじるのはデータを保存する部分と、一覧の表とガントチャートで、Handlerの中心になる所。別の会話が同じファイルを触っている可能性が高い。

もう1つ、Codeはgit(変更の記録を取る仕組み)の話を挙げた。同じフォルダ(リポジトリ)で作業している会話どうしは、記録する前の変更を同じ場所に置いている。

Code「両方が作業している最中にどちらかが記録すると、相手の変更まで混ざって記録される事故が起きることがあります」

全部は止めず、ぶつかる所だけ待った

書く前に、Codeは念のため別の会話の様子を確かめた。別の会話はちょうど、今回いじる予定のファイルを4つ、まだgitに記録しないまま触っていた。それでCodeは設計だけを書いて、タスクの説明欄の最後に書き足した。

全部待っていたら、設計まで止まっていた。全部進めていたら、同じ4つのファイルを2か所で同時にいじって、さっきの「相手の変更が混ざる事故」が起きかねなかった。

出来たのは、最初に決めた軽い形

夜になって、別の会話の作業が終わった。それをCodeに伝えると、Codeが実装して、僕が普段使っているHandlerに入れた。

マイルストーンは普通のタスクと同じ行に並び、名前の右に達成率が出る。ガントチャートでは横棒の右端に◆が付いて、期日を過ぎたら赤、終わったら緑になる。絞り込みでマイルストーンを選ぶと、マイルストーン自身と、それに紐づくタスクだけが残る。

Codeの報告の最後には、今回入れていないものも並んでいて、まとめの行と縦線もそこに入っている。作らなかったのは、手間のかかる見た目。待ったのは、別の会話とぶつかる実装だけだった。