この記事は SLP KBIT Advent Calendar 2023 4日目の記事です。
はじめに
こんにちは、mshogoです。SLPに入ってからというもの、特に目立った活動に参加できなかったので、今回このようなイベントに参加できることをとてもうれしく思います。
といいますのも、現在バイトと他サークルなどで多忙を極めておりまして、本記事も執筆開始時点では間に合うかとても不安です。(一応間に合った!)
依頼者の@_ttt_くんからも「全然遅れても大丈夫だから」とのことなので、気長に書いていこうと思います。
本記事の内容
タイトルにもあります通り、「Notionで授業管理をする」というものです。
わたくしDIY大好き人間(自称)でして、困ったことがあればすぐにプログラミングで解決しちゃいたい派なのですが、同時にめんどくさがりでもありまして、SaaSを利用することも希ではありません。
今回はめんどくさがりの私が作成して利用している『ClassManeger(クラマネ)』について紹介しようと思います。
決して同様のシステムを独自開発で行なっている@mimimiminekoくんへの当てつけではないことをご了承ください。
詳しい使い方や開発背景は(時間もないので)別記事で後日投稿しようと思います。お楽しみに。
本記事では具体的な実装方法について詳述します。
ClassManegerとは
ここでは概要だけ。
Today's view
には今日(曜日)の授業が表示されます。
各ページには、出席登録へのリンクAttendance
とmoodleページの各セクションへのリンクCurrent 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", "")
ここですべてのページに対して、今日が何曜日であるのかという情報を持たせます。
次に_isToday
プロパティでは以下のFormulaを設定しています。
if(prop("day") == prop("_today"), 1, 0)
ここでday
プロパティに登録した開講曜日情報と、_today
プロパティで取得した曜日情報が等しいかを判定しています。
そして、Today's view
ではこの_isToday
プロパティに入っている01に対してフィルタリングを行ない、絞り込みをしているということになるわけです。
tag_slide
ボタンによるセクション移動
ここでもNotionの機能紹介のコーナーです。少し前にボタンが追加されたので、それを活用した機能になっています。
これはNotion Formulaとは異なりノーコードです。私はノーコードアンチ(言い過ぎ)なので、多大なストレスを感じながら実装しましたもうやりたくない。皆さんは俺の屍を超えてゆけとでも言いましょうか、是非クラマネを使ってやってください。
内容としては、テーブルのtag
プロパティの値を一つ次のものに変更していくだけのものです。
一つ一つ丁寧にWhereでフィルターをかけ、変更していきます。
設計として、レンジを持たせるために20セクションまで用意したのですが、このアクションを追加する作業を20回やるのが本当にしんどかった。Notionさん、ここもプログラムでかけるようにしてくださいよ...
このボタンを押すことで、自動で順番が変わってくれます。変更に時間もかかりますし、何せ地味。
かといって毎回手作業でやるわけにも行かず、背に腹は代えられないといったところでしょうかね。
配布じゃ
と言いたいところですが、ごめんなさいまだ配布用のページができあがっておりません。もう少々お待ちください...
まとめ
他の方々とは少し趣向の異なる記事になってしまったような気がしますが、大丈夫かな。
独自開発の良いところは、「何をやっているかがすべて自分でわかっている」ということだと思います。これは、メンテナンスの面でもそうですが、何をやっているかわからないという心理的不安を解消するためにも大切なことです。
逆に悪いところは、「莫大な時間的コストがかかる」ということです。最終的に得られるものは、きちんとかけたコストに値するものだとも思いますが。
そして、何をやっているかがわかり、時間もかからない開発が、SaaSを用いた開発になると思います。Notionは、ある程度自由のきくSaaSであるので、ぜひ皆さんも活用してみてはいかがでしょうか。