自学自習用小テストテンプレート : Notion 解説 (57)

はじめに

Red Gregory さんの flashcards の実装に興味を持ちました。Show Answer のチェックを入れると、Description に書かれている一部分の文字が表示されるというものです。以前、Notion 座談会でトグルリストを使って、運転免許の勉強をした話題が出ていましたが、同じ系統のものです。

ただ答えが出るだけだと面白くないので、自学自習用の小テストができても面白いなと思って作ってみました。

外観

小テストを受験するページはこんな感じのビューになっています。

解答用ページ

ここには、以下の属性が見えています。

  • Question: 問題が表示されます。
  • 1, 2, 3, 4: 4択の選択肢が表示されます。
  • Answer: 答えを入力するセレクタです。選択肢は準備してありますが、数字を打てば選ばれるようになっています。
    選択肢
  • Check: 正解するとチェックがつきます。単純に上の Answer と隠されている Correct を比較しているだけです。Check 欄の一番下では、チェックありの割合を % で表示しています。
    Check formula

なお、このページは random_number という順序で並び替えられています。random_number については後で説明します。

問題の並び順

今回のように選択肢の内容が短ければこれでよいですが、選択肢が文章などになるときにはテーブルの形式では使いにくいです。この場合には、ページを開くとして各ページの画面を見てもらうとよいです。この状態だと「ページとして開く」の右にある「^」「v」のマークでページの前後に移動できるためです。

ページごとのプレビュー

隠れている他3件のプロパティには、以下の3つの属性が含まれています。

3つの隠れ属性
- Last update time: 最終更新日時です。問題作成の時にこれで並び替えをします。 - random_number: 上で書いた問題を並び替えるための数値です。以下のフォーミュラで計算しています。現在時刻のタイムスタンプを3600秒でわり、その値とページの id ナンバーのうち数値のものだけを抽出した数字を掛け算しています。当初剰余を入れてなかったのですが、入れないと順番が入れ替わらないことに気づき、% 1000 を追加しました。

(floor(timestamp(now()) / 3.6e+6) * toNumber(replaceAll(id(), "[^0-9]", ""))) % 1000
  • Correct: 正解が入っています。

一方、問題作成シートはこんな感じになっています。ほぼ受験用シートと同じですが、Answer の部分が Correct になっているだけです。これは問題の作成時刻を降順に並べているだけです。

問題作成シート

終わりに

このテンプレートは以下で配布しています。これを使ったいろんな小テストが使われるといいなと考えています。

hkob.notion.site


www.notion.so