学祭委員 IT部の最初の仕事
会津大学学園祭実行委員会 Advent Calendar 2025の最初の記事です。
12/1~8…?なんのことですかね…?
学祭・IT部って?
皆さんは会津大学という大学はご存知ですか?
会津大学は、その名前の通り福島県の会津若松市にあるコンピュータ理工学を学べる単科大学です。
会津大学には毎年10月頃に蒼翔祭という学園祭を開催していて、そこではサークルからの出店やステージでのイベントがあります。今年度は2500人程の来場者がいました。
昨年度までの学園祭の運営方式は情報系の大学であるにも関わらずあまりにもアナログなものでした。
情報系の大学であるにも関わらず!!
学祭の運営は会津大学学園祭実行委員会という組織が担っていて、役割分担のためにいくつかの部署に分かれているのですが、アナログすぎる運営方式を改善するためにIT部が設立されました。
本題
そんな中できたIT部ですが、新設された部署というのもあって今年度はやることがとても多かったです。
その中でも今回はIT部として最初にやったことを紹介します。
最初に作成に取り掛かったのは Trackable Links という機能。
おおまかな仕様を書くと、アクセスした媒体の記録を行いながら指定されたページへ遷移するようなリンクを発行するシステムです。
これで生成したリンクを複数個用意してそれぞれのQRコードをポスターに貼り付けて掲示し、GUI上でどのポスターからアクセスされたかの統計を取る目的で使用しました。
技術仕様など
このTrackable Linksでは、以下の技術を使用しています。
- Cloudflare Workers
- データ保存のためにD1も使用
- Hono
- 軽い!早い!わかりやすい!
DBには遷移先URLとそのリンクに関するメタデータを紐付けるデータ用テーブル、各データと生成したリンクを紐付けるURL用テーブル、アクセスログ記録用のログ用テーブルの3つを用意しています。
Honoでは遷移用と処理用のエンドポイントを用意しています。
遷移用ではqueryにあるidからURL用テーブルを参照し、対応するリンクを取得して遷移させると同時に、ログ用テーブルにUserAgentやidなどを記録します。
処理用ではデータ用テーブルの基本操作や、URL用テーブルの操作(更新は除く)を行っています。
今後の課題や目標など
このTrackable Linksは少人数(2人)かつ短期間で作成したので、改善点やら目標やらがいろいろあります。
まず1つ目は改善点、idについて。
DBの各テーブルで管理するidが基本的にUUID v4であるため、UUID v7かv8あたりを使いたいなーと。
また、URLのqueryで使用するidもUUIDになっているのは長い気がするので、被らないような方式でid生成して使用したいなと感じています。
2つ目も改善点、使用するパラメーターについて。
今はqueryを使用していますが、短いidを使用したparamsを使いたいなと考えています。
3つ目も改善点、脆弱性について。
この記事を出すまでは認証を実装してなかったので誰でもAPIが叩ける状態でした。怖い。今は修正してます。
最後は目標、OSS化です。
リファクタリングが終わったらOSSにして出したいと考えています。
Discussion