【実務・中級編】Notionの「数式プロパティ2.0」を活用した日付・時間の複雑な差分計算:稼働日ベースのタスク遅延アラートシステムの構築 – プロジェクト・ナレッジ管理活用バイブル

週末に殺されるベロシティを取り戻せ: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.

タイトルとURLをコピーしました