タスク管理アプリの要件を何度か読み直していました。

最初は、指摘を直して仕様書が整えば、ひとまず次へ進めると思っていました。

実際には、仕様書の矛盾が減ったあとに、実装側で確認したいことが増えました。

要件レビューで残ったもの

v0.4では、前回までに見つけた大きな指摘は一通り解消できました。

組織とユーザーの所属、ゲストの扱い、アクセス失効、ジョブのリース、サブタスクの深さ、ガントの性能条件などが少しずつ揃っています。

それでも、組織から人を外した時にプロジェクト側の所属をどうするか、通知の重複排除キーに受信者を含めるか、期限を朝9時以降に変えた時の扱いなど、細かい論点は残りました。

重大な矛盾ではありません。

ただ、こういう細かいところは、あとで実装すると確実に出てきます。

M2の仕上げから始めた

実装では、まずM2の残りを進めました。

メンバー管理、変更履歴、エラーバウンダリ、カンバン列の仮想スクロール、カスタム項目のCSVと検索、行のドラッグ&ドロップなどです。

ひとつひとつは別機能に見えます。

でも、タスクが増えた時に一覧が重くならないこと、誰が変更したか分かること、失敗した時に画面全体が壊れないことは、どれも運用に入ると必要になりそうな部分です。

「作成・編集ができる」だけでは足りないところが見えてきました。

M3で依存関係とガントを触る

M3では、FS依存関係のAPI、サブタスクと期間のロールアップ、ガントのスナップショット、リアルタイム更新、ベンチマークまで進めています。

依存関係は、画面上で線を引ければ終わりではありません。

循環を許してはいけないし、移動した時にどこまで検証するかも決める必要があります。

サブタスクの期間も、親タスクに表示する値をどこで計算するかで、APIと画面の責務が変わります。

仕様書を読んでいる時は簡単そうでしたが、実装してみると状態が増えます。

ベンチマークを先に置く

ガントは、少ないデータなら普通に表示できます。

問題は、タスク数が増えた時です。

そこで、機能を作ってから最後に速さを見るのではなく、スナップショットやベンチマークを一緒に置くことにしました。

何件までをどのくらいで表示したいのかが曖昧なままだと、「動いたけれど遅い」という話になりやすいからです。

まだ最終的な性能評価が終わったわけではありません。

ただ、計測の入口があるだけでも、後から感覚だけで判断しなくて済みます。

おわり

要件レビューは、実装前に正解を作る作業ではありませんでした。

実装して初めて、仕様書の中に書かれていない状態や境界が見えてきます。

なので、レビューを終えたら仕様書を閉じるのではなく、実装で出た論点をまた戻していくのが良さそうです。

M3はまだ途中ですが、単純なタスク一覧から、依存関係や履歴、性能まで考える段階に来ました。

作るものが増えたというより、見る場所が増えた感じです。