週末に殺されるベロシティを取り戻せ:Notion Formulas 2.0で作る「真・稼働日ベース」の遅延監視システム
エンジニアリング・マネジメントにおいて、最も愚かな嘘は何でしょうか? それは「カレンダー上の7日間と、開発の7日間が等価である」という前提です。
標準的なプロジェクト管理ツールの多く、そして初期のNotionプロパティは、土日という「聖域」を無視してデッドラインを計算してきました。金曜日に「あと3日」と表示されたタスクが、月曜日に「期限切れ」と赤く光る。この視覚的なノイズが、チームの危機意識を麻痺させ、ベロシティを削ぎ落とすのです。
本日は、Notion Formulas 2.0の真の力を解放し、土日を除外した「純粋な稼働日」に基づいた、現場で震えるほど役立つ遅延アラートシステムの構築法を伝授します。
—
1. なぜ「Formulas 2.0」なのか:変数の導入と型定義の革命
従来のNotion関数は、ネストが深くなるほど可読性が死に、メンテナンス不可能な「スパゲッティ・コード」になりがちでした。しかし、Formulas 2.0では `let` 関数による変数定義と、リスト操作(`map`, `filter`)が可能になりました。
これにより、我々は「日付の配列を生成し、週末を除外してカウントする」という、プログラミング言語に近いロジックをNotion上で完結させることができます。
2. 実装:稼働日計算の極限フォーミュラ
以下のコードは、`Deadline(期限)` プロパティと現在時刻を比較し、土日を除いた残稼働日を算出。さらに、残り日数に応じてステータスアイコンを動的に変化させる究極の関数です。
/
- @title Business Day Latency Monitor (Notion Formula 2.0)
- @description 土日を除外した残稼働日を算出し、アラートを出力する
/
let(
/ 1. 開始日と終了日の定義 /
start, now(),
end, prop(“Deadline”),
/ 2. 開始日から終了日までの全日付をリスト化 /
daysBetween, dateBetween(end, start, “days”),
allDates, repeat(1, abs(daysBetween) + 1).map(index,
dateAdd(if(daysBetween >= 0, start, end), index – 1, “days”)
),
/ 3. 土日(0=日曜, 6=土曜)を除外 /
workingDays, allDates.filter(d, day(d) != 0 && day(d) != 6).length() if(daysBetween < 0, -1, 1),
/ 4. 出力ロジック:残日数に応じた危険度の可視化 /
ifs(
prop("Status") == "Done", "✅ Completed",
workingDays < 0, "🔥 Overdue: " + abs(workingDays) + "d",
workingDays == 0, "⚡ Due Today",
workingDays <= 2, "⚠️ Critical: " + workingDays + "d left",
"🔹 On Track: " + workingDays + "d left"
)
)
テックリードの視点:この関数の勘所
- `repeat().map()` のコンビネーション: 指定した回数分ループを回し、日付オブジェクトの配列を動的に生成しています。これがFormulas 2.0の最強の武器です。
- 負の数のハンドリング: 期限が過ぎている場合(`daysBetween < 0`)も考慮し、`abs()` と条件分岐で正確な超過日数を算出しています。
- 祝日の扱い: 本来は祝日API等と連携したいところですが、Notion単体では「祝日リスト(日付配列)」を別のDBで管理し、`filter` 内で `contains()` を使って除外するロジックを追加することで対応可能です。
—
3. 開発スピードを極限まで高めるNotion DX
ツールを使いこなすとは、キーボードから手を離さないことです。
隠れたキーボードショートカット
- `Cmd/Ctrl + L`: ページリンクをコピー(即座にSlackやPRに貼り付ける)。
- `Cmd/Ctrl + Option + 1-3`: 見出しレベルを瞬時に切り替え。ドキュメントの構造化を止めるな。
- `[[`: ページリンクのインライン挿入。ナレッジの網目(メッシュ)を作る基本動作です。
- `/math`: 数式ブロック(KaTeX)の挿入。仕様書に数式が必要な際に、思考を止めずに記述できます。
神プラグイン:Notion Boost
ブラウザ版Notionを使うなら Notion Boost は必須です。
- 目次(Outline)の常時表示: 長大な技術ドキュメントのナビゲーションを容易にします。
- 「トップへ戻る」ボタン: 地味ですが、数千行のナレッジベースでは生命線です。
—
4. チーム開発における「設定の共有化」ルール
情報のサイロ化を防ぐため、プロジェクトDBの設計図を「メタ・ドキュメント」として管理せよ。
プロパティ命名規則(JSON風管理)
プロパティ名は、エンジニアが直感的に理解できるよう、以下の命名規則を推奨します。
{
“system_id”: “ID (Unique)”,
“task_name”: “Name (Title)”,
“assignee”: “Assignee (Person)”,
“priority”: “Priority (Select: P0, P1, P2)”,
“calc_working_days”: “Formula 2.0 (The script above)”,
“ref_pr_link”: “PR (URL)”
}
設定ファイルのベストプラクティス(YAML構成例)
Notionのデータベース構成を、IaC(Infrastructure as Code)のようにYAMLで定義し、GitHubの `docs/` 配下に置いておくことで、プロパティの勝手な変更を防ぎ、設計思想をチームに継承します。
project_db_schema.yaml
database:
name: “Global Task Backlog”
description: “全開発チームのタスクを集約するSingle Source of Truth”
properties:
Deadline:
type: date
required: true
Status:
type: status
options: [Todo, In Progress, Review, Done]
BusinessDayAlert:
type: formula
logic: “Formulas 2.0 (See formula.js)”
alert_thresholds:
critical: “<= 2 days"
danger: "< 0 days"
---
5. 終わりに:ツールは「思考の外部化」である
Notionの数式プロパティをいじくり回すことは、単なる「凝り性」の仕事ではありません。それは、チームが直面する「現実の不確実性」を「計算可能な数値」へと変換し、意思決定のコストを下げる聖なる儀式です。
「土日を除いた本当の期限」が見えるようになったとき、チームのベロシティは初めて、ノイズのない真実の数字を刻み始めます。
このフォーミュラをあなたのワークスペースにデプロイしてください。そして、月曜日の朝に「不当な期限切れ」に怯えることのない、健全な開発リズムを取り戻しましょう。
Happy Coding, and High-Velocity Management.