🛠️

開発チームで使っているNotionのスプリントボードを魔改造した話①

2024/12/06に公開

はじめまして。
BABY JOB株式会社 開発部手ぶら登園開発課の こめつぶ です。
弊社では、チーム制を導入し、スクラムで開発を行っています。
スクラムとは、アジャイル開発手法の一つで、短い期間(スプリント)でソフトウェアを開発する手法です。
手ぶら登園開発課では 1スプリント=1週間 として、日々ビジネスからの要望による機能の追加や改修を行っています。
今回は、そんなスプリントでの作業を管理するために使用しているNotionで私がしれっと(勝手に)やっている魔改造について紹介したいと思います。

はじめに

手ぶら登園開発課全体では、NulabのBacklogをプロダクトバックログとして使い、そこではユーザー価値単位で課題を管理しています。
一方、スプリントで課題を達成するためにプロダクトバックログを細分化したタスク(スプリントバックログ)については、チーム毎に自分たちに合った方法で管理をしていました。
私が所属するチームでは、2024年9月頃からNotionの課題管理テンプレートを用いてスプリントバックログの管理を行っています。(私たちはこれをスプリントボードと呼んでいます。)
毎日このスプリントボードを見て、何が残っているのか、何を先にやらないといけないのかを管理しています。

そんな中、やはり出てくるのが、「この辺が自動化できたらいいのに」「これ、地味に見づらい」などなどのモヤモヤです。
テンプレートはあくまでテンプレート。
私たちが求めている部分を完全に提供してくれているわけではないのです。
で、行きつく先は Do It Yourself です。

本題に入る前に

今回この記事を書くに至ったきっかけは、チームで使用している課題管理テンプレートです。
こちらについて、後述するモヤモヤや魔改造の前提にもなるので少しだけ紹介します。

こちらのテンプレートは Notion が提供している課題管理のためのテンプレートで下記のような特徴があります。

  • プロジェクトタスクスプリントの3つのデータベースで構成されている
  • タスク(ページ)にはステータスやスプリントなどのプロパティがあり、それらによって進捗や実施するスプリントを管理することができる
  • タスク(ページ)に対して独自のプロパティを定義することができる
  • タスク(ページ)には親子関係を持たせることができる

また、Notionのデータベースの表示形式として以下のものがあります。

  • テーブル
  • ボード
  • タイムライン
  • カレンダー
  • リスト
  • ギャラリー
  • チャート

私のチームでは、下記のように タスクのデータベースの内容をボード形式で表示させています。

使い始めて出てきた数々のモヤモヤ

では、いったいどんなモヤモヤが出てきたのか。
大きなものを挙げると、下記のようなものがありました。

  1. 親子関係のあるタスクを作った場合、親タスクのステータス更新はサブタスクに従て更新してほしい
  2. ビューが多すぎるとどれが何か分からなくて、見づらい
  3. 日々の業務で使っているものを集約したい
  4. 担当者が複数いる場合、誰が実施済みかの管理を手軽にしたい

これらは、使い方に慣れた1ヶ月ぐらい経った時点で出てきていました。
(こういうことを共有できるチームはとても素敵です。自画自賛。)
これらをNotionのボタンなどを駆使して解消しました。
メンバーはこの行いを 魔改造 と呼んでくれています。

魔改造①:親タスクのステータス更新ボタン

背景

一つ目のモヤモヤに対する魔改造です。
例えば、下記のような親子関係のあるタスクがあったとします。

親タスク(保護者が登録したパスワードを変更できるようにする)
 ├ サブタスク①(パスワード変更画面を作成する)
 ├ サブタスク②(動作確認をする)
 └ サブタスク③(レビューをする)

この場合、親タスクは「サブタスクをまとめるためのタグ」のような状態になり、サブタスクは動くものの、長時間 進行中 のステータスに置かれることになります。
(動きかない親タスクがずっと 進行中 のステータスで表示されるので「実際に進行中になっているタスク」が分かりにくくもなります)

