サブアイテムにおける通番の設定方法: Notion Tips (69)

はじめに

Notion Tips の第69回目はサブアイテムを使った通番の作成方法です。私の場合はシラバスに対応した授業のレジュメの管理に活用しています。実際には Wiki データベースを使っていますが、ここでは普通のデータベースで紹介します。

最終生成物のイメージ

最終的に作るデータベースのイメージはこんな形です。親に「前期」「後期」があり、その下に授業ごとの単元がサブアイテムが並びます。授業を設計する時は内容の順番を入れ替えたり、単元に必要な時間数を変更したりします。その際、通番をいちいち手動で設計したり半期ごとの累計時間を計算するのは面倒です。そこで、通番と累計時間は数式で計算するようにしています。サブアイテムの設定方法は昨日解説したので、そこは省略します。

最終生成物のイメージ

通番の数式

通番の数式は以下のようになります。親アイテムは「1ページ」制限が設定されているので、first() で一意に親が取得できます。その親に対してサブアイテム一覧を取得します。それらをすべてページの ID に変換した上で、自分のページが何番目に相当するかを算出します。index は 0 から始まるので最後に 1 を足すことで通番となります。ページ順序が手動なので、入れ替えるたびにサブアイテムのリストが変わるため、自動的に通番が更新されることになります。

prop("親アイテム").first()
  .prop("サブアイテム")
  .map(current.id())
  .findIndex(current == id())+1

累計時間の数式

累計時間はこの通番をうまく活用します。同じように親のサブアイテムをすべて入手した後で、自分の通番以下のものだけを抽出します。その後時間にマッピングしたものを総和することで累計時間が計算されることになります。

prop("親アイテム").first()
  .prop("サブアイテム")
  .filter(current.prop("通番") <= prop("通番"))
  .map(current.prop("時間"))
  .sum()

おわりに

今日は、私が利用しているサブアイテムの一例でシラバス & レジュメデータベースの運用について解説しました。授業を入れ替えると自動で通番が更新され、累計時間も自動集計されます。