—
Notion Formulas 2.0:ネストの地獄を脱却し、エンジニアリングの視点で構築する「自動進捗評価エンジン」
開発現場のベロシティを停滞させる最大の要因は何か? それは「情報の解釈」に費やされる非生産的な時間だ。
「このタスクは期限が近いが、ステータスは『進行中』だ。果たしてリスクは高いのか、それとも順調なのか?」
こうした判断をメンバー個々の主観に委ねているうちは、チームの同期コストは下がらない。我々エンジニアが目指すべきは、「データの状態からリスクを自動演算し、一目で意思決定を促すドキュメント設計」である。
2023年に刷新されたNotion Formulas 2.0は、単なる機能改善ではない。それはNotionを「リレーショナルな計算機」へと昇華させた。今回は、`let()`関数と`ifs()`関数を駆使し、プロジェクトの「不確実性」を可視化する極限の数式設計を伝授する。
—
1. Formulas 2.0がもたらしたパラダイムシフト
従来のNotion数式は、Excelの古い関数のように、複雑な条件分岐を書こうとすると`if(if(if(…)))`という、メンテナンス不能な「ネストの地獄」に陥っていた。
Formulas 2.0の核心は以下の3点にある:
1. `let()` 関数による変数定義: 計算結果を変数に格納し、再利用できる。可読性と計算速度が劇的に向上した。
2. `ifs()` 関数によるフラットな条件分岐: 優先順位に基づいた評価を上から順に記述できる。
3. ドット記法への移行: `prop(“Status”)` ではなく `Status`(または `prop(“Status”)` の省略形)でプロパティに直接アクセス可能になり、コードとしての美しさを手に入れた。
—
2. 実践:プロジェクト・リスク評価マトリクスの構築
目標は、「ステータス」「期日」「優先度」の3軸から、現在のタスクのリスクを5段階で自動判定し、視覚的な警告を出すロジックの構築だ。
実装する数式(Notion Formula)
以下のコードを数式プロパティに流し込んでほしい。これは単なる分岐ではなく、エンジニアがコードを書く際のアプローチと同じ設計思想に基づいている。
/
- @description: タスクのリスク度を自動算出し、視覚的インジケータを出力する
- @logic:
- 1. 完了済みは一律「Done」
- 2. 期限超過かつ未完了は「CRITICAL」
- 3. 期限が3日以内かつ優先度「高」は「HIGH RISK」
- 4. それ以外は進行度に応じて「NORMAL/STABLE」
/
let(
/ 変数定義:現在の日付と残り日数の計算 /
daysRemaining, dateBetween(Deadline, now(), “days”),
isOverdue, Deadline < now() and Status != "Done",
/ メインロジック:ifsによる優先判定 /
ifs(
Status == "Done", "✅ Complete",
isOverdue, "🔥 CRITICAL: Overdue",
Status == "Blocked", "🚫 BLOCKED",
/ 複合条件によるリスク判定 /
daysRemaining <= 3 and Priority == "High", "⚠️ HIGH RISK: Tight Deadline",
daysRemaining <= 0, "🔔 Due Today",
daysRemaining < 7, "🏃 In Progress",
/ デフォルト値 /
"🟢 Stable"
)
)
この数式のポイント
- `let`による抽象化: `dateBetween`を何度も計算させるのはリソースの無駄だ。変数に閉じ込めることで、ロジックの変更(例:期限の定義を「時間」に変える等)が1箇所で済む。
- `ifs`による順序制御: 上にある条件ほど優先される。これにより、「完了しているなら、期限超過を無視する」といった排他的論理を簡潔に記述できる。
—
3. ダッシュボードの視覚的UXを極める
数式で文字列を出すだけでは不十分だ。エンジニアリングチームのダッシュボードには、「直感的な色」と「バー」が必要だ。
進捗率を可視化する際、単なる数字ではなく、以下のテクニックを使って視覚的なプログレスバーを生成する。
/ 進捗率を10段階のバーで表示する /
let(
percent, Progress / 100,
barLength, 10,
filled, round(percent barLength),
empty, barLength – filled,
/ 繰り返し関数を用いたバーの生成 /
repeat(“🔵”, filled) + repeat(“⚪”, empty) + ” ” + format(Progress) + “%”
)
これをリストビューやギャラリービューに配置することで、マネージャーは1秒でチームの詰まりを検知できる。
—
4. 開発効率をブーストする隠れたTips
神ショートカット
- `Cmd(Ctrl) + L`: 特定のブロックやページへのリンクを一瞬でコピー。これをSlackに貼るだけで、コンテキストの共有速度が2倍になる。
- `Cmd(Ctrl) + Shift + L`: ダークモード/ライトモード切り替え。深夜のデバッグ作業には必須だ。
- `[[`: ページリンクのインライン作成。ドキュメント間の相互参照(双方向リンク)を呼吸するように行う。
推奨ブラウザ拡張(神プラグイン)
1. Notion Boost: アウトライン(目次)の常時表示、数式プロパティの等幅フォント化など、エンジニア向け機能が満載だ。
2. Save to Notion: フォーム形式でWebサイトをスクラップできる。GitHubのIssueや技術記事を特定のデータベースに即座に流し込む。
—
5. チーム開発における「Notion-as-Code」の運用ルール
情報のサイロ化を防ぐため、以下の運用ルールをチームの `README.md` に定義せよ。
データベース設計の命名規則
プロパティ名に全角文字を使うのは極力避けるか、論理名(英語)を意識する。API連携や数式での記述時に、タイポによるバグを防ぐためだ。
- ❌ `期限(最終)`
- ⭕ `Deadline_Final`
スキーマのドキュメント化(YAML構成例)
データベースのプロパティ定義を、コードベースと一緒に管理することを推奨する。以下は、Notion APIで同期を行う際のスキーマ定義のベストプラクティスだ。
notion_schema.yaml
databases:
project_tasks:
id: “uuid_here”
properties:
Task_Name: { type: “title” }
Status:
type: “select”
options: [“Backlog”, “In Progress”, “Blocked”, “Done”]
Priority:
type: “select”
options: [“High”, “Medium”, “Low”]
Deadline: { type: “date” }
Risk_Score:
type: “formula”
expression: “Refer to formula_v2.js” # 数式は外部ファイルで管理
—
結論:ドキュメントは「生きているコード」である
Notionの数式プロパティ2.0を使いこなすことは、単に見た目を整えることではない。「チームの状況」という動的なデータを、いかに低コストで「次のアクション」に変換するかという、エンジニアリングそのものだ。
`let` で定義し、`ifs` で裁き、視覚的に警告せよ。
この仕組みが導入された瞬間、あなたのチームから「あのタスク、今どうなってる?」という無駄なメンションは消滅し、真に集中すべき開発作業へとベロシティがシフトするだろう。