Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

Notionを使って授業管理をしたいのじゃ【配布あり】

Last updated at Posted at 2023-12-04

この記事は SLP KBIT Advent Calendar 2023 4日目の記事です。

はじめに

こんにちは、mshogoです。SLPに入ってからというもの、特に目立った活動に参加できなかったので、今回このようなイベントに参加できることをとてもうれしく思います。
といいますのも、現在バイトと他サークルなどで多忙を極めておりまして、本記事も執筆開始時点では間に合うかとても不安です。(一応間に合った!)
依頼者の@_ttt_くんからも「全然遅れても大丈夫だから」とのことなので、気長に書いていこうと思います。

本記事の内容

タイトルにもあります通り、「Notionで授業管理をする」というものです。
わたくしDIY大好き人間(自称)でして、困ったことがあればすぐにプログラミングで解決しちゃいたい派なのですが、同時にめんどくさがりでもありまして、SaaSを利用することも希ではありません。
今回はめんどくさがりの私が作成して利用している『ClassManeger(クラマネ)』について紹介しようと思います。
決して同様のシステムを独自開発で行なっている@mimimiminekoくんへの当てつけではないことをご了承ください。
詳しい使い方や開発背景は(時間もないので)別記事で後日投稿しようと思います。お楽しみに。
本記事では具体的な実装方法について詳述します。

ClassManegerとは

ここでは概要だけ。
Today's viewには今日(曜日)の授業が表示されます。
Today's view
各ページには、出席登録へのリンクAttendanceとmoodleページの各セクションへのリンクCurrent Sectionが入っています。
section

実装について

ここからは、各機能の具体的な実装方法について紹介していきましょう。

Today's viewの絞り込み

Notionでは、単純なフィルター及びソート機能しか持たないため、標準機能のみではこの絞り込みを行なうことはできません。そこで、ページに関数プロパティを2つ用意してそこで曜日を取得し、今日の曜日と同じか判定するようにしています。

NotionにはNotion Formulaという独自の言語(?)を用いて、簡易的なプログラムを組むことができます。詳細は以下の記事を参考にしてください。

執筆中に新たなNotion Formula 2.0なるものが出ていたことに気づきました...
もっと簡略化できる可能性もありますが、現時点では旧バージョンのままで記載します。

さて前提として、ページにはdayプロパティでその科目の開講曜日がアルファベット3文字(例:Mon)のタグで指定されているものとします。

_todayプロパティでは以下のFormulaを設定しています。

((((if(day(now()) % 7 == 1, "Mon", "")
  + if(day(now()) % 7 == 2, "Tue", ""))
  + if(day(now()) % 7 == 3, "Wed", ""))
  + if(day(now()) % 7 == 4, "Thu", ""))
  + if(day(now()) % 7 == 5, "Fri", ""))
  + if(or(day(now()) % 7 == 6, day(now()) % 7 == 0), "_off", "")

ここですべてのページに対して、今日が何曜日であるのかという情報を持たせます。
image.png

次に_isTodayプロパティでは以下のFormulaを設定しています。

if(prop("day") == prop("_today"), 1, 0)

ここでdayプロパティに登録した開講曜日情報と、_todayプロパティで取得した曜日情報が等しいかを判定しています。
image.png

そして、Today's viewではこの_isTodayプロパティに入っている01に対してフィルタリングを行ない、絞り込みをしているということになるわけです。
image.png

tag_slideボタンによるセクション移動

ここでもNotionの機能紹介のコーナーです。少し前にボタンが追加されたので、それを活用した機能になっています。

これはNotion Formulaとは異なりノーコードです。私はノーコードアンチ(言い過ぎ)なので、多大なストレスを感じながら実装しましたもうやりたくない。皆さんは俺の屍を超えてゆけとでも言いましょうか、是非クラマネを使ってやってください。

内容としては、テーブルのtagプロパティの値を一つ次のものに変更していくだけのものです。
一つ一つ丁寧にWhereでフィルターをかけ、変更していきます。
image.png

設計として、レンジを持たせるために20セクションまで用意したのですが、このアクションを追加する作業を20回やるのが本当にしんどかった。Notionさん、ここもプログラムでかけるようにしてくださいよ...

このボタンを押すことで、自動で順番が変わってくれます。変更に時間もかかりますし、何せ地味。
かといって毎回手作業でやるわけにも行かず、背に腹は代えられないといったところでしょうかね。

配布じゃ

と言いたいところですが、ごめんなさいまだ配布用のページができあがっておりません。もう少々お待ちください...

まとめ

他の方々とは少し趣向の異なる記事になってしまったような気がしますが、大丈夫かな。

独自開発の良いところは、「何をやっているかがすべて自分でわかっている」ということだと思います。これは、メンテナンスの面でもそうですが、何をやっているかわからないという心理的不安を解消するためにも大切なことです。

逆に悪いところは、「莫大な時間的コストがかかる」ということです。最終的に得られるものは、きちんとかけたコストに値するものだとも思いますが。

そして、何をやっているかがわかり、時間もかからない開発が、SaaSを用いた開発になると思います。Notionは、ある程度自由のきくSaaSであるので、ぜひ皆さんも活用してみてはいかがでしょうか。

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?