備品管理システム 仕様書(概要)
1. システムの目的
会津大学学園祭(蒼翔祭)で使う備品を、誰が、いつ、どこへ持ち出し、どのような状態で返却したか確認できるようにするシステムです。
貸出・返却・在庫確認をデジタル化して、現場スタッフの作業を軽くし、備品の紛失、破損、誤った持ち出し、確認漏れを減らします。
2. 使用する機器・画面
主な操作端末: FZ-N1(ハンディ端末)
-
現場で備品QRコードや団体QRコードを読み取る
-
学生証をタッチして学祭委員としてログインする
-
備品の状態を確認し、貸出・返却などを行う
-
通信できないときも操作を端末へ保存し、通信復旧後に同期する
-
団体貸出セッションをオンラインで開始し、対象団体の当年度の確定済み割当リストを端末へ事前に保存する。貸出中の備品スキャンは、通信が切れても端末内のリストで照合できる
-
物理ボタン: 画面下部に3つの物理ボタンを搭載する
-
A1ボタン(左): キャンセル・戻る
-
A2ボタン(中央): 概要と詳細の切り替えなど、画面ごとに定めた操作
-
A3ボタン(右): 確認・実行
-
管理用: Webブラウザ(Sho-Room)
-
パソコンやスマートフォンから利用する
-
備品、場所、団体、企画、備品種別を管理する
-
備品の割当、在庫状況、要対応の備品、操作履歴を確認する
-
ラベルを発行し、貼付後の確認結果を記録する
貸出時の参加団体担当者
-
学祭委員から手渡されたFZ-N1で、持ち出す備品のQRコードを一つずつ読み取る
-
読み取った備品が団体に割り当てられているかをその場で確認する
-
指定外の備品を読み取った場合は警告を表示し、持ち出し完了にはしない
-
貸出が終わったらFZ-N1を学祭委員へ返却する
参加団体向けのWeb画面や追加の認証入力UIは提供しません。
3. できること
FZ-N1(現場用)
-
NFCログイン
-
学生証から学籍番号を読み取り、学祭委員名簿と照合してログインする
-
ログインに成功すると、本人へDiscordの一時的なプライベートスレッドで通知する
-
通知スレッドはメッセージ送信から15分後に削除する。通知に失敗してもログイン自体は完了する
-
-
通常の団体貸出(貸出セッション)
-
教室で学祭委員が団体QRコードをスキャンし、団体向けの貸出セッションを開始する
-
セッション開始時に、対象団体の当年度の確定済み割当リストをFZ-N1へ事前ダウンロードする
-
学祭委員がFZ-N1を参加団体の担当者へ手渡す
-
担当者がFZ-N1で対応する備品のQRコードを一つずつスキャンする。オフライン時は端末に保存した割当リストで照合し、オンライン復帰後にサーバーへ同期する
-
指定外の備品をスキャンした場合は警告を表示し、持ち出し完了にはしない
-
担当者からFZ-N1を返却されたら、貸出セッションを終了する。一致したスキャン済み備品は
LENT(貸出中)へ確定し、スキャンされなかった備品はALLOCATED(割当済み)のまま残す -
各団体が備品をテント等の設置場所へ搬出完了した後、学祭委員(備品PJ)がFZ-N1を持って各設置場所を巡回する
-
学祭委員またはその場に居合わせた参加団体の担当者が、FZ-N1で対象備品を一つずつ二重確認スキャンし、配置完了を確認・確定する。実際のスキャン担当は運用で決める
-
一致・不一致にかかわらず、団体、備品、日時、貸出セッション、実際のスキャン担当、端末識別子、判定結果を記録する
-
FZ-N1の「一括操作」は通常の貸出には使わず、指定外備品の救済などの例外処理に限る。利用には
EQUIPMENT_BULK_OPERATION権限が必要
-
-
備品の返却
-
レンタル業者(スパイス)との回収タイミング交渉結果に応じた2パターンのいずれかで運用する。D-02〜D-05の最終決定は交渉結果待ちで保留している
-
参加団体による返却時のセルフスキャンは行わない
-
-
個別スキャン
-
備品のQRコードを1つずつ読み取る
-
状態や所在を確認し、必要な状態変更を選択肢から行う
-
Webブラウザ(Sho-Room)
-
備品・マスタ管理
-
備品、場所、団体、企画、備品種別を登録・編集・無効化する
-
備品を検索、絞り込み、並べ替え、ページ単位で表示する
-
2,000件以上の備品でも、最初から全件を読み込まずに確認する
-
-
備品割当
-
申請システムから取得した企画ごとの必要数を使う。連携はSho-Roomから操作し、Service Bindingsで処理する
-
講義棟出展で使う備品を先に除外する
-
同じ企画の備品は同一教室を優先して割り当て、集約できた数・分散先・不足数を画面で確認できるようにする
-
割当案の不足数、除外数、元の場所、持出先、団体、企画を確認し、
EQUIPMENT_EDIT保持者が修正・確定する
-
-
在庫・履歴確認
-
場所ごとの在庫、貸出中、要対応の備品を確認する
-
備品ごとの変更履歴とスキャン履歴を、実行者または企画、日時、操作元とともに確認する
-
-
ラベル管理
-
QRコード、元の場所、持出先、使用団体、使用企画を文字でラベルに印刷する
-
再発行の理由、印刷結果、貼付後の確認結果を記録する
-
-
システム管理
-
Discord通知の失敗、貸出セッション、指定外スキャン、貸出未完了数を確認する
-
学祭終了後に年度更新を行い、現在の状態と割当を初期化する
-
参加団体の担当者
-
貸出時の備品スキャン
-
学祭委員がFZ-N1で団体QRコードを読み取った後、担当者が同じFZ-N1の貸出スキャン画面だけを一時的に操作する
-
担当者は対応する備品のQRコードを一つずつ読み取る
-
指定外の備品を読み取った場合は警告が表示され、持ち出し完了にはならない
-
担当者は貸出終了後にFZ-N1を学祭委員へ返却する。セッション中の設定・ログアウト・他画面への遷移はできず、担当者自身のログインやWeb画面の操作は行わない
-
搬出後の二重確認スキャンでは、運用に応じてその場に居合わせた参加団体の担当者がFZ-N1を操作する場合がある。参加団体担当者自身のログインは行わない
-
4. 備品の状態
備品には、貸出の進み具合と、物品そのものの状態を別々に記録します。前日の団体貸出では、教室に常駐する学祭委員の立会いのもと、団体QRコードで貸出セッションを開始し、担当者がFZ-N1で備品を確認します。各団体の搬出後は、備品PJの学祭委員がFZ-N1を持ってテント等を巡回し、学祭委員またはその場に居合わせた参加団体担当者が対象備品を一つずつ二重確認スキャンして配置完了を確認・確定します。
返却時のD-02〜D-05は、テント等のレンタル業者(スパイス)の回収タイミング交渉結果により、次の2パターンのいずれかに確定します。現時点では最終決定を保留しており、参加団体による返却時のセルフスキャンは行いません。
返却運用の保留事項(D-02〜D-05)
| 項目 | パターンA:スパイスが回収を遅らせてくれる場合 | パターンB:スパイスが例年通り回収する場合 |
|---|---|---|
| D-02(返却成立条件) | 片付けの日(2026/10/12)に講義棟前へ返却された時点を返却成立とする | 昨年通り、講義棟前に備品が返却された時点を返却成立とする。ただし、この運用が学生課等から承認されるかは未確定 |
| D-03(2日目夜の記録) | 記録しない。2日目夜はスキャン・記録を行わない | 講義棟前到着時に全数スキャンを行う。到着時点で備品への責任が備品課に移るため |
| D-04(中間集積場所を現在地として記録するか) | 記録しない | 混乱防止のため、講義棟前を現在地として記録する |
| D-05(足拭き・教室収容) | 備品課・学祭委員が講義棟前へ到着次第、逐次スキャン・足拭き・教室収容を行う。可能であれば、備品を持ってきた各団体自身に足拭き・教室搬入まで行ってもらう運用を志向する | 備品課・学祭委員がテント等の片付け後に足拭きを行って教室へ収容し、その後に全数スキャンを行う |
スパイスとの交渉結果は2026/09/11までに確定する。期限までに回答がない場合は、実装・当日運用の既定をパターンBとし、後から正式決定が得られた場合だけ変更する。
貸出状態の例
| 状態 | 意味 |
|---|---|
| 割当前 | まだ企画へ割り当てていない |
| 割当済み | 企画と持出先が決まっている |
| 貸出時スキャン済み | 貸出セッション中に団体の担当者がFZ-N1で読み取った |
| 貸出中 | 貸し出して使用している |
| 返却済み | 返却処理が完了している |
貸出セッション中に割当と一致した備品は一時的にLENDING_SCANNED(貸出時スキャン済み)となり、セッション終了時にLENT(貸出中)へ確定します。返却成立後はRETURNED(返却済み)とし、足拭き・教室収容が終わって次の在庫として扱える状態になった時点でSTOCK(在庫)へ戻します。
備品状態の例
| 状態 | 意味 |
|---|---|
| 正常 | 問題なく使える |
| 要修理 | 壊れているが修理できる |
| 修理中 | 現在修理している |
| 破損 | 壊れて使えない |
| 紛失 | 所在が分からない |
| 廃棄 | 処分済み |
FZ-N1では自由記述を原則使わず、破損や汚損などの決められた選択肢から状態を選びます。詳しい備考が必要な場合はSho-Roomから入力します。
「要対応」は、備品状態が「要修理」「修理中」「破損」「紛失」のいずれかである備品を指します。
5. 利用の流れ
FZ-N1のログイン
手順:
-
FZ-N1に学生証をタッチする
-
学生証から読み取った学籍番号を名簿と照合する
-
名簿と権限の確認に成功するとログインする
-
ログイン成功後、本人へDiscordのプライベートスレッドで利用情報を通知する
通知スレッドの名前には氏名や学籍番号を含めません。通知スレッドはメッセージ送信から15分後に削除し、通知に失敗した場合もログインは止めません。
団体への通常貸出(貸出セッション、教室での学祭委員立会い)
手順:
-
教室に監視の学祭委員が常駐する
-
参加団体の企画担当者が教室に来る
-
学祭委員がオンラインのFZ-N1で団体のQRコードを読み取る。QRの平文ペイロードは団体ID(
Organizations.id)のUUIDで、団体別QRコードの発行・配布は別botが行う -
対象団体の当年度の確定済み割当リストをFZ-N1へ事前ダウンロードし、ログイン済みのFZ-N1を団体の担当者へ手渡す。セッション中は貸出スキャン画面以外へ遷移できない
-
担当者自身がFZ-N1で対応する備品のQRコードを一つずつスキャンする。オンライン時はサーバー、オフライン時は端末へ保存した割当リストで照合し、指定外の備品をスキャンした場合は警告を表示して持ち出し完了にはしない
-
担当者が対応する備品を持って行く
-
担当者がFZ-N1を学祭委員へ返却する。未送信操作を同期した後、端末返却または学祭委員の明示操作で貸出セッションを終了し、一致したスキャン済み備品を
LENTへ確定する
通常の団体貸出はこの貸出セッション方式に一本化します。「団体一括操作」はFZ-N1の通常導線に含めず、EQUIPMENT_BULK_OPERATIONを持つ学祭委員が例外処理として使う場合だけ表示・実行できます。
団体の返却(回収運用、FZ-N1)
返却時に参加団体が行うセルフスキャンはありません。テント等のレンタル業者(スパイス)との回収タイミング交渉結果に応じ、D-02〜D-05は次の2パターンのいずれかに確定します。現時点では最終決定を保留しています。団体単位の一括返却APIを例外的に使う場合は、EQUIPMENT_BULK_OPERATION権限を必須とします。
パターンAでは、可能であれば備品を持ってきた各団体自身に足拭き・教室搬入まで行ってもらう運用を志向します。パターンBで講義棟前を現在地として記録する運用が学生課等から承認されるかは未確定です。詳しい条件は「返却運用の保留事項(D-02〜D-05)」を確認してください。
備品の個別操作(FZ-N1)
手順:
-
備品のQRコードをスキャンする
-
備品の表示ID、種類、状態、現在地、使用団体・企画などを確認する
-
必要に応じて、決められた選択肢から状態を変更する
-
保存する。通信できない場合は端末へ保存し、後で同期する
備品の登録(Web)
手順:
-
WebブラウザでSho-Roomへログインする
-
備品管理画面で「新規登録」を選ぶ
-
表示ID、種類、元の場所などを入力する
-
保存後、QR・元の場所・持出先・団体・企画をラベルへ印刷する
-
ラベルを備品へ貼り、教室または場所単位で貼付後確認を行う
6. 権限について
権限はpackages/api/auth-workers/discord-auth-worker/src/roleConfig.tsでDiscordロールごとに個別付与され、複数ロールの権限ビットをORで合成します。ロールと権限ビットの対応の正本は同ファイル、権限定数とビット値の正本はpackages/shared/src/permissions.tsです。従来の固定的な4段階ロール区分では判定しません。
「学園祭実行委員」DiscordロールにはEQUIPMENT_VIEWを付与します。そのため、学祭委員は備品の閲覧、FZ-N1メインメニュー、通常の団体貸出セッション、貸出・配置確認スキャンを利用できます。その他の操作は、Discordロールから次の権限ビットが付与されている場合だけ利用できます。
| 必要な権限・認証 | できること |
|---|---|
EQUIPMENT_VIEW | 備品・履歴の閲覧、FZ-N1メインメニュー、通常の団体貸出セッション、貸出・配置確認・返却スキャン |
EQUIPMENT_EDIT | 備品の登録・編集・状態変更(備品状態の強制変更を含む)、割当、ラベル発行・貼付後確認 |
EQUIPMENT_DELETE | 備品の論理削除 |
EQUIPMENT_MANAGE_LOCATION | 場所マスタ管理 |
EQUIPMENT_MANAGE_ORGANIZATION | 団体マスタ管理 |
EQUIPMENT_MANAGE_TYPE | 備品種別・企画マスタ管理 |
EQUIPMENT_BULK_OPERATION | 例外処理としての団体一括操作 |
EQUIPMENT_INTEGRATION | JWT認証を用いる備品連携処理。現行の大学環境cron向けエクスポートは専用APIキーを使用 |
EQUIPMENT_RESET | 年度更新 |
SYSTEM_MANAGE | 権限確認、監査・通知確認、貸出セッションの強制終了 |
| 専用APIキー | 大学環境cron向け全データエクスポート。人の権限ビットは使用しない |
| 権限なし(参加団体の担当者による物理操作のみ) | 学祭委員から手渡されたFZ-N1の貸出スキャン画面を一時操作する。システムのログイン権限・API権限は持たない |
参加団体の担当者にはシステムのログイン権限を与えません。貸出時の操作は、ログイン済みの学祭委員用FZ-N1上の貸出セッションに紐付け、監査ログでは実際の操作担当を別に記録します。一括操作は通常の団体貸出の代替ではありません。
7. 主な画面
| 画面 | 内容 |
|---|---|
| FZ-N1 ログイン | NFCタッチ待機、ログイン結果表示 |
| FZ-N1 メインメニュー | EQUIPMENT_VIEW保持者向け。団体貸出セッション(通常貸出)、個別スキャン、設定を表示し、一括操作はEQUIPMENT_BULK_OPERATION保持者だけに表示 |
| FZ-N1 個別スキャン | EQUIPMENT_VIEWで備品を照会し、EQUIPMENT_EDIT保持者だけが選択式の状態変更を実行 |
| FZ-N1 団体貸出セッション | 団体QR読取、割当リスト事前取得、備品QRの逐次読取、割当照合、警告、セッション終了 |
| FZ-N1 一括操作(例外処理) | EQUIPMENT_BULK_OPERATION保持者だけが使う対象備品のプレビュー、物理ボタンによる確定 |
| FZ-N1 設定 | ログアウト、未送信データ、競合結果の確認 |
| Sho-Room ダッシュボード | EQUIPMENT_VIEWで在庫、場所別統計、要対応、最近の操作を表示 |
| Sho-Room 備品一覧 | EQUIPMENT_VIEWで条件検索、ページネーション、QRスキャンを利用 |
| Sho-Room 備品割当 | EQUIPMENT_EDITで申請数取込、除外条件、割当案、手動修正、確定を実行 |
| Sho-Room 履歴検索 | EQUIPMENT_VIEWで変更履歴とスキャン履歴を検索・閲覧 |
| Sho-Room システム管理 | EQUIPMENT_RESETで年度更新、SYSTEM_MANAGEで通知失敗、貸出セッション・指定外スキャンを確認 |
| 一覧画面は検索条件またはページ単位で表示し、ブラウザへ全備品を読み込ませません。色だけで状態を伝えず、音や文言も組み合わせて成功・警告・エラーを区別します。 |
8. データの保存とバックアップ
-
備品、割当、スキャン、変更履歴などのデータはCloudflare D1で管理する
-
共通認証基盤(
login-api、discord-auth-worker、line-auth-worker、unified-auth-worker等)がOAuthフロー、Cookie設定・削除、JWT発行・検証・BAN管理を担う。Sho-Room Workerは既存BFFとしてCookieからJWTを取り出し、Authorizationヘッダーへ変換して備品管理APIへ中継する。本システムでは認証・セッション基盤の新規設計やEquipment DBでの管理を行わない。FZ-N1の貸出セッションはLendingSessionとして貸出記録とともに管理し、参加団体向けのCookieセッションは使用しない
現行のSho-Room Workerでは、login-apiが設定したsoshosai_staff_jwt CookieからJWTを取り出し、既存BFFがAuthorization: Bearer ...ヘッダーへ変換して備品管理APIへ中継します。JWTの発行はdiscord-auth-worker等、JWTの検証・BAN管理はunified-auth-workerが担います。Cookieやセッションの仕様変更・安全対策は共通認証基盤の管轄であり、本システムでは定義しません。
-
Cloudflareの機能を利用してバックアップとリストアを行う
-
監査ログを含むデータの保持期間は無期限とする
-
学祭準備期間は、大学環境のcronサーバーが専用APIから全備品データを取得できる
-
貸出セッション開始時に取得した割当リスト、オフライン照合結果、未送信操作はFZ-N1に保存し、オンライン復帰後に自動同期する
GoogleスプレッドシートへのExport / Importは対象外です。備品データの正しい保存先は本システムのデータベースです。
9. トラブル時の対応
ログインできない
-
学生証を正しくタッチしているか確認する
-
学祭委員名簿に登録されているか名簿管理担当者へ確認する
-
それでも解決しない場合は管理チームへ連絡する
団体QRコードで貸出セッションを開始できない
-
団体QRコードが対象団体のものか、学祭委員と確認する
-
FZ-N1が学祭委員のログイン状態であるか確認する
-
解決しない場合は管理チームへ連絡する。団体QRコードの発行・配布は別botの担当であり、本システムでは再発行しない
QRコードが読み取れない
-
QRコードやカメラのレンズが汚れていないか確認する
-
光の反射を避けて、もう一度読み取る
-
解決しない場合は、Sho-Roomで備品を検索して
EQUIPMENT_VIEWを持つ学祭委員へ確認を依頼する
FZ-N1では自由入力を原則使わないため、手入力で状態を変更して処理を進めないでください。
ネットワークエラー
-
FZ-N1は、オンラインで開始した貸出セッションの備品スキャンを、事前取得した割当リストを使ってオフラインでも続けられる
-
操作内容は端末へ一意な操作ID、操作日時、端末識別子、実際のスキャン担当区分付きで保存される
-
ネットワーク復旧後に自動同期され、二重反映や競合の結果を確認できる
Discord通知が届かない
ログインは完了している場合があります。通知の失敗はSYSTEM_MANAGE保持者が確認できるため、FZ-N1のログイン結果を確認してから管理チームへ連絡してください。
10. 用語集
| 用語 | 意味 |
|---|---|
| 蒼翔祭 | 会津大学学園祭の正式名称 |
| 学祭委員 | 蒼翔祭実行委員。本システムの管理・現場利用者 |
| 参加団体 | 蒼翔祭へ出展し、備品を使用する団体 |
| 企画 | 参加団体が申請する出展単位。同じ団体が複数持つ場合がある |
| 備品種別 | 長机、椅子、コーン、バケツ、消火器などの分類 |
| 元の場所 | 備品を通常保管している教室や倉庫 |
| 持出先 | 蒼翔祭期間中に備品を使用する場所 |
| 割当 | 備品を企画と持出先へ対応付けること |
| 団体QRコード | Organizations.idのUUIDを平文で格納した団体識別QRコード。署名・暗号化・有効期限はなく、真正性検証は行わない。別botが出展者サーバーの各団体チャンネルへ配布し、本システムは発行・配布を行わない |
| 貸出時スキャン | 学祭委員立会いのもと、団体の担当者がFZ-N1で持ち出す備品のQRを一つずつ読み取る操作 |
| 二重確認スキャン | 各団体の搬出完了後、学祭委員(備品PJ)が巡回するテント等で、学祭委員またはその場に居合わせた参加団体の担当者がFZ-N1で対象備品を一つずつ読み取り、配置完了を確認・確定する操作 |
| 貸出セッション | FZ-N1上で団体QRコードの読み取りから、端末返却または学祭委員による明示的終了まで管理する団体単位の貸出記録 |
| 出展許可証 | 参加団体に発行されるQRコード付き許可証 |
| FZ-N1 | 現場で使うPanasonic製Android端末(Android 6.0.1) |
| Sho-Room | 学祭委員が使う統合管理Webツール |
| BFF | Sho-Room Workerが、共通認証基盤(login-api等)が設定したCookieからJWTを取り出し、Authorizationヘッダーへ変換して備品管理APIへ中継する仕組み。認証・セッションの詳細は共通認証基盤の管轄 |
| 監査ログ | 誰が、いつ、どの端末・画面から何を変更したかを追跡する記録 |
| 端末識別子 | FZ-N1など、操作に使用した端末を監査記録へ紐付ける識別情報 |
| スキャン担当区分 | 実際に端末を操作した人の区分。学祭委員はSTAFF、参加団体の担当者はORG_REPRESENTATIVEとして記録する |
| ラベル印刷エージェント | 印刷用PC上で動き、Sho-RoomからTM-L90への印刷を中継するスクリプト |
11. よくある質問
Q1. 備品を紛失したらどうすればいいですか?
A. Sho-Roomで該当する備品を検索し、状態を「紛失」に変更してください。必要な説明は備考へ記入し、変更履歴を残してください。
Q2. 同じ備品を複数の企画が使いたい場合は?
A. 同時に複数の企画へ貸し出さず、割当と返却状況を確認してから次の企画へ割り当ててください。
Q3. 指定外の備品を貸出時にスキャンしたらどうなりますか?
A. FZ-N1に警告が表示され、持ち出し完了にはなりません。調査できるよう、指定外のスキャン自体は貸出セッションとともに履歴へ記録されます。
Q4. ラベルが剥がれたり、貼付に不備があったりしたら?
A. Sho-Roomで対象備品を確認し、再発行理由を記録してラベルを再印刷してください。教室や場所単位で貼付後確認も行います。
Q5. 学祭終了後のデータはどうなりますか?
A. EQUIPMENT_RESETを持つ学祭委員が年度更新を実行すると、現在の状態、所在、割当が次年度向けに初期化され、進行中の貸出セッションは終了扱いになります。過去の貸出セッション、スキャン履歴、監査ログは保持されます。
12. サポート連絡先
システムに関する質問やトラブルは、管理チームにDiscordでお問い合わせください。
エラーログ、Discord通知の失敗、ラベル印刷の失敗、同期競合は管理チームが確認できるよう記録されます。