Notion Formulas 2.0 – Notionの関数機能アップデート:let関数を使って独自の変数を作成出来る様になりました #notion

2023.09.10

アライアンス事業部 エンジニアグループ モダンデータスタック(MDS)チームのしんや です。

2023年09月08日未明、Notionの公式X(Twitter)で以下のアナウンスがありました。「Notion Fomulas 2.0」と題して、Notionの関数機能についての幾つかの嬉しいアップデートがまとめてなされたようです。

当エントリでは、その中から「let関数を使って独自の変数を作成出来る様になった」という点について実際に見ていこうと思います。

目次

 

関数の概要

今回のNotion Formulas 2.0アップデートで、let()関数を使ってローカル変数の作成が出来るようになりました。let関数の説明としては『変数に値を代入し、その変数を使って式を評価することが出来る関数』となります。

従来のJavascriptでやっていることと同じように、let()関数は第1引数と第2引数の値を使用して変数を作成します。第3引数には新しく作成した変数を使って関数の残りの部分を記述するスタイルを取ります。

これまでの使い方であれば、幾つかのプロパティを加算した「合計コスト」を参照する関数を作成する場合、都度プロパティを活用した記述をしなければいけませんでしたが、今回新たに登場したlet()を活用することその記述を繰り返す必要がなくなります。

 

実践例

 

let()関数

公式サイトで展開されているものを、日本語に置き換えた形で記述して試してみました。

  • 「数量」と「単価」の項目を用意、この2つを使った計算項目として「小計」を用意。
  • 「小計」を活用した新たな関数項目として「合計(税込み)」という項目を新規作成。この中で定義したlet()ではこの項目を活用した記述を行った。
    • 第1引数で変数名を定義
    • 第2引数で「その変数では何を参照、何を処理しているか」を記述
    • 第3引数で最終的に出力させたい内容を、変数を使いつつも記述

この関数を使い、上記のような記述を行うことで、処理させたい内容を実現するために「都度、その処理内容を記載しなければならなかった」手間を省けることが出来、結果視認性、メンテナンス性も向上する形になるわけですね。

 

lets()関数

let()関数の発展形として、lets()関数というものも用意されています。これは『複数の変数に値を代入し、それらの変数を使って式を評価することが出来る関数』となります。let()関数における第1引数&第2引数のペアが複数定義出来るイメージです。

ここでサンプルとして、プロ野球におけるOPS(On-base Plus Slugging)の指標算出を挙げてみたいと思います。OPSそのものについてはWikipedia記載の冒頭説明文を引用します。

OPS(オプス、オーピーエス)は On-base plus slugging の略であり、野球において打者を評価する指標の1つ。出塁率と長打率を足し合わせた値である。打席あたりの総合的な打撃貢献度を表す指標であり、数値が高いほど、打席あたりでチームの得点増に貢献する打撃をしている打者だと評価することができる。出塁率と長打率の和によって簡単に求めることができ、しかも得点との相関関係が非常に強いことからセイバーメトリクスでは重用される指標である。

OPS (野球) - Wikipedia

その他詳細な計算式については下記サイトをご参照ください。

このOPSの数値を求めるために、メジャーリーグにおける渡米後の大谷翔平選手の打撃成績を使ってみたいと思います。

シーズンごとの打撃成績と、それらの情報を踏まえてNotion関数を利用して算出したシーズン毎(2023年については投稿日時点での数字を利用)のOPSは以下の通りです。

テーブル内の一番左の項目、『OPS』の記述内容は以下の通りです。同じタイミングでの改善となった『エディタ内での改行』と『コメント』を交えた形で記載してみています。OPS算出のために必要な項目の定義、計算式を『variable, value』のペアで必要な分定義しておき、最終的にそれらを踏まえた計算式(最後の行、「出塁率+長打率」)で結果を算出しています。この辺りの計算式については、従来の記法であれば定義記述の入れ子を繰り返す、しかもその記述は計算させる項目毎に都度細かく記載しなければならなかったものが、今回のこのlets()関数を使って非常に分かりやすく簡潔に表現することが出来ました。

 

まとめ

という訳でNotion Formulas2.0、Notion関数における新しいアップデートの中で「「let関数を使って独自の変数を作成出来る様になった」」件についての紹介でした。

let()及びlets()関数を使うことで「関数を使ったプロパティの中で、実際に何をしているのか」の内容が格段に理解しやすく、また作成しやすくなったことが実例を通じて実感出来ました。活用しない手は無いので皆さんもガンガン使っていきましょう!