そのため、チームではサブタスクのある親タスクはスプリントボードに出さないようにしています。

ただ、そうなると、スプリントボード上に出ていない親タスクのステータスの更新を行うために、「サブタスクを開く→親タスクを開く→ステータスを更新する」という作業をとても手間に感じるようになりました。
そこで、ボタンアクションを使ってこれを解消しました。

やり方

Notionのボタンのアクションでできることは「データベースのテーブルのレコードを編集する」イメージと思っています。
なので、これを意識して、対象のレコードを絞り込むために必要なプロパティなどを用意します。

  1. タスクに 未完了のサブタスク の有無を判定するプロパティを追加します。
    数式を使えば、サブタスクの状態を取得することができるので、下記のような数式を設定します。
empty(prop("サブタスク").find(current.prop("ステータス") != "完了"))

  1. 同様に 進行中のサブタスク の有無を判定するプロパティを追加します。
    未着手 の状態を省きたいので、未完了のサブタスク の方と似たようなプロパティですが、作成しました。
empty(prop("サブタスク").find(or(current.prop("ステータス") == "進行中", current.prop("ステータス") == "保留中")))

  1. ボタンをスプリントボード上に追加します。
  2. ボタンのアクションで「ページを編集」を選択します。
  3. データベースで「タスク」を選択します。
  4. フィルター設定で下記の設定をします。
    1. 未完了のサブタスク=なし
    2. 親タスクが未入力
    3. サブタスクが未入力でない
    4. ステータスが 未着手進行中保留中と一致
  5. ステータスを 完了 にするよう設定します。
    これで、サブタスクに未完了のものがない=全てのサブタスクが完了している親タスクを 完了 にすることができます。
  6. 同様に、フィルター設定で下記の設定をします。
    1. 進行中のサブタスク=あり
    2. 親タスクが未入力
    3. サブタスクが未入力でない
    4. ステータスが 未着手と一致
  7. ステータスを 進行中 にするよう設定します。
    これで、サブタスクに進行中のものがある親タスクを 進行中 にすることができます。
  8. 最後に、完了ボタンを押して完成です。

このボタン自体は必要があればポチポチ押して問題ないので、押しやすい場所に置きます。
チームでは、スプリントボードの上部にこういったボタン類はまとめています。

魔改造②:ビューのポップアップ表示

背景

二つ目のモヤモヤに対する魔改造です。
データベースと紐づけたビューって色々種類がありますよね?

ただ、一つのデータベースに対して色々なフィルターや見せ方ができるので、ついついビューが増えてしまいます。
(多すぎると「他1件」としてまとめられてしまいました)

すると、

  • 「他X件」を押さないと見えない!
  • どれがどれか分からない!

となってきました。
そこで、こちらでも、ボタンアクションとページを使って解消しました。

やり方

やり方はいたってシンプルです。
別ページを作成して、そこにビューを作成して、ボタンのポップアップで表示するだけです。
例えば、現在の進捗率を表示する円グラフを出したいとします。

  1. 適当にページを作成します
  2. そのページ内にデータベースと紐づけたビューを一つだけ置くきます。
  3. ボタンを用意して、作成したページをポップアップ表示するように設定します。

このボタンをスプリントボードの近くにおいたらこのように開くことができます。

まとめ

如何だったでしょうか?
今回紹介した2つの魔改造では、下記のようなことを考えながらすることでできる範囲が増え、見通しが良くなりました。

  • データベースのテーブルをイメージして、それらをフィルターするにはどうするのか?を考えると作業しやすい
  • 1レコードで処理できるように数式プロパティで情報を用意すればできることが増える
  • カードの更新などをしないビューなどは別ページに分ける

今回紹介できなかったモヤモヤに対する魔改造についても 18日目 で紹介予定です。
こちらも是非ご覧ください。

BABY JOB  テックブログ

Discussion