概要
地方の公立高校に在籍する筆者が、昨年開発した高校の文化祭のシステムを改善し、どの学校でも利用できるWebサービス「Gakusai Hub」として公開する話です。
昨年大きな反響をいただいたこちらの記事の続きとなっています。
作ったサービス
高校の文化祭向けの総合Webサービスです。
- チケットの発行・管理
- 販売する商品の在庫・会計管理
- 文化祭内のクラス企画・模擬店の一括管理
などの機能を無料で利用することができます。
技術スタック
フレームワーク : Next.js(App Router) + TailWindCSS(shadcn /ui) + Better-Auth(認証)
ホスティング : Cloudflare Workers
DB : Cloudflare D1
ORM : Drizzle
作ったきっかけ
私は昨年、自分の高校で生徒会からの依頼で文化祭のシステムを作りました。クラス企画に参加するための整理券機能と、タイムテーブルを載せるような簡素なものでしたが、文化祭当日では多くの人に利用してもらうことができました。開発・導入としては成功といえる結果を収めることができたのですが、システム自体やその過程には問題が多くありました。
例えば、開発する人材の不足だったり、導入するときの教師の反対であったり...(詳しくは冒頭の記事を読んでください)
システムの導入によって文化祭の運営は便利になりましたが、そのコストがとても大きいと感じました。
また、昨年の開発過程で前日に機能変更の依頼があったり、生徒がマニュアル通りに操作できないなど、システムのクオリティが低いこともありますが、デジタルネイティブである高校生に運営用として利用するのは想像以上にが難しかったです。
今の時代はGIGAスクール構想で一人一台端末が配布されているので、どんな学校でも導入してしまえば使い続けられるのですが、それを学校ごとに生徒が開発したり、導入するにはまだまだ大きな壁があるとおもいます。
かといって、文化祭向けのアプリやサービスはないですし、年に一度しか使わないシステムを、企業に依頼するのは金銭的に不可能です。
開発後、調べてみると他校でも同じように、プログラミングができる人がシステムを開発・導入した事例が何個かありました。いずれも中高一貫の進学校であったり、地方の高校でも筆者と同様に導入がうまくいかないという内容でした。
そこで、せっかく作ったシステムを利用してもらうと、昨年作った文化祭システムを他の学校でも使えるように開発し、Webサービスとして公開しました。
改善した点
特に新しい技術や発想というわけでもなく工夫とは言えないですが、いくつかの部分は先ほど述べた体験に基づいて開発してきました。
例)Googleサインインを追加した
- 学校ではGoogleアカウントが配布されるところがほとんど
- メールアドレスだと個人情報だと警戒する教師(特に年配の教師)が一定数いるが、Googleアカウントでの連携やCokkieといった用語を出すと何も言わなくなった(セキュリティ的に何も変わらないのでは?)
- 昨年のシステムではIDとパスワードを運営側が各クラスの担当生徒に渡していたが、高校生でも想定以上に紛失→再設定が多かった
といった感じです。
あとは、昨年のシステムはAIに頼りすぎて脆弱なコードがいくつかあったり、レスポンシブ対応がほとんどされておらず、スマホで操作しにくかったので、適切な処理に切り替えたり、レスポンシブ対応をしました。
苦労した点
- Open Next
以前はホスティングにVercelを使っていたのですが、文化祭が商用利用にあたるかもと思い、Cloudflare Workersに移行しました。その時に、Vercel以外でNext.jsを作動させるために必要なOpen Nextというライブラリの情報が少なく苦労しました。Node.jsランタイムや"use cache"が使えないので、一部のライブラリが使えなかったりパフォーマンスが悪かったりします。 - 管理者・スタッフの登録
Better-Authの一部機能を利用する際にCloudflareの無料枠ではBetter-Authの暗号化処理がタイムアウトしてしまうのことがあったで、サインイン周りの実装に苦戦しました。
最後に
中身のない話になってしまいましたが、興味を持った方はぜひサービスを拡散してもらえると嬉しいです。