はじめに ネクストモードの南です。 先日Notionで関数2.0(Formula 2.0)がリリースされましたが、サポートする関数やプロパティについても アップデートが多くありました。...
【Notion】関数2.0(Formula 2.0)がリリースされました
はじめに
ネクストモードの南です。
Notionのデータベースの関数機能について大きなアップデートがありました。
関数2.0(Formula 2.0)としてリリースがアナウンスされましたが、今回はアップデートの内容やこれまでとの変更点についてレポートしていきます。
目次
関数2.0(Formula 2.0)
今回のリリースによって関数の操作性や仕様が大きく変更されました。
これまでの関数機能と比較して、新しくなった関数ではざっくりと以下のようなことができるようになっています。
- 数式の作成と編集がより簡単にできるようになった
- より多くの形式のデータ出力が可能になった
- 入力元としてより多くの種類のデータを扱うことが可能になった
新機能について
ここからは関数2.0で新しくなった機能やポイントについて解説をしていきます。
新しい関数では具体的に以下のようなことができるようになりました。
- 数式の作成と編集がより簡単になった
- 数式がリッチなデータ出力可能になった
- プロパティからワークスペースレベルの情報が取得可能になった
- ロールアップがなくてもリレーション先の情報が取得可能になった
- ローカル変数が使用可能になった
盛りだくさんですが、文面だけではどのように変わったのかわかりにくい部分もあると思うので、具体的なケースも交えて解説していきます。
1. 数式の作成と編集についてのアップデート
関数エディター(関数の編集画面)では以下の機能が追加されました。
- 数式のエラーがわかりやすく表示
- 数式の結果が確認可能
- 数式を複数行に分けて記述可能
- コメントの記述が可能
これまで入り組んだ数式を作成する際、エラーがあってもどこが原因かなかなか特定できずにイライラする、という経験をした方も多いと思います。
今回のアップデートではエラー箇所の強調表示が追加され、エラーへの対処がしやすくなりました。
また、数式を複数行に分けて記述したり、コメントの記述も可能になっており、複雑な数式も整理して記述することができるようになっています。
さらに数式の出力結果を確認できるウインドウも追加されており、かなり編集がしやすくなったと感じます。
2. 数式のリッチなデータ出力
これまでの関数機能では、数式の出力はテキスト、数値、チェックボックスのみとなっていました。
今回のアップデートではそれらに加えてページ、日付、ユーザー、リストの表示も可能になりました。
- 例:ユーザープロパティをリストで表示
これらのプロパティは個別の属性を持つものがあり、数式からアクセスすることができます。
例えばユーザープロパティからは、以下のようにユーザー名のテキストデータを取得したり、eメールアドレスを取得することができます。
また、多くのオブジェクト指向言語と同じような具合で、オブジェクトからドット演算子を用いて関数を呼び出せるようになっています。
(name()は名前のテキストを、email()はeメールアドレスをユーザーオブジェクトから取得する関数)
- ユーザープロパティでユーザー名をテキストデータのリストとして取得
prop("ユーザー").map(current.name()) - ユーザープロパティでユーザーが持つeメールアドレスのリストを取得
prop("ユーザー").map(current.email())
- 構文の補足
ユーザープロパティは複数の要素を持つリストとなるため、各ユーザーの属性にアクセスするためにはmapを使ってリストの要素ごとに処理をする必要があります。 - propについての補足
これまでの関数でプロパティにアクセスする場合はprop("プロパティ名")としていましたが、今回のアップデートでprop()は廃止されています。
ただし、数式が見やすくなる(どれがプロパティかわかる)ため、記事上では便宜的にprop()を使っています。
また、関数エディターにprop()を付けたままペーストしても自動的に置換(prop()が外される)されます。
また、length()やreplace()といった関数も呼び出すことができます。
既存の関数よりもかなり簡潔に記述することができるようになっています。
- ユーザープロパティのユーザー名の文字数をリストで取得(空白を除外)
prop("ユーザー").map(current.name().replace(" ","").length())
データ出力という点では、テキストデータのスタイルも指定できるようになったのもいいですね。
- "TEST"の文字列を赤色、グレー背景色、太字、下線、斜体で表示する
style("TEST", "red", "gray_background", "b", "u", "i")
上記のように、今回のアップデートで関数の仕様が大きく変わりました。
(これまで使っていた数式については、出力結果に差分が生じないように自動的に置き換わっていますのでご安心ください。)
データの出力形式が多様になったのと、より簡潔にデータや関数機能を扱えるようになっており、関数の利便性が大きく向上するアップデートになっています。
また、プロパティだけでなく関数機能についても多くの追加があります。
詳細についてはこちらのNotionの公式ページをご参考ください。
3. プロパティからワークスペースレベルの情報を取得
ユーザーの名前やeメールアドレスといったワークスペースレベルの情報については、データベースでプロパティを作成しなくても関数からアクセスができるようになりました。
例えば、以下のデータベースでは「作成者」「更新者」「作成日時」「更新日時」のプロパティは作成していません。
この状態でも、関数からこれらの情報にアクセスすることができます。
関数のためにわざわざデータベースの構造を合わせる必要がなくなりました。
4. リレーション先の情報取得
これまで関数でリレーション先のデータベースのプロパティの値を扱うためには、ロールアップを作成して参照させる必要がありました。
- 例:リレーション先DBのプロパティ「値」の数値を10倍する
→「値」に対応する「ロールアップ」を作成し、さらに「ロールアップ」を関数で参照して×10する
今回のアップデートで、ロールアップを作成しなくてもリレーション先のプロパティにアクセスできるようになりました。
3.のアップデート内容と同様に、関数のためにわざわざデータベースの構造を変える必要がなくなったのが良いですね。
実際に試してみます。
以下では2つのデータベース間でリレーションが作成されています。
リレーション先DBの「値」のプロパティについてはprop("リレーション先DB").map(current.prop("値"))で取得できます。
冒頭の例と同様に10倍するなら、sum()で合計値を出した後に* 10をすればOKです。
- prop("リレーション先DB").map(current.prop("値")).sum() * 10
- 構文の補足
リレーションプロパティについてはページのリストとなるため、map()を使ってリストの要素ごとに処理をする必要があります。
さらにcurrent.prop("プロパティ名")で取得対象のプロパティを指定します。
5. ローカル変数の利用(let、lets)
数式内でローカル変数の利用が可能になりました。
構文は以下の通りです。
variableで変数名、valueで値を指定し、expressionで変数を使用した数式を記述します。
- let(variable, value, expression)
- lets(variable, value, variable2, value2, ..., expression)
例えば「年利0.5%で10000円を5年間運用する」という数式を組むとします。
- 10000 * 1.005 * 1.005 * 1.005 * 1.005 * 1.005
見にくいですね。年利を変更したい場合にもなかなか厄介です。
※pow()を使えばいいじゃん、という突っこみはしない。
この数式でlet()を使用すると記述を見やすくシンプルにすることができ、修正もしやすくなります。
- let(a, 1.005, 10000 * a * a * a * a * a)
lets()では複数の変数を組み合わせて使用することができます。
- lets(a, 100, b, 2, a * b)
また、以下のようにlet() / lets()を複数記述することもできます。
この場合、お互いの変数は干渉し合いません。
- lets(a, "Hello", b, "world", a + " " + b) + lets(a, ", and", b, "bye.", a + " " + b)
まとめ
新しくなった関数機能についてレポートさせていただきました。
今回のアップデートによって、関数の操作性やデータの扱いやすさが大きく向上しました。
仕様が変わった部分もあるので最初は戸惑う部分もあるかもしれませんが、簡潔に使えるようになっており、利用シーンもより広がるものになっています。
これから試したい内容もまだまだあるので、また続報についてもお知らせしていきたいと思います。
Notionについてのお問い合わせ
ネクストモード社は、日本で3社しかないNotion販売代理店です。(2023年01月01日現在)
Notion導入を検討の際は是非下記からお問い合わせ頂けますと幸いです。