こんにちは。チームの生産性を極限まで高めるナレッジマネジメントの探求、楽しんでいますか?
今日は、Notionという強力なキャンバスを「単なるメモ帳」から「意思を持つ自律型ダッシュボード」へと進化させる、魔法の杖をお渡ししましょう。
2023年、Notionの数式は「2.0」へと劇的な進化を遂げました。かつての数式は、Excelの古い関数のように括弧が入れ子になり、書いている本人ですら迷子になるような代物でした。しかし、今のNotionは違います。JavaScriptに近い柔軟性と、可読性の高い構文を手に入れたのです。
今回は、この「数式2.0」の目玉である`let()`関数と`ifs()`関数を使い倒し、プロジェクトの遅延リスクを自動で判定する「インテリジェント・リスクマトリクス」の作り方を伝授します。これが組めるようになれば、あなたのチームの進捗確認コストは劇的に下がり、ベロシティ(開発速度)は確実に向上しますよ。
—
1. なぜ「数式2.0」が現場のエンジニアを救うのか
かつてのNotion数式で複雑な条件分岐を作ろうとすると、こんな「地獄」に陥っていました。
`if(condition1, result1, if(condition2, result2, if(condition3, result3, “default”)))`
閉じ括弧がいくつあるか数えるだけで日が暮れてしまいますよね。数式2.0では、これが次のように変わりました。
- `ifs()` 関数の登場: `if`を何重にも重ねる必要がなくなり、条件と結果を並べるだけでよくなりました。
- `let()` 関数による変数定義: 同じ計算を何度も書く必要がなくなり、数式に「名前」をつけられるようになりました。
- ドット記法: `prop(“ステータス”)` と書かなくても、プロパティ名を直接指定できるようになり、コードが格段に短くなりました。
それでは、実際に手を動かして「現場で使える武器」を作っていきましょう。
—
2. 【実践】プロジェクト進捗の自動評価マトリクスを作る
目標は、「進捗率」と「期限」を掛け合わせ、プロジェクトが「安全」か「炎上寸前」かを、アイコン付きのテキストで自動表示させることです。
ステップ1:データベースの準備
まず、Notionのデータベースに以下のプロパティを作成してください。
1. 名前: 名前プロパティ(タスク名)
2. ステータス: ステータスプロパティ
3. 期限: 日付プロパティ
4. 進捗率: 数値プロパティ(パーセント形式に設定)
5. リスク判定: 数式プロパティ(←ここに魂を込めます)
ステップ2:数式を書く(Hello, Formula 2.0!)
「リスク判定」プロパティを開き、以下のコードをコピー&ペーストしてみてください。でも、ただ貼るだけではなく、中のロジックを一緒に読み解きましょう。
/
Notion Formula 2.0: プロジェクトリスク自動判定
1. 変数を定義して計算を整理 (let)
2. 複数の条件で優先順位をつけて判定 (ifs)
/
let(
/ — 変数の定義セクション — /
// 期限までの残り日数を計算(今日と期限の差分)
daysLeft, dateBetween(prop(“期限”), now(), “days”),
// 進捗率を数値として取得
progress, prop(“進捗率”),
/ — メインのロジックセクション — /
ifs(
// 1. 完了している場合は「完了」
prop(“ステータス”).name() == “Done” || progress >= 1,
“✅ 完了”,
// 2. 期限切れで未完了なら「最優先対応(炎上)」
daysLeft < 0,
"🚨 期限超過!至急確認",
// 3. 期限まで3日以内なのに進捗が50%未満なら「警告」
daysLeft <= 3 && progress < 0.5,
"⚠️ 遅延リスク高(残り" + daysLeft + "日)",
// 4. 期限まで7日以内なのに進捗が20%未満なら「注意」
daysLeft <= 7 && progress < 0.2,
"🟡 準備不足の懸念",
// 5. それ以外は「順調」
"🟢 順調(残り" + daysLeft + "日)"
)
)
---
3. この数式の「凄み」を解説します
この数式には、単なる条件分岐以上の知恵が詰まっています。
① `let()` 関数による「思考の整理」
数式の冒頭にある `let(daysLeft, dateBetween(…), …)` に注目してください。
かつての数式では、`dateBetween` の計算が必要になるたびに、同じ長い式を何度も書く必要がありました。`let` を使えば、一度計算して `daysLeft` という名前をつけるだけで、後はそれを使い回せます。これは、コードの可読性を高め、修正を一箇所で済ませるというプログラミングの鉄則(DRY: Don’t Repeat Yourself)をNotion上で実現しています。
② `ifs()` 関数による「優先順位の明確化」
`ifs()` は、上から順番に条件を判定し、最初に一致したものを返します。
- まず「終わっているか?」を確認する。
- 終わっていないなら「手遅れ(期限切れ)か?」を確認する。
- 次に「このままだと危ないか?」を確認する。
この「評価の優先順位」をそのままコードに落とし込めるのが、`ifs()` の最大のメリットです。
③ 視覚的フィードバック(UX設計)
現場のエンジニアやマネージャーがダッシュボードを見たとき、文字を読まなくても状況がわかるように、絵文字(🚨, ⚠️, 🟢)を先頭に配置しています。
さらに、`”残り” + daysLeft + “日”` のように文字列操作を組み合わせることで、具体的なアクション(あと何日でやらなきゃいけないか)を直感的に伝えています。
—
4. 導入後の世界:ナレッジ共有の質が変わる
この数式を導入すると、あなたのチームに次のような変化が起こります。
1. 「情報のサイロ化」の打破: マネージャーが一人ひとりに「あれ、進んでる?」と聞く必要がなくなります。Notionを開けば、数式が客観的なリスクを全メンバーに等しく提示してくれるからです。
2. 心理的安全性の確保: 誰かを責めるのではなく、「数式が『リスク高』と言っているから、リソースを調整しよう」という建設的な対話が生まれます。
3. ベロシティの向上: 危機的なタスクが視覚的にポップアップするため、チームは迷わず「今、本当にやるべきこと」に集中できるようになります。
おわりに
Notionの数式プロパティ2.0は、もはや単なる計算機能ではありません。チームの意思決定を支える「ロジック・エンジン」です。
今回紹介した `let` や `ifs` は、その入り口に過ぎません。これらをマスターすれば、例えば「メンバーごとの負荷状況を計算して自動でアサインをレコメンドする」といった、高度なシステムも構築可能です。
まずはこの「リスク判定」をあなたのプロジェクトに組み込んでみてください。ツールに使われるのではなく、ツールを飼い慣らし、チームを勝利へと導く。そんなエンジニアへの第一歩を、ここから踏み出しましょう。
もし設定で詰まったら、いつでも聞いてくださいね。あなたのチームの成功を、心から応援しています